We currently keep all mark stacks allocated after GC, shrunk to their default size.
For parallel marking we can free the mark stacks of all markers apart from the
first. If we fail to allocate them at the start of marking we can fall back to
not marking in parallel.
This fixes the AWSY regression.
The patch also changes GCMarker::reset() to cover everything that happens in
GCMarker::stop() so you don't need to call both.
Differential Revision: https://phabricator.services.mozilla.com/D189342
This fix adds stop at punctuation mode for FindWord for a11y.
Also, IS_ASCII is conflict with nsUnicharUtils.h's, so I rename it.
Differential Revision: https://phabricator.services.mozilla.com/D188785
The test just follows the result in Chrome 91. Referring the style makes sense
to me because it makes users better result in the tricky cases. However, if
the default paragraph separator is `<p>`, Chrome may wrap `<div>` and `<p>`
which are styled as `display: inline` or something into new `<p>` element.
This means that the builtin editor creates invalid HTML structure by themselves.
Therefore, this should be avoided and `<div>` should be used instead if one or
more elements in the new paragraph cannot be the child of the new paragraph.
Note that `insertParagraph` with `<p>` as `defaultParagraphSeparator` is
tested in `run/insertparagraph.html` a lot. Therefore, this patch does not
make the test check the normal cases to wrap paragraphs into a new `<p>`.
Differential Revision: https://phabricator.services.mozilla.com/D188908
The condition that causes us to warn is typically a web-server configuration
issue, not a Firefox issue; and we handle it gracefully, so there's no real
point in adding to our debug-build terminal warning-spam.
Differential Revision: https://phabricator.services.mozilla.com/D189421
We currently are using a fake bitflags 2, derived from bitflags 1. More
and more crates are using it, and we're at a sweet spot where flipping
things around makes sense: using a fake bitflags 1, derived from
bitflags 2.
Differential Revision: https://phabricator.services.mozilla.com/D189316
This both reduces the number of registered static destructors, and avoids the
assertion in the LinkedList destructor without depending on a StaticAutoPointer
(which requires an allocation & additional indirection) by using the new
NeverDestroyed type from part 4.
Differential Revision: https://phabricator.services.mozilla.com/D189249
This fixes the issue described in comment 7 by doing a few changes to how threads are created, and members on nsThreadManager are managed.
* The thread list is moved to be a member of `nsThreadManager`, which is
already a statically allocated singleton.
* The flag for whether new thread creation is allowed is moved from being an
atomic to being guarded by the same mutex as the thread list, meaning that
it could be checked and a new thread could be added to the list atomically.
* Threads which require shutdown are initialized atomically from the point of
view of the thread manager, meaning that the check in ShutdownNonMainThreads
is guaranteed to catch all successfully started nsThread instances.
Differential Revision: https://phabricator.services.mozilla.com/D188623
This patch instead replaces this manual reference counting by replacing the raw
pointer in the `ThreadInitData` type with a `RefPtr`.
Differential Revision: https://phabricator.services.mozilla.com/D188622
Because we use NULL to indicate the auto value, once a page contributes a
non-auto page value then that will be all that is seen by ComputePageValue
when a later page doesn't have a page-name at all.
Actually checking for the page-name value will fix page-name values when
an empty/auto page-name follows pages with a non-auto value. It is also
slightly more efficient, as it avoids a frame property lookup and instead
just looks at the computed style.
While we are here, remove an assert that is clearly not possible to occur
anymore, and add a short explanation of the code in ComputePageValue.
Differential Revision: https://phabricator.services.mozilla.com/D188544
HEVC playback needs hardware decoding, and it currently only support on
Windows. HEVC playback check would be run when the task is in the
mda-gpu, which has the ability for hardware decoding. On other
platforms, HEVC should not be supported.
We also need to set the pref in the `ini` file, instead of setting it in
file. Because that pref would be checked while creating GPU process,
setting in file would be too late for us.
In addition, interesting thing for HEVC on media engine is that, the
media engine can even play HEVC on the machine which doesn't support
hardware decoding. I suspect that media engine still supports SW HEVC
decoding but just not expose that feature to other applications.
Differential Revision: https://phabricator.services.mozilla.com/D189030
For now, I'd like to only enable HEVC for the media engine playback, but
keep the HEVC default off on the MFT. Because the media engine is an
experimental feature, which is off by default, it's fine to enable HEVC
for that.
Differential Revision: https://phabricator.services.mozilla.com/D188540
As now we can support HEVC playback via MFT as well, we should allow GPU
process as well (HEVC hardware decoding performs only in GPU process).
If the HEVC is not supported, the playback would be abort at the stage
of creating a decoder.
Differential Revision: https://phabricator.services.mozilla.com/D188391
HEVC playback will be supported via the Media Foundation Transform (MFT)
and WMF decoder module will check if there is any avaliable MFT which
can be used for HEVC then reports the support information.
Differential Revision: https://phabricator.services.mozilla.com/D188389
Since stylelint is now a dependency of the project root, and meow is
a dependency of stylelint, we don't need to explicitly list meow as a
dependency of newtab. The project root uses a newer version of meow that
requires some small workarounds to work outside of an ES module, so we
also need to update the newtab scripts that use meow.
Differential Revision: https://phabricator.services.mozilla.com/D187603
The test is already annotated with TIMEOUT in many cases, so this is likely
just a test with too short timeout that is being exceeded on this platform
(possibly due to the VM).
Differential Revision: https://phabricator.services.mozilla.com/D189379
This patch fixes `nsWindow::RefreshWindowClass` to call `gdk_wayland_window_set_application_id` to set the application ID (or window class in x11 terminology) when using Wayland. The application ID is set to the value of the `windowclass` attribute if that attribute exists. When the attribute does not exist, the function is not called to keep the default application ID.
Additionally, `nsWindow::Show` has been updated to call `nsWindow::RefreshWindowClass` after the window is shown. This is needed as `gdk_wayland_window_set_application_id` does not work before the window is displayed, and all existing calls to `nsWindow::RefreshWindowClass` happened before the window was shown.
Differential Revision: https://phabricator.services.mozilla.com/D189062