The necessary values for the lookup are now all in the graph itself.
I suspect this would also be possible with nsTHashtable but HashSet is
designed for a lookup class that differs from the stored class and requires
less boilerplate.
Depends on D191831
Differential Revision: https://phabricator.services.mozilla.com/D191832
We will call `nsLineBreaker::UpdateCurrentWordLanguage` per `nsLineBreaker`
instance with utf-16 text or hyphen support. When browsing Wikipedia's large
page (browsertime uses https://en.wikipedia.org/wiki/Barack_Obama), this method
is called over 400 times with same atom (mostly "en", a few is "en-us") on
pageload time of Wikipedia.
As long as looking profiler data, nsLineBreaker::UpdateCurrentWordLanguage is
shown. And this isn't very fast due to parse the locale string with ICU4C.
So I think that we can improve a few pageload time to cache previous result.
Differential Revision: https://phabricator.services.mozilla.com/D191732
such as failure to implement QueryInterface to T or nsISupportsWeakReference.
Null return values are assumed to either represent an object that no longer
exists or no object, and so these failures are not detected elsewhere.
Differential Revision: https://phabricator.services.mozilla.com/D191827
This patch doesn't change behavior; it just removes some redundant checks.
(Note that the tight-scoping around nsAutoMicroTask/ReduceAnimations is
important for the RAII object to be torn down at the intended time; but it
doesn't need its own if-check.)
Depends on D191909
Differential Revision: https://phabricator.services.mozilla.com/D191911
This patch doesn't change behavior.
This is a bit gross, but it helps us make better use of the backtrace to figure
out what's going on in a given crash report.
Differential Revision: https://phabricator.services.mozilla.com/D191909
This doesn't affect behavior; it's just a pure refactoring, moving code from
being inline to being in a helper function.
Differential Revision: https://phabricator.services.mozilla.com/D191908
Normally, XUL toolbarbutton elements are labelled using the label attribute or a child label element.
However, there are some instances such as in the Synced Tabs menu where a toolbarbutton contains only a text leaf.
Previously, these buttons exposed no label to accessibility APIs.
To fix this, we now allow a text leaf child in the accessibility tree.
We already supported this for XUL button elements.
Also, there was a bunch of existing common code in IsAcceptableChild for XULToolbarbuttonAccessible and XULButtonAccessible and the former subclasses the latter.
Therefore, XULToolbarbuttonAccessible::IsAcceptableChild has been refactored to call the base class method, adding an additional check specific to toolbarbuttons.
Differential Revision: https://phabricator.services.mozilla.com/D191713
This is a speculative crash fix; I don't know how to reproduce this problem.
A non-XUL (HTML, SVG, etc.) table cell should always have a CachedTableAccessible ancestor.
Apparently, this sometimes isn't the case.
It seems there can be a table ancestor which is not a CachedTableAccessible, which could only be a XULListboxAccessible or XULTreeGridAccessible.
In this case, CachedTableCellAccessible::GetFrom would previously try to cast this TableAccessible to a CachedTableAccessible and breakage would ensue.
I don't know how this can happen, but we protect against this now by returning early if a XUL table is found, since a XUL table can never be a CachedTableAccessible.
In contrast, all non-XUL tables are always CachedTableAccessibles.
Differential Revision: https://phabricator.services.mozilla.com/D191374
These are small but they do show up in sp3 profiles.
IsPaintingToWindow is always true, so just assert it.
HaveScrollableDisplayPort is a simple pointer check, whereas AsyncPanZoomEnabled needs to jump several pointers (and WantAsyncScroll is slower yet), so change the order.
HasNonMinimalNonZeroDisplayPort is not needed unless we are inside that if, so don't call it outside the if.
Differential Revision: https://phabricator.services.mozilla.com/D191599
The previous behavior was triggering an assertion in the
StructuredCloneHolder destructor. In this particular case, the dangling
MessagePorts can safely ignored.
Differential Revision: https://phabricator.services.mozilla.com/D191472
This was removed in Bug 1580907, but the translations feature needs it
restored in order to transfer MessageChannel ports. A new test is added
as well.
Differential Revision: https://phabricator.services.mozilla.com/D190723
Reverts the order of transforms so padding happens after task-context
Prevents run-task from removing the tab characters when passing in the values to bash
Differential Revision: https://phabricator.services.mozilla.com/D191696
Adds some new ASRouter methods for resetting impressions of all 3 types,
message impressions, group impressions, and screen impressions, and
exposes them through some new buttons and textboxes in a new Impressions
tab in the ASRouter devtools.
Differential Revision: https://phabricator.services.mozilla.com/D178261
`internal::ArgStrLen` and `internal::ArgToString` must behave
identically. Merge them into a common implementation function to ensure
this.
Additionally, use `size_t` rather than `int` as an intermediate data
type where appropriate.
No functional changes.
Differential Revision: https://phabricator.services.mozilla.com/D191127
This reduces unnecessary churn when switching platforms between linux
and macOS where we see changes like:
-2.34.1
+2.39.3 (Apple Git-145)
Removing the signature from the patches does not impact our ability
to restore the patch-stack and having it there only creates noise.
Differential Revision: https://phabricator.services.mozilla.com/D191885