Added an option to use ConicGradient API as a preference and removed the
corresponding expected FAILing test, over @ntim's implementation.
Differential Revision: https://phabricator.services.mozilla.com/D100554
The goal of the WebGL Working Group was for failIfMajorPerformanceCaveat
to allow websites to make better choices about which content to serve to
users, ideally via offering a choice to users.
I no longer think that this is useful here, or rather it's only ever
useful in the very narrow case: When a website does indeed have a
fallback ready, and the fallback does actually have better perf.
Today this is only true on some Windows systems that have cpu-emulated
webgl, but gpu-accelerated canvas2d, but this is not most systems.
Simultaneously, we've seen a disappointingly large set of websites break
for users that hit the failIfMajorPerformanceCaveat path.
Since the usefulness of failIfMajorPerformanceCaveat is very limited,
and many sites don't cooperate with us (as the user's User Agent), I
think it's best to disable failIfMajorPerformanceCaveat for the time
being.
Differential Revision: https://phabricator.services.mozilla.com/D100534
And re-enable the RemoteLookAndFeel by default with Gtk.
When the RemoteLookAndFeel is enabled and the non-native theme is not
enabled, we still need to configure the Gtk theme in content processes,
since we're still using Gtk to paint widget backgrounds etc. Without
this, we can end up using LookAndFeel colors from a light theme but
painting widget backgrounds from a dark theme.
Other platforms don't configure themes for content processes
differently, so on those platforms LookAndFeelTheme is an empty struct
and we skip the ConfigureTheme call.
Differential Revision: https://phabricator.services.mozilla.com/D100223
This adds a new LookAndFeel implementation, RemoteLookAndFeel, which can
be used in content processes and is supplied with all of its values by the
parent process.
Co-authored-by: Cameron McCormack <cam@mcc.id.au>
Differential Revision: https://phabricator.services.mozilla.com/D97977
There are two issues in our current setup
1) Input events which are occurring in the same tab are going to be lost
because sync XHR. We have event handling suppression for synx XHR, so input
events are going to be discarded.
2) Input events that are happening in another tab (same process as the
synx XHR tab) are not going to be delayed. This is not correct since
sync XHR should block the Javascript execution.
This patches fixes the above cases for when both TaskController and e10s are
enabled by suspending the InputTaskManager during sync XHR, which
delays the input event handling and keeps the events around.
Differential Revision: https://phabricator.services.mozilla.com/D90780
Introduce a mechanism for experimenting with unary and binary SIMD
instructions (x64 + ion only, nightly only, and behind flags).
Basically this is useful for performance experiments.
A specific pattern of the first 15 bytes of the mask of the shuffle
opcode is recognized as a trigger; the last byte has the opcode 0..31.
For unary operations the two input values should be the same; the lhs
will always be chosen. The pattern is recognized during lowering and
translated to specific machine instructions.
This mechanism is preferable to custom opcodes because it allows
existing tools (emscripten/llvm/binaryen/linkers) to be used without
change.
To trigger this, use --wasm-compiler=ion --wasm-simd-wormhole in the
shell or set javascript.options.wasm_baselinejit=false and
javascript.options.wasm_simd_wormhole=true in about:config.
This patch is mostly infrastructure but also introduces three
experimental opcodes: one to test for the presence and operation of
the wormhole, one to invoke the Intel PMADDUBSW instruction, and one
to invoke the Intel PMADDWD instruction.
Differential Revision: https://phabricator.services.mozilla.com/D94101
Introduce a mechanism for experimenting with unary and binary SIMD
instructions (x64 + ion only, nightly only, and behind flags).
Basically this is useful for performance experiments.
A specific pattern of the first 15 bytes of the mask of the shuffle
opcode is recognized as a trigger; the last byte has the opcode 0..31.
For unary operations the two input values should be the same; the lhs
will always be chosen. The pattern is recognized during lowering and
translated to specific machine instructions.
This mechanism is preferable to custom opcodes because it allows
existing tools (emscripten/llvm/binaryen/linkers) to be used without
change.
To trigger this, use --wasm-compiler=ion --wasm-simd-wormhole in the
shell or set javascript.options.wasm_baselinejit=false and
javascript.options.wasm_simd_wormhole=true in about:config.
This patch is mostly infrastructure but also introduces three
experimental opcodes: one to test for the presence and operation of
the wormhole, one to invoke the Intel PMADDUBSW instruction, and one
to invoke the Intel PMADDWD instruction.
Differential Revision: https://phabricator.services.mozilla.com/D94101
We unshipped these a while ago and left the pref just for testing
purposes. But now all the reftests using it were conveniently migrated
to chrome:// tests, so we no longer need it.
Differential Revision: https://phabricator.services.mozilla.com/D56950
The main-thread requirements for DXVA appear to have been needed when we initialized a crash guard. We now only run DXVA in the GPU and RDD processes, which don't support crash guards. This removes the main thread dispatch and the crashguard code, and enforces that we're in the GPU/RDD process to init DXVA.
This also removes the DLL blocklist code. This was disabled via pref when in the GPU process, which should be the majority of the time. In rare cases we would have been running DXVA in the RDD process (on older win7 when the GPU process isn't available). In these cases we can just do the same as the GPU process, allowing crashes and recovering from them (and disabling DXVA).
Differential Revision: https://phabricator.services.mozilla.com/D98036
The new section is displayed when the browser.enableAboutThirdParty pref is true.
This is a prototype of the project where we plan to disclose third-party modules
info to the users. Once we find out what is the best place and the best way to
show these data, we remove this section.
Differential Revision: https://phabricator.services.mozilla.com/D93832
The new section is displayed when the browser.enableAboutThirdParty pref is true.
This is a prototype of the project where we plan to disclose third-party modules
info to the users. Once we find out what is the best place and the best way to
show these data, we remove this section.
Differential Revision: https://phabricator.services.mozilla.com/D93832
- Ask for alpha visual for toplevel windows on composited screens only.
- Rename TitlebarCanUseShapeMask() to TitlebarUseShapeMask() to control titlebar shape mask usage.
- Allow to use shape mask under widget.titlebar-x11-use-shape-mask preference, it's off by default.
- Simplify HideTitlebarByDefault(), remove compositing/shape mask check as we use RGBA visual only now.
Differential Revision: https://phabricator.services.mozilla.com/D98598
The main-thread requirements for DXVA appear to have been needed when we initialized a crash guard. We now only run DXVA in the GPU and RDD processes, which don't support crash guards. This removes the main thread dispatch and the crashguard code, and enforces that we're in the GPU/RDD process to init DXVA.
This also removes the DLL blocklist code. This was disabled via pref when in the GPU process, which should be the majority of the time. In rare cases we would have been running DXVA in the RDD process (on older win7 when the GPU process isn't available). In these cases we can just do the same as the GPU process, allowing crashes and recovering from them (and disabling DXVA).
Differential Revision: https://phabricator.services.mozilla.com/D98036
There are two issues in our current setup
1) Input events which are occurring in the same tab are going to be lost
because sync XHR. We have event handling suppression for synx XHR, so input
events are going to be discarded.
2) Input events that are happening in another tab (same process as the
synx XHR tab) are not going to be delayed. This is not correct since
sync XHR should block the Javascript execution.
This patches fixes the above cases for when both TaskController and e10s are
enabled by suspending the InputTaskManager during sync XHR, which
delays the input event handling and keeps the events around.
Differential Revision: https://phabricator.services.mozilla.com/D90780
While all toolkit and js-based projects make use of mfbt, some others,
like tools/crashreporter and tools/update-packaging, don't.
So instead of including mfbt from the top-level directory, include it
from the relevant project top-level mozbuilds.
This allows to remove the dependency on mfbt files in the hash for the
minidump-stackwalk and mar-tools toolchains.
Differential Revision: https://phabricator.services.mozilla.com/D98378
This adds the pages per sheet option behind the print.pages_per_sheet.enabled
pref. Sizes of 2 and 6 aren't supported yet, so this is off by default.
Differential Revision: https://phabricator.services.mozilla.com/D95335
As the use case we know it was needed for should be covered by the previous
patch as well.
This is also process-global, which is a bit odd, given whether a popup-opening
operation succeeds ends up depending on other tabs' activity.
Depends on D98020
Differential Revision: https://phabricator.services.mozilla.com/D98021
We're unlikely to get around to fixing the bugs preventing this from riding the trains in the near future, so it'll be better to have Nightly be consistent with release (since it can hide bugs otherwise).
Depends on D98092
Differential Revision: https://phabricator.services.mozilla.com/D98093
We want to remove this in the future, as it's a large amount of code and is being superceeded by WebRender.
Depends on D98091
Differential Revision: https://phabricator.services.mozilla.com/D98092
IPA (SIL) keyboard for Keyman Desktop tries to delete only a combined
diacritical mark when user toggles it. However, `TSFTextStore` uses
`eSetSelection` event without explicitly setting `mExpandToClusterBoundary`.
Its default value is `true` and it causes deleting a previous base character of
the deleting diacritical mark too.
I think that it should be set to `false` when the selection range is specified
by IME framework and IME itself. However, some TIPs may have already done
some hack if focused window is ours. For avoiding the regression risk, we
should change our behavior only when
- The active TIP is Keyman Desktop (It has common CLSID for any keyboard layouts)
- In the Nightly channel or early beta builds for any other TIPs
Differential Revision: https://phabricator.services.mozilla.com/D97976
IPA (SIL) keyboard for Keyman Desktop tries to delete only a combined
diacritical mark when user toggles it. However, `TSFTextStore` uses
`eSetSelection` event without explicitly setting `mExpandToClusterBoundary`.
Its default value is `true` and it causes deleting a previous base character of
the deleting diacritical mark too.
I think that it should be set to `false` when the selection range is specified
by IME framework and IME itself. However, some TIPs may have already done
some hack if focused window is ours. For avoiding the regression risk, we
should change our behavior only when
- The active TIP is Keyman Desktop (It has common CLSID for any keyboard layouts)
- In the Nightly channel or early beta builds for any other TIPs
Differential Revision: https://phabricator.services.mozilla.com/D97976
From macOS Catalina, Hiragino Kaku Gothic ProN and etc aren't instaleld with
clean install. And default sans-serif font for Japanese is Hiragino Sans.
Differential Revision: https://phabricator.services.mozilla.com/D97900
The RDD process can no longer work without having access to win32k ; enabling this pref would lead to a crash on Nightly and failure to work elsewhere.
Differential Revision: https://phabricator.services.mozilla.com/D97753
Usually, IME sets selection and considers candidate list position at starting
new composition. However, Apple Japanese IME sometimes consider the candidate
list position at retrieving the character rects before setting selection.
Therefore, we need to store last commit string's character rects, but don't
need to store it in long time because Kakutei-Undo is supported by Japanese
IMEs and they work only immediately after committing a composition. E.g.,
after moving caret, it won't be available.
Depends on D97838
Differential Revision: https://phabricator.services.mozilla.com/D97839
In bug 1642727 we assumed this method was now essentially infallible because we do not delete mirror prefs. However, users can input some pref values that cause the value casts in `GetValue` to fail, which causes a crash. This commit reverts this behavior back to what it originally does (fail silently) to prevent crashing. We need to fix the underlying issue (bug 1672265) but we also need to ensure this doesn't crash, and any unexpected behavior caused by incorrect pref entry will return to its original behavior before this change, which relies on the individual components' handling of bad pref values rather than `UpdateMirror`.
Differential Revision: https://phabricator.services.mozilla.com/D94195
Although I add SEC CJK KR to font list for Samsung devices, it is better to
use `SamsungKorean_v2.0` rather than it according to user feedback.
Korean default font of Samsung device in `/etc/fonts.xml` is
`SamsungKorean_v2.0`.
Monospace font for Korean keeps SEC Mono CJK KR since no monospace font
settings in Samsung devices.
Differential Revision: https://phabricator.services.mozilla.com/D97252
It's better to have the control set on weither the RDD is enabled or not.
Additionally, RDD works on my Yoga ARM machine just fine.
Differential Revision: https://phabricator.services.mozilla.com/D96683
Now that launching the RDD process is fully asynchronous and no longer block the parent main thread, we can enable it on all platforms.
If we did fail to start it, we will not attempt again unless on Nightly.
Re-enable the RDD on Windows for ARM seeing that even if it did fail, it won't inconvenience the user anymore (other than the first video/audio element will take longer than usual to start)
Differential Revision: https://phabricator.services.mozilla.com/D96669
This avoids instancing twice the different storage type actors (legacy and resources). In order to keep current server tests working, a pref to force instancing legacy actors has been introduced.
Differential Revision: https://phabricator.services.mozilla.com/D97287
Due to various reasons (network change, temporary network congestion, etc) it
may happen that we exceed the limit of TRR failures thus going into
CONFIRM_FAILED state and setting the timer for automatic retry.
When confirmation is not "skip" we want to reduce the amount of time as much
as possible - so if it's a transient reason for the failures, we should retry
as early as possible.
This patch reduces the initial timer to 125 ms (down from 1000 ms).
Exponential backoff is still in effect, so the only effect should be retrying
earlier. We also turn it into a pref, so it's easy to experiment with it to
find the perfect value.
Depends on D96822
Differential Revision: https://phabricator.services.mozilla.com/D96823
This threshold seems to be too low currently, leading to sometimes
dropping confirmation for unexpected network failures / changes.
Differential Revision: https://phabricator.services.mozilla.com/D96822
This will report when a telemetry even whenever we load an empty file via a
JAR channel. It will not catch situations where onStopRequest is called with
an error code, or when the listener of the channel does not consume the stream.
Differential Revision: https://phabricator.services.mozilla.com/D96412
On Nightly, for now. This allows websites to get the real viewport size.
The rounded size has caused problems in the past (see bug 1648298 / bug
1648265), and changing it would be ideal.
I told the CSSWG that we can experiment with this on Nightly to
alleviate (or prove) compat concerns, in which case we'd need to use a
different solution, see https://github.com/w3c/csswg-drafts/issues/5260.
Differential Revision: https://phabricator.services.mozilla.com/D96826
This will report when a telemetry even whenever we load an empty file via a
JAR channel. It will not catch situations where onStopRequest is called with
an error code, or when the listener of the channel does not consume the stream.
Differential Revision: https://phabricator.services.mozilla.com/D96412
We preserve their value, but by moving them to static prefs, we make
them embedded into the binary portion of the build, which means it's
allowed to differ between x86_64 and aarch64 in mac universal builds.
Differential Revision: https://phabricator.services.mozilla.com/D96522
Mostly for debugging / diagnosing purposes. This is easier than asking
people to try builds from try or building Firefox.
Differential Revision: https://phabricator.services.mozilla.com/D96648
This patch makes cranelift and ion exclusive of each other: enabling
cranelift on a platform will effectively disable Ion on that platform.
Specifically there's a change at the pref/switch level that does not
go terribly deep:
- the new about:config option is javascript.options.wasm_optimizingjit,
the old wasm_cranelift and wasm_ionjit are no more
- new values of X in --wasm-compiler=X in the js shell are 'optimizing'
and 'baseline+optimizing', the old values 'cranelift', 'ion',
'baseline+ion' and 'baseline+optimizing' are still accepted but only
when ion or cranelift is available
- we keep the separate prefs internally in the code for ion and cranelift
but if ENABLE_WASM_CRANELIFT is defined then we never set the ion
pref to true, and if it is not defined then we never set the cranelift
pref to true
The trickiest changes are in testWasm.cpp and in the JIT compiler option
processing in jsapi.cpp.
People who will suffer as a result of this are those who are working
on ports of cranelift to new platforms in Firefox. As of now we have
no such work going on.
In the longer term the exclusive-or situation can be alleviated by a
switch that lets cranelift override ion when cranelift is present and
the switch is on. Patches welcome.
Differential Revision: https://phabricator.services.mozilla.com/D96059
This was an old alternative fling implementation that could be opted
into with the pref apz.android.chrome_fling_physics.enabled=fase.
The pref is also removed.
Differential Revision: https://phabricator.services.mozilla.com/D96508
And use them to disable DOM_DELTA_LINES on Nightly builds, to see the
impact, since this is pretty hard to measure just with telemetry.
Differential Revision: https://phabricator.services.mozilla.com/D95388
We want to use dmabuf textures by default with VAAPI enabled. Remove the 'enabled' option as it's default now
and ship 'disabled' variant to force-disable it, mainly for debugging purposes.
Depends on D95994
Differential Revision: https://phabricator.services.mozilla.com/D95995
The other fling acceleration restrictions make it so that there is no need for
this additional restriction anymore.
Removing this restriction allows a fling to be accelerated even if the previous
fling has been "spinning" for a while (a second or more), provided that the page
is still moving fast enough.
This matches Chrome's behavior.
Differential Revision: https://phabricator.services.mozilla.com/D95472
This avoids unexpected acceleration after a "fling, fling, touch-pause-fling" sequence.
The touch start timestamp is captured when we go from NOTHING to TOUCHING,
and the pan start timestamp is captured when we go from TOUCHING to PANNING.
Differential Revision: https://phabricator.services.mozilla.com/D95470
We need to report when permission is added in order to wait it
explicitly. These will be put be hind a pref
'privacy.antitracking.testing' and should be only used for testing.
Differential Revision: https://phabricator.services.mozilla.com/D94979
We have ~10 months of CRLite telemetry-mode data in both Beta and Nightly, and about 2 months with data that has been kept up-to-date, and that telemetry agrees with our end-of-2019 experiment that CRLite should indeed speed up versus OCSP.
To confirm, we should enable the Enforce mode for Nightly users; that will stop collecting the CRLITE_FASTER_THAN_OCSP_MS and OCSP_FASTER_THAN_CRLITE_MS but should cause an improvement in SSL_TIME_UNTIL_READY as a weighting of the CRLITE_FASTER_THAN_OCSP_MS vs the percentage of cache-miss first page loads: we expect it'll mostly affect the outliers.
Differential Revision: https://phabricator.services.mozilla.com/D95814
This matches other browsers, and common sense to some extent.
The code is a bit awkward because I want this behind a pref for now, as
it's not precisely a zero-risk change.
Differential Revision: https://phabricator.services.mozilla.com/D95065
layout/base/tests/test_bug332655-1.html calls focus on an element, this triggers a call to zoomToFocusedInput. This can zoom the parent document of the test, the mochitest harness.
Then test layout/base/tests/test_bug667512.html runs. It ends by synthesizing a left arrow key and then a right arrow key. With the old scrollbar code this results in no scrolling because there is no layout scrolling that can be done either in the test or the parent document. With the new scrollbar code we can scroll the visual viewport using the keyboard so this scrolls the visual viewport of the test harness (because it got zoomed from a previous test).
The test harness being scrolled means that the synthesized click in the next test test_bug677878 can not hit its intended target.
Using the pref apz.zoom-to-focused-input.enabled to disable zoom to focused input in this directory does work to fix this, but I'm tired of doing that.
I think the proper fix here would be to disable scrolling/zooming of the test harness document. Since it's the root content document and it is not scrollable if not zoomed this is equivalent to disabling the zooming part of zoom to focused input (except for tests that open their own window). To test the zooming part of zoom to focused input we can use a test that opens it's own window: we have gfx/layers/apz/test/mochitest/test_group_zoomToFocusedInput.html for this.
We already have the pref formhelper.autozoom would seems like it would work for this purpose, except it is entangled with java stuff in mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java that I don't really understand that means setting the pref in mochitest.ini doesn't seem to take affect.
So I created a new pref we can use specifically for this purpose. Hopefully we can use it instead of fully disabling the zoom to focused input, so we more closely test what we ship.
Differential Revision: https://phabricator.services.mozilla.com/D95423
This matches other browsers, and common sense to some extent.
The code is a bit awkward because I want this behind a pref for now, as
it's not precisely a zero-risk change.
Differential Revision: https://phabricator.services.mozilla.com/D95065
This matches other browsers, and common sense to some extent.
The code is a bit awkward because I want this behind a pref for now, as
it's not precisely a zero-risk change.
Differential Revision: https://phabricator.services.mozilla.com/D95065
- Added pref to toggle permission feature
- Updated ContentDispatchChooser to check for permission and manage a multi dialog flow.
Differential Revision: https://phabricator.services.mozilla.com/D92945
- Added pref to toggle permission feature
- Updated ContentDispatchChooser to check for permission and manage a multi dialog flow.
Differential Revision: https://phabricator.services.mozilla.com/D92945
Instead of a repeating timeout of only twice the parent's serialization time + 1s, use that double parent time and multiply it by the number of children, and add the number of seconds from the about:config preference "devtools.performance.recording.child.timeout_s" (still 1s by default).
Differential Revision: https://phabricator.services.mozilla.com/D94955
We know that this test will never fail with any of the hardware used by our test infrastructure. It also force create a RDD process even when not actually used in the tests; skewing the results.
Differential Revision: https://phabricator.services.mozilla.com/D94804
We do it in nsDeviceContextSpecG since that's what actually consumes the
settings. On GTK the options need to be prefixed by cups- for some
reason in order to work, so factor out a macro listing the options and
do the NSString / cups- prefixing in the platform specific places.
Differential Revision: https://phabricator.services.mozilla.com/D94479
Allow-list all Python code in tree for use with the black linter, and re-format all code in-tree accordingly.
To produce this patch I did all of the following:
1. Make changes to tools/lint/black.yml to remove include: stanza and update list of source extensions.
2. Run ./mach lint --linter black --fix
3. Make some ad-hoc manual updates to python/mozbuild/mozbuild/test/configure/test_configure.py -- it has some hard-coded line numbers that the reformat breaks.
4. Make some ad-hoc manual updates to `testing/marionette/client/setup.py`, `testing/marionette/harness/setup.py`, and `testing/firefox-ui/harness/setup.py`, which have hard-coded regexes that break after the reformat.
5. Add a set of exclusions to black.yml. These will be deleted in a follow-up bug (1672023).
# ignore-this-changeset
Differential Revision: https://phabricator.services.mozilla.com/D94045
The default fonts of CJK on Samsung's Galaxy device seems to be SEC CJK fonts.
This seems to be modified version of Noto Sans CJK. Samsung has No. 1 market
share for Android, so we should add this fonts to default font list.
Differential Revision: https://phabricator.services.mozilla.com/D94702