This changes both the spellchecker parent code that interfaces with the
InlineSpellCheckerParent actor, and the child code interfacing with the
ContextMenuChild actor, to ensure they get notified when either actor
goes away.
It maintains the "uninit" messages to clear out spellcheck data when the
context menu goes away (while the window / actors remain intact).
It also adds some belts-and-suspenders type checks that allow us to
recover if we ever get in a bad state again, instead of stubbornly
throwing exceptions and breaking the UI for users.
Differential Revision: https://phabricator.services.mozilla.com/D75228
This also uses MakeUniqueForOverwrite* in two places where we immediately copy
over the Buffer from a Span.
Adds move assignment operator as well.
Differential Revision: https://phabricator.services.mozilla.com/D75510
These are the equivalent of std::make_unique_for_overwrite and std::make_unique_for_overwrite with fallible allocation.
Differential Revision: https://phabricator.services.mozilla.com/D75509
Our ETP backend adds the storage permission asynchronously when adding
storage access. So, we have to wait the permission is ready in the
parent process before cleaning up. Otherwise, we will have a incorrect
state after the test.
Differential Revision: https://phabricator.services.mozilla.com/D76372
Some pages created nesting levels of scroll roots where the outer
scroll frames are redundant (the scrollable size is zero if the
content rect is the same as the frame rect).
In these cases, it is of no benefit to select these as a scroll
root for picture cache tiles.
Differential Revision: https://phabricator.services.mozilla.com/D75451
We originally switched it to use just `public/` becuase iscript broke with the
extra path, but that broke out-of-tree consumers. Now that iscript is fixed,
switch it back.
Differential Revision: https://phabricator.services.mozilla.com/D76409
The existing test compares a 3d scene to a "hand drawn" version of the scene using 2d primitives and was never expected to match perfectly, but instead just provide something to compare against better than saying it's not a blank page.
The new test looks visually identical, the fuzz is around the edges of the text.
Depends on D75289
Differential Revision: https://phabricator.services.mozilla.com/D75636
In StackingContextHelper::StackingContextHelper we want to handle the case of "no passed in transform" differently from "passed in transform but it cannot be drawn 2d". This is a little tricky because ChooseScale always has a transform passed in: in the non-wr case it is a scaling matrix by the parent scale. We could call ChooseScale if canDraw2D is false and get the same value for mScale but we also need to keep mInheritedTransform in sync.
This issue arose before: https://bugzilla.mozilla.org/show_bug.cgi?id=1449958#c3
And we want to be careful not to regress that bug, that bug was concerning content without a transform, so we should be good.
The testcase has a parent element with rotateY(-80deg) and a child element with rotateY(80deg), the combined transform is flat with no scaling even though each transform individually would have a very small x scale. There's no way to choose a good scale by looking at each transform individually, and since we only currently store transforms as 2d matrices we can't look at the full combined transform in order to choose a scale. Thus we must use a unit scale, like ChooseScale does.
Differential Revision: https://phabricator.services.mozilla.com/D75289
When we call nsWindow::Show but Firefox is not foreground, we show the window
and also flash it on the taskbar to get the user's attention.
This is really annoying when restoring a session with `N` windows, as the
user's taskbar ends up with all `N` of them stuck in a flashed state until the
user goes through and manually activates every single window.
There are several ways I thought of to address this, but I think the
simplest one is just to track whether or not we're in the middle of restoring a
session and skip flashing when we are doing so.
Differential Revision: https://phabricator.services.mozilla.com/D76406
The configure sandbox has a list of arguments to handle, and removes
each of them when it resolves the corresponding options through e.g. a
`@depends`. When the configure sandbox is finished, what's supposed to
be left is unknown options.
The mozconfig injections adds elements to that list of arguments to
handle. The problem is that by the time the mozconfig injection happens,
some early options have already been handled by the sandbox and won't be
re-handled. Which means by the end of configure, the arguments are still
there, and the sandbox throws an error because it thinks they are for
unknown options.
Things were actually working before bug 1264527, essentially because we
had an explicit list of mozconfig variables that would be injected, and
that didn't include those early options.
So what we now do is to not actually inject those early options from
mozconfig.
Differential Revision: https://phabricator.services.mozilla.com/D76276
TSan returns false positives for `lazy_static`. While we could
blocklist it, `once_cell` has equivalent functionality, but with a more
modern API, so let's use it instead.
Depends on D75864
Differential Revision: https://phabricator.services.mozilla.com/D76342
Top-level content WindowGlobalParents now keep track of the site origins of the
documents in their document tree. When the WindowGlobalParent is torn down, the
maximum of the number of unique site origins is submitted for telemetry.
Differential Revision: https://phabricator.services.mozilla.com/D71493