When trying to get the current focused element during reflow, when the current
focused element in the document is a frame which has yet to be initialized,
attempting to walk through that frame's BrowsingContext causes immediate frame
loader initialization. Since frame loader initialization often requires running
scripts, that's unsafe, which is why we defer initialization until the end of
any in-progress reflow or document update.
This patch fixes the focus manager code to ignore any uninitialized frame
loaders it comes across, since by definition they cannot have any
currently-focused element until their subdocuments have been created.
Differential Revision: https://phabricator.services.mozilla.com/D79392
Peephole optimizations are not supported by upstream on big endian and deactivated there as well.
Fixes segfault on startup on s390x.
Differential Revision: https://phabricator.services.mozilla.com/D79039
There are some issues with this code. It's using doubles, but SetRect
only takes floats, so we lose precision there already. Instead of
getting fancy, use the same conversion that the rest of Gecko uses, so
that pages that compute style values out of getBoundingClientRect values
don't get minor floating point changes.
Differential Revision: https://phabricator.services.mozilla.com/D79326
This patch does the following:
1. Both the flex-direction and flex-wrap badges are being treated as illustrations, not generic containers, so screen readers immediately pick up the full meaning from the title.
2. Turns the flex item list sub heading into an actual heading for screen readers. It is level 3 because the accordeon headings are all level 2.
Differential Revision: https://phabricator.services.mozilla.com/D79129
This also splits out the indicator theme-ing into an include file, with
platform-specific CSS files that import it. This allows us to do
platform-specific tweaks, such as changing the ordering of the window
controls and drag indicator, which we do on macOS.
Differential Revision: https://phabricator.services.mozilla.com/D79344
This removes the diagnostic warnings which used to be logged when the
Large-Allocation header was present, but failed to switch into a
Large-Allocation process. Due to the low adoption of the header, this shouldn't
be too large of a problem, but we can look into re-adding the diagnostics if
needed in the future.
The new codepath no longer performs multiple network requests for
Large-Allocation resources, and now relies on the battle-tested
DocumentLoadListener codepath for process switching.
Differential Revision: https://phabricator.services.mozilla.com/D78998
This pref was enabled on all platforms, and the codepath which has it disabled
has been untested for some time. Remove the pref to simplify the code handling
the old case.
Differential Revision: https://phabricator.services.mozilla.com/D78974
These were only used by process switches triggered via DocumentChannel, which
now take the PROCESS_BEHAVIOR_STANDARD codepath.
Differential Revision: https://phabricator.services.mozilla.com/D78973
As tabbrowser now uses `PROCESS_BEHAVIOR_STANDARD`, `PROCESS_BEHAVIOR_CUSTOM` is
now unused. This patch removes that now-unused code.
Differential Revision: https://phabricator.services.mozilla.com/D78972
Due to the PPDC process switching changes, we also handle switching between
remote and non-remote browsers with DocumentLoadListener. Adds support to
CanonicalBrowsingContext::ChangeFrameRemoteness to allow it to handle non-remote
browsers as well.
Differential Revision: https://phabricator.services.mozilla.com/D78971
Add a series of extra hooks and methods to allow tabbrowser to use the new
process switching codepath. This duplicates some of the logic from
`updateBrowserRemoteness` into event handlers.
Differential Revision: https://phabricator.services.mozilla.com/D78970
This new process switching behavior is only enabled for some browser elements,
which have specified a specific attribute. Turning this on for all browsers with
a `remote` attribute causes breakage in reftests.
The initial version does not handle switching from remote to parent or
vice-versa, that is covered in a later part.
Differential Revision: https://phabricator.services.mozilla.com/D78969
Some existing tests crash if we just add the assertions and the rest of the patch
fixes those.
mServiceNotifier is now created always on the main thread and used only on the target thread.
And use of it is protected by the mutex so that at the same time when it is created, target thread
can't try to delete it.
Differential Revision: https://phabricator.services.mozilla.com/D79269
This is an attempt to improve our relationship with the drivers.
Currently, we work with the instance buffer limit dictated by the macOS drivers.
We can consider lowering it, since it will only make the driver work eaiser.
Differential Revision: https://phabricator.services.mozilla.com/D78164
In order to delegate the permission to the top-level window, in this
patch, we pre-compute the permissions of the top-level context and set
them to the top-level WindowContext. So, the cross-origin iframe can
know the permission of the top-level window through the WindowContext.
Thus, the permission can be delegated in Fission.
Differential Revision: https://phabricator.services.mozilla.com/D79132
This also splits out the indicator theme-ing into an include file, with
platform-specific CSS files that import it. This allows us to do
platform-specific tweaks, such as changing the ordering of the window
controls and drag indicator, which we do on macOS.
Differential Revision: https://phabricator.services.mozilla.com/D79344