Splits WebGLContext into ClientWebGLContext and HostWebGLContext. The Client enables the JS-control of a WebGL context in a content procecss while the Host executes the WebGL graphics operations (via a WebGLContext that maintains much of the existing code) in the compositor process. At this point, the cross-process behavior is disabled -- this series of patches is an incremental step toward that final goal.
Differential Revision: https://phabricator.services.mozilla.com/D54018
--HG--
extra : moz-landing-system : lando
Allow two independent pools of worker threads, one
for each SceneBuilder thread. Thus long running
low-priority SVG work should no longer block UI
hit-testing from running.
Previous code tried to force a yield by using
priority and affinity, to keep the constraint of
"8 worker threads at most". Net perf is a loss,
the code is not cross platform, and we already
have many processes/threads/pools co-existing. So
this patch removes the constraint.
Talos shows a mix of mostly gains and some losses,
link in this comment:
https://bugzilla.mozilla.org/show_bug.cgi?id=1595708#c13
This trade-off seems worth a try in exchange for
better UI latency.
(the big Win32 gain is repairing an earlier loss)
Bug 1602907 - obsoleted
Bug 1604570 - this patch
Bug 1602905 - this patch
Differential Revision: https://phabricator.services.mozilla.com/D58677
--HG--
extra : moz-landing-system : lando
* Makes it possible to selectively enable TRR for pbmode/container/window/etc
Differential Revision: https://phabricator.services.mozilla.com/D48363
--HG--
extra : moz-landing-system : lando
Since we're the only one sending data, and we're doing so infrequently, let's
get the pref value before each ping send instead of building a pref observer
right this second.
Differential Revision: https://phabricator.services.mozilla.com/D57107
--HG--
extra : moz-landing-system : lando
Converts `browser.newtabpage.enabled` into a static pref. Removes their varcache pref declaration. `signon.management.page.enabled` in the same file will be removed instead (Bug 1606888) as it is no longer needed.
Differential Revision: https://phabricator.services.mozilla.com/D58559
--HG--
extra : moz-landing-system : lando
This patch suppresses VR device access permission prompts for users that do not have any VR runtimes installed.
We could not depend on the existing VR device enumeration functions to suppress the permission prompts, as the
act of enumerating VR devices will result in some hardware physically powering on and software starting up (and staying running)
in the background.
This patch includes logic to spawn the VR process with an additional flag indicating that it should attempt only to detect the
runtimes, without proceeding to enumerate and activate hardware and software.
VRManager now includes an enum to more clearly organize it's state machine model, which now must ensure that the runtime detection
happens on-demand when the VR session support capabilities are first determined.
There is a new pref to disable the suppression of permission prompts for use within permission UI tests on machines without VR runtimes.
Renamed some variables and added comments to make code in nsGlobalWindowInner and Navigator clearer and better represent the updated logic -- to allow the separate detection of VR runtimes and VR session activation. Both the runtime detection and VR
session activity uses VREventObserver to send events to nsGlobalWindowInner.
Differential Revision: https://phabricator.services.mozilla.com/D57568
--HG--
extra : moz-landing-system : lando
Over in bug 1604761 I realized that GTK has a high-contrast accessibility
setting, that GTK does not honor the same way as windows does.
There's no good reason for that IMO, and high contrast mode on windows is
getting some love.
This hooks the relevant parts of the GTK widget code so that we also avoid
websites overriding high contrast colors (via PreferenceStyleSheet and co).
Differential Revision: https://phabricator.services.mozilla.com/D58278
--HG--
extra : moz-landing-system : lando
This patch adds the following functionality to the CSSStyleSheet WebIDL API
under the feature flag layout.css.constructable-stylesheets.enabled:
- constructor()
- replace()
- replaceSync()
constructor(), replace() and replaceSync() are currently stubs that lack full
functionality.
Differential Revision: https://phabricator.services.mozilla.com/D58326
--HG--
extra : source : 6e675d6399cee28f204b3501de3475ea3febd12c
This patch adds the following functionality to the CSSStyleSheet WebIDL API
under the feature flag layout.css.constructable-stylesheets.enabled:
- constructor()
- replace()
- replaceSync()
constructor(), replace() and replaceSync() are currently stubs that lack full
functionality.
Differential Revision: https://phabricator.services.mozilla.com/D58326
--HG--
extra : moz-landing-system : lando
This changeset is a simple find and replace of `MOZ_FALLTHROUGH` and `[[fallthrough]]`.
Unfortunately, the MOZ_FALLTHROUGH_ASSERT macro (to assert on case fallthrough in debug builds) is still necessary after switching from [[clang::fallthrough]] to [[fallthrough]] because:
* MOZ_ASSERT(false) followed by [[fallthrough]] triggers a -Wunreachable-code warning in DEBUG builds
* but MOZ_ASSERT(false) without [[fallthrough]] triggers a -Wimplicit-fallthrough warning in NDEBUG builds.
Differential Revision: https://phabricator.services.mozilla.com/D56440
--HG--
extra : moz-landing-system : lando
Previously, GetCancelled() would have return true should the channel's status was an error.
Doing Cancel(NS_OK) for example, would have made a follow-up call to GetCancelled() return false. However, we can assert that such a call would have been a bug.
Following this change GetCancelled() will only return true if Cancel() was explicitly called.
Differential Revision: https://phabricator.services.mozilla.com/D55401
--HG--
extra : moz-landing-system : lando
There is no functional change with this commit. The default implementation for GetCanceled() is still to check if the status code is a failure.
However, it can be argued that as you had to call Cancel() on the nsIChannel, having to check the nsIHttpChannelInternal interface to determine if you had been canceled in the past was rather a non obvious path.
It makes more sense to check the nsIChannel interface to determine if it's been canceled already and this allows for finer granularity if needed in the future.
Differential Revision: https://phabricator.services.mozilla.com/D55268
--HG--
extra : moz-landing-system : lando
There are multiple SurfacePools: Main thread painting and the non-WebRender compositors create a new pool per window, and WebRender creates one shared pool across all windows. The non-WebRender users set the pool size limit to zero, i.e. no recycling across paints. This preserves the pre-existing behavior.
WebRender's pool size is configurable with the gfx.webrender.compositor.surface-pool-size pref.
Every window holds on to a SurfacePoolHandle. A SurfacePoolHandle has an owning reference to the pool, via a surface pool wrapper. Once all handles are gone, the surface pool goes away, too.
The SurfacePool holds on to IOSurfaces and MozFramebuffers. Both are created on demand, independently, but are associated with each other.
A given NativeLayer uses only one surface pool handle during its lifetime. The native layer no longer influences which GLContext its framebuffers are created for; the GL context is now managed by the surface pool handle.
As a result, a NativeLayer can no longer change which GLContext its framebuffers are created by.
So in the future, if we ever need to migrate a window frome one GLContext to another, we will need to recreate the NativeLayers inside it. I think that's ok.
Differential Revision: https://phabricator.services.mozilla.com/D54859
--HG--
extra : moz-landing-system : lando
Added NextDNS as optional TRR provider, along with tests to confirm that selecting it from the DoH drop down behaves as expected
Differential Revision: https://phabricator.services.mozilla.com/D56221
--HG--
extra : moz-landing-system : lando
We have implemented new audio focus management in bug1565689 which would allow us to have one tab playing audio at the same time no matter we're using e10s or Fission.
Therefore, we can remove the old pref dom.audiochannel.audioCompeting and dom.audiochannel.audioCompeting.allAgents, which are only work on non-e10s mode.
In addition, the audio competing is only used by default on Fennec, but Fennec is now no longer following the latest m-c, it's using ESR68. So even if our new audio focus management is not on by default on Android, it won't affect current behavior on Fennec. We can 100% sure that we won't need those code for old audio competing anymore.
Differential Revision: https://phabricator.services.mozilla.com/D44749
--HG--
extra : moz-landing-system : lando
Previously, GetCancelled() would have return true should the channel's status was an error.
Doing Cancel(NS_OK) for example, would have made a follow-up call to GetCancelled() return false. However, we can assert that such a call would have been a bug.
Following this change GetCancelled() will only return true if Cancel() was explicitly called.
Differential Revision: https://phabricator.services.mozilla.com/D55401
--HG--
extra : moz-landing-system : lando
There is no functional change with this commit. The default implementation for GetCanceled() is still to check if the status code is a failure.
However, it can be argued that as you had to call Cancel() on the nsIChannel, having to check the nsIHttpChannelInternal interface to determine if you had been canceled in the past was rather a non obvious path.
It makes more sense to check the nsIChannel interface to determine if it's been canceled already and this allows for finer granularity if needed in the future.
Differential Revision: https://phabricator.services.mozilla.com/D55268
--HG--
extra : moz-landing-system : lando
The four prefs moved in this revision were relocated to single a location with other EME related prefs. Grouping like prefs improves the code structure.
Differential Revision: https://phabricator.services.mozilla.com/D55388
--HG--
extra : moz-landing-system : lando
We don't want to run stream conversion in the parent (since a lot of them require access to the document), so this instead adds a way to find out what their output type will be.
Differential Revision: https://phabricator.services.mozilla.com/D56134
--HG--
extra : moz-landing-system : lando
We don't want to run stream conversion in the parent (since a lot of them require access to the document), so this instead adds a way to find out what their output type will be.
Differential Revision: https://phabricator.services.mozilla.com/D56134
--HG--
extra : moz-landing-system : lando
This change modifies all tests that use key3/cert8 to use the new files. It
removes test_sdr_upgraded_with_password, as without the upgrade part that is now
the same test as test_sdr_preexisting_with_password.
Differential Revision: https://phabricator.services.mozilla.com/D55708
--HG--
rename : security/manager/ssl/tests/unit/test_sdr_preexisting/key4.db => security/manager/ssl/tests/unit/test_broken_fips/key4.db
extra : moz-landing-system : lando
This change modifies all tests that use key3/cert8 to use the new files. It
removes test_sdr_upgraded_with_password, as without the upgrade part that is now
the same test as test_sdr_preexisting_with_password.
Differential Revision: https://phabricator.services.mozilla.com/D55708
--HG--
rename : security/manager/ssl/tests/unit/test_sdr_preexisting/key4.db => security/manager/ssl/tests/unit/test_broken_fips/key4.db
extra : moz-landing-system : lando
This switches the OS compositor integration for WR on Windows
off by default.
There are a couple of issues (primarily performance related) that
we need to fix up before making it the default for a release.
Differential Revision: https://phabricator.services.mozilla.com/D57267
--HG--
extra : moz-landing-system : lando
Bug 1598923 - P1 - Remove use of description API and use format in SDP rust to C bindings;r?drno
Bug 1598923 - P2 - Add pref to select strictness of SDP parsing success;r?drno
Bug 1598923 - P3 - Update to WEBRTC-SDP 0.3.2;r?drno
Bug 1598923 - P4 - update to WEBRTC-SDP 0.3.3;r?mjf
Bug 1598923 - P5 - Adapt channel handling to WEBRTC-SDP changes;r?mjf
Differential Revision: https://phabricator.services.mozilla.com/D55211
--HG--
extra : moz-landing-system : lando
This change removes the legacy libnssdbm database that we migrated away from since Firefox 60.
This change modifies all tests that use key3/cert8 to use the new files. It
removes test_sdr_upgraded_with_password, as without the upgrade part that is now
the same test as test_sdr_preexisting_with_password. It otherwise removes support for libnssdbm everywhere in Gecko.
Differential Revision: https://phabricator.services.mozilla.com/D55708
--HG--
rename : security/manager/ssl/tests/unit/test_sdr_preexisting/key4.db => security/manager/ssl/tests/unit/test_broken_fips/key4.db
extra : moz-landing-system : lando
We had to do it because firefox android doesn't use that file. There is a
mobile.js file for that purpose. We had to move all recording preferences to
all.js and add the android only preference to mobile.js to be able to handle
that better.
Differential Revision: https://phabricator.services.mozilla.com/D56719
--HG--
extra : moz-landing-system : lando
This turned out to not be the root cause for that broken site, but I wrote the
code so... I enabled it on Nightly only to see if there's fallout, I don't think
we need to ship this in the near term, your call.
Depends on D56555
Differential Revision: https://phabricator.services.mozilla.com/D56556
--HG--
extra : moz-landing-system : lando
This patch adds DefaultURI which wraps MozURL which in turn forwards calls
to rust-url.
For the moment the added network.url.useDefaultURI is set to false by default.
The plan is to make this the default implementation for unknown URI types.
Differential Revision: https://phabricator.services.mozilla.com/D54748
--HG--
extra : moz-landing-system : lando
This turned out to not be the root cause for that broken site, but I wrote the
code so... I enabled it on Nightly only to see if there's fallout, I don't think
we need to ship this in the near term, your call.
Differential Revision: https://phabricator.services.mozilla.com/D56556
--HG--
extra : moz-landing-system : lando
We've had it disabled on Nightly with no fallout for a while, and having it
enabled breaks websites with touch screens as described in this bug and related
ones.
Given the above, let's disable it in all channels, and we'll remove the code in
the next cycle.
Differential Revision: https://phabricator.services.mozilla.com/D56264
--HG--
extra : moz-landing-system : lando
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.
find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
if [ -n "$interfaces" ]; then
if [[ "$interfaces" == *$'\n'* ]]; then
regexp="\("
for i in $interfaces; do regexp="$regexp$i\|"; done
regexp="${regexp%%\\\|}\)"
else
regexp="$interfaces"
fi
interface=$(basename "$path")
rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
if [ $hits -eq 0 ]; then
echo "Removing ${interface} from ${path2}"
grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
mv -f "$path2".tmp "$path2"
fi
done
fi
done
Differential Revision: https://phabricator.services.mozilla.com/D55444
--HG--
extra : moz-landing-system : lando
Fenix wants to ship Web Manifest support, while other Firefox products (e.g., Desktop) don't support it.
With the pref enabled, developers can check, via `link.relList.supports()`, if manifest processing is supported by a particular product.
Differential Revision: https://phabricator.services.mozilla.com/D55064
--HG--
extra : moz-landing-system : lando
This patch implements CRLite lookups for TLS server certificate revocation
information in telemetry-only mode. It adds a new preference
"security.pki.crlite_mode" to control the behavior of this feature. Setting
this preference to 0 disables it completely. Setting it to 1 enables telemetry
collection only (the default). Setting it to 2 enables enforcing revocation
information found via CRLite.
Differential Revision: https://phabricator.services.mozilla.com/D54040
--HG--
rename : third_party/rust/bit_reverse/LICENSE-APACHE => third_party/rust/rental/LICENSE-APACHE
rename : third_party/rust/bit-vec/LICENSE-MIT => third_party/rust/rental/LICENSE-MIT
extra : moz-landing-system : lando
Now that the security review in bug 1542229 and the follow-up work
that came out of it is complete, we should go ahead and flip the
remote.enabled preference.
This patch causes the remote agent to be available to users on the
Firefox Nightly release channel. This meansusing --remote-debugger
will no longer cause a fatal error
Differential Revision: https://phabricator.services.mozilla.com/D55137
--HG--
extra : moz-landing-system : lando
The problem is that the suffix is not always computed when Firefox starts up.
This patch adds a pref `network.notify.initial_call` that controls whether
CheckAdaptersAddresses gets called imediately after.
This call is necessary in order to compute the suffix list, VPN status, etc.
This patch also ensures that OnDnsSuffixListUpdated gets called by
NetlinkService::ComputeDNSSuffixList on Android. This notification is
necessary for the TRRService to pick up the suffix list.
Differential Revision: https://phabricator.services.mozilla.com/D55303
--HG--
extra : moz-landing-system : lando
Updating the PSL while Firefox is running could cause principals to have
a different base domain before/after the update.
See bug 1582647 comment 30
Differential Revision: https://phabricator.services.mozilla.com/D55014
--HG--
extra : moz-landing-system : lando
People do like to use zoom along with transforms for legit reasons, which means
that we get this wrong.
This is unfortunate, as the whole point of the hack was fixing sites that only
used zoom without regressing sites that would do:
zoom: 0.5;
-moz-transform: scale(0.5);
transform-origin: 0 0;
So we're a bit stuck here. The only way to deal with the known regressions is
parsing `zoom: 1` as invalid, which is insane, and it would probably cause other
compat issues... For now disable the pref.
Differential Revision: https://phabricator.services.mozilla.com/D54685
--HG--
extra : moz-landing-system : lando
I'll figure out how to make it fast, but meanwhile this should fix the
regression.
Differential Revision: https://phabricator.services.mozilla.com/D54922
--HG--
extra : moz-landing-system : lando
Lets Wayland sessions run vsync off wayland surface frame callbacks by creating
an interface for widgets to return a local VsyncSource, if applicable.
This interface is currently used for the compositor, and for refresh drivers
in the parent process. It is not yet used for vsync in content processes.
Differential Revision: https://phabricator.services.mozilla.com/D28430
--HG--
extra : moz-landing-system : lando
People do like to use zoom along with transforms for legit reasons, which means
that we get this wrong.
This is unfortunate, as the whole point of the hack was fixing sites that only
used zoom without regressing sites that would do:
zoom: 0.5;
-moz-transform: scale(0.5);
transform-origin: 0 0;
So we're a bit stuck here. The only way to deal with the known regressions is
parsing `zoom: 1` as invalid, which is insane, and it would probably cause other
compat issues... For now disable the pref.
Differential Revision: https://phabricator.services.mozilla.com/D54685
--HG--
extra : moz-landing-system : lando
`media.geckoview.autoplay.request` is used to control whether we send the play request.
`media.geckoview.autoplay.request.testing` is used to control the request result in testing.
Differential Revision: https://phabricator.services.mozilla.com/D52605
--HG--
extra : moz-landing-system : lando
This patch mainly enables the pref for SharedArrayBuffer on Nightly.
This change causes some tests to fail. This patch handles the failures for
mochitests and web-platform-tests. The jsreftest will be handled in the next
patch.
For mochitests:
- dom/serviceworkers/test/test_serviceworker_interfaces.js
- dom/tests/mochitest/general/test_interfaces.js
- dom/workers/test/test_worker_interfaces.js
These tests check which interfaces are exposed on the web. Since we are now
exposing SharedArrayBuffer in some configurations, the tests need to be adjusted
accordingly.
For the rest of tests in this patch:
- testing/web-platform/meta/encoding/encodeInto.any.js.ini
This test partially fails because the integration of encoding and SAB is not
completely supported yet.
- testing/web-platform/meta/encoding/streams/decode-utf8.any.js.ini
This test partially fails because the integration of decoding and SAB is not
completely supported yet.
- testing/web-platform/meta/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-failure.https.any.js.ini
- testing/web-platform/meta/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/requires-success.any.js.ini
- testing/web-platform/meta/wasm/jsapi/memory/constructor.any.js.ini
- testing/web-platform/meta/wasm/jsapi/memory/grow.any.js.ini
The subtests related to SAB in these tests now pass when SAB is enabled, so we
need to annotate them as failing only in configurations where SAB is disabled.
- testing/web-platform/meta/webaudio/the-audio-api/the-audiobuffer-interface/audiobuffer-copy-channel.html.ini
This test partially fails because there are some issues between SAB and Audio.
Differential Revision: https://phabricator.services.mozilla.com/D48838
--HG--
extra : moz-landing-system : lando
This moves the telemetry and preferences out into their own files and restores the parse result telemetery.
Differential Revision: https://phabricator.services.mozilla.com/D52749
--HG--
extra : moz-landing-system : lando
This way we get the correct values for start-up prefs in the parent process.
Differential Revision: https://phabricator.services.mozilla.com/D51061
--HG--
extra : moz-landing-system : lando
This moves the telemetry and preferences out into their own files and restores the parse result telemetery.
Differential Revision: https://phabricator.services.mozilla.com/D52749
--HG--
extra : moz-landing-system : lando
`media.geckoview.autoplay.request` is used to control whether we send the play request.
`media.geckoview.autoplay.request.testing` is used to control the request result in testing.
Differential Revision: https://phabricator.services.mozilla.com/D52605
--HG--
extra : moz-landing-system : lando
This moves the telemetry and preferences out into their own files and restores the parse result telemetery.
Differential Revision: https://phabricator.services.mozilla.com/D52749
--HG--
extra : moz-landing-system : lando
- Adds the `network.trr.enable_when_vpn_detected` defaulting to false. This means detecting a PPP adapter will make IsExcludedFromTRR always return true - it does not affect the `network.trr.mode` pref.
- Adds a test that when nsINetworkLinkService.vpnDetected is true we skip all TRR requests
- Makes it so we update the excludedDomains list and VPN detected status for TRR on any network:link-status-changed observer notification that is received.
Differential Revision: https://phabricator.services.mozilla.com/D53356
--HG--
extra : moz-landing-system : lando
Use this pref to disable NPDrawingModelAsyncWindowsDXGISurface mode, which will force compatible plugins (Flash) to use NPDrawingModelAsyncBitmapSurface.
Differential Revision: https://phabricator.services.mozilla.com/D46084
--HG--
extra : moz-landing-system : lando
Explicit initialization of these static pointers appears to resolve these intermittent failures.
Differential Revision: https://phabricator.services.mozilla.com/D53842
--HG--
extra : moz-landing-system : lando
- Adds the `network.trr.enable_when_vpn_detected` defaulting to false. This means detecting a PPP adapter will make IsExcludedFromTRR always return true - it does not affect the `network.trr.mode` pref.
- Adds a test that when nsINetworkLinkService.vpnDetected is true we skip all TRR requests
- Makes it so we update the excludedDomains list and VPN detected status for TRR on any network:link-status-changed observer notification that is received.
Differential Revision: https://phabricator.services.mozilla.com/D53356
--HG--
extra : moz-landing-system : lando