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