Sorry for the vague commit message, but I haven't dug yet on why or how the
Android code is depending on this.
This call used to be part of nsPresContext::CompatibilityModeChanged, which
unconditionally called PresShell::EnsureStyleFlush.
This was not (in theory, at least) always necessary. There's there's no point in
ensuring a style flush is going to happen if styles haven't changed, and
CompatibilityModeChanged() didn't actually guarantee that the compat mode was
different at all before my patch.
Styles only change if the compat mode actually changes (since then selectors
become case-sensitive or case-insensitive), or more obviously when you insert or
remove the quirks.css stylesheet, and in that case ApplicableStylesChanged makes
sure that the flush happens.
Yet here we are, and not having that early call to EnsureStyleFlush, even in the
case there's no quirks mode or quirks sheet change or anything of that sort
(this happens even on XUL docs, which are always FullStandards) makes the first
(and only the first) browsing session in Geckoview have terrible scrolling
performance.
I'm calling it a day for today, will investigate as time permits in bug 1544185.
Differential Revision: https://phabricator.services.mozilla.com/D27416
--HG--
extra : moz-landing-system : lando
Bug 1525183 imported chromium workaround. But it caused a device specific regression. The change removes WS_EX_LAYERED and WS_EX_TRANSPARENT, but it keeps WS_EX_NOREDIRECTIONBITMAP, since it is necessary for memory usage reduction.
Differential Revision: https://phabricator.services.mozilla.com/D27461
--HG--
extra : moz-landing-system : lando
Previously, this code cached a list of controls on first use and used that for navigation.
This refactor addresses several issues:
1. There is now a separate focus order for tab/shift+tab and down/up arrows.
This allows menulists, textboxes, etc. which use the arrow keys themselves to be focused with tab, but skipped with the arrows.
This means the user won't fall into these controls when using the up/down arrow keys and be confused by the subsequent arrowing behaviour.
2. When a menulist, textbox, etc. is focused, the arrow keys, space and enter are now passed to the control.
This is a better fix for handling of the arrow keys by menulists (bug 1522092).
It also fixes left arrow in a textarea moving to the previous view instead of moving the caret (bug 1489874).
3. This improves handling of dynamic updates to the panel.
For example, elements that are initially disabled and enabled later will be navigable.
This is because the next element is determined dynamically by the TreeWalker, rather than using a cached list.
4. The interim fix for bug 1522092 disabled PanelMultiView keyboard navigation.
This caused some regressions, including arrow keys/activation on the Site Identity Report a Problem link (bug 1539976) and some controls not being navigable if the Site Identity panel is opened using the mouse (bug 1539984).
With the above fixes, we can now re-enable PanelMultiView keyboard navigation in the Site identity panel and thus fix these regressions.
5. Previously, PanelMultiView keyboard navigation was disabled in the main toolbar overflow menu.
This is because the search box can be added to the overflow menu, which previously caused problems for the arrow keys.
With the above fixes, we can now safely enable PanelMultiView keyboard navigation in the overflow menu.
6. PanelMultiView keyboard tests have been added.
Previously, we relied on tests specific to various panels to exercise this functionality.
Differential Revision: https://phabricator.services.mozilla.com/D25905
--HG--
extra : moz-landing-system : lando
The Picture-in-Picture toggle buttons are now part of the video controls UAWidget
bindings, so we need to construct a UAWidget for the no-controls case for Desktop
to make that toggle available.
Up until now, we've never needed a no-controls UAWidget for Desktop, since we
never needed to show UI in that case.
Depends on D26809
Differential Revision: https://phabricator.services.mozilla.com/D26803
--HG--
extra : moz-landing-system : lando
This also stops the PictureInPictureToggleChild from tracking videos with controls for now.
Depends on D26777
Differential Revision: https://phabricator.services.mozilla.com/D26778
--HG--
extra : moz-landing-system : lando
aBuilder->InInvalidSubtree() tracks the modified state. Save the state
during construction of nsDisplayItem and use in ProcessItemFromNewList.
Depends on D24462
Differential Revision: https://phabricator.services.mozilla.com/D26138
--HG--
extra : moz-landing-system : lando
To avoid expensive virtual dispatch in PreProcessDisplayList().
Depends on D24460
Differential Revision: https://phabricator.services.mozilla.com/D26136
--HG--
extra : moz-landing-system : lando
Also move to first cache-line (64-bytes) of nsDisplayItem to improve D-cache hit
when accessing mFrame, mItemFlags, etc.
Differential Revision: https://phabricator.services.mozilla.com/D26134
--HG--
extra : moz-landing-system : lando
Some "HTML editor commands" are stateful due to storing tag name to handle it
with specific command. However, we can make it stateless with retrieving
tag name from command name once per command only when it's necessary. The
runtime cost must be really cheap since we can map it with hash table.
This patch makes them stateless and singleton classes. So, we can save
footprint and allocation runtime cost with this change.
Differential Revision: https://phabricator.services.mozilla.com/D27407
--HG--
extra : moz-landing-system : lando
Different from the comment in `EditorCommands.h`, editing commands and
editor commands are instantiated for each editable document or each
`HTMLInputElement` or `HTMLTextareaElement`. Therefore, even though they
are stateless, we allocate too many instances of them. We should make
them singleton classes to reduce the footprint and save runtime allocation
cost.
Differential Revision: https://phabricator.services.mozilla.com/D27406
--HG--
extra : moz-landing-system : lando
Right now the firstPartyDomain is not set when host is in the public suffix list. The patch fixes it by setting firstPartyDomain to eTLD.getPublicSuffix in these cases.
Differential Revision: https://phabricator.services.mozilla.com/D26767
--HG--
extra : moz-landing-system : lando
Also has some other minor prologue-related changes. The interpreter code here
is slightly less optimal than it could be, but that will be easier to address
in follow-up changes.
Differential Revision: https://phabricator.services.mozilla.com/D25930
--HG--
extra : moz-landing-system : lando
ensure high_value_tasks has a default value when we fail to get data from treeherder/seta.
Differential Revision: https://phabricator.services.mozilla.com/D27445
--HG--
extra : moz-landing-system : lando
Have FetchBody::SetMimeType convert from ByteStrings to UTF8 CStrings to not corrupt Unicode values
Differential Revision: https://phabricator.services.mozilla.com/D26011
--HG--
extra : moz-landing-system : lando
We already get the user space metrics, mFontSizeScaleFactor is irrelevant
and the scaling should not be applied in the first place.
Otherwise we will get very wrong bounding box when <text> has SVG transform
or the font has extreme size.
Differential Revision: https://phabricator.services.mozilla.com/D27443
--HG--
extra : moz-landing-system : lando