object-src used to be required because it controls plugins, and we did
not want to load unsafe sources as plugins. With NPAPI plugin support
having been dropped a long time ago, this reason no longer exist.
The requirement for "secure" object-src CSP directive meant that
extensions had to specify a boilerplate object-src if they wanted to
modify script-src.
This patch removes the object-src requirement from extension CSP,
which simplifies the usage and learning curve of CSP usage in
extensions.
With this change, extensions can now load "unsafe" (remote) content
via `<embed>` and `<object>` tags. This relaxation does not reduce
the security because this was already possible with `<iframe>` tags.
Differential Revision: https://phabricator.services.mozilla.com/D156747
Because the number of telemetry events we get back can vary we can't
use the existing Telemetry Test functions, and need to introduce a
new one. It does duplicate some code, but because the functions differ
in a few ways it's not straightforward or clean to refactor it in a shared
way.
Differential Revision: https://phabricator.services.mozilla.com/D155622
It's always true, so remove it.
Add another pref to allow -webkit-line-clamp to work on all blocks
rather than just legacy -webkit-boxes, which seems something we should
try to look into, eventually.
Depends on D155181
Differential Revision: https://phabricator.services.mozilla.com/D155182
In order to perform basic mathvariant transforms (italic, bold, and
bold-italic) on systems that don't provide the proper characters from
the Mathematical Alphanumeric Symbols block, a fallback using font
italic/bold style was implemented in Gecko. Nowadays, several fonts
provide glyphs for these characters and are pre-installed on Desktop:
- Cambria Math (pre-installed on Windows Vista and higher)
- STIX General (pre-installed from OS X Lion to macOS Monterey)
- STIX Two Math (pre-installed on macOS Ventura and higher)
- DejaVu (pre-installed on the most popular Linux distributions)
This commit put the fallback under a preference that is disabled by
default on Desktop. It is still required on Android because the
default fonts are not enough.
Differential Revision: https://phabricator.services.mozilla.com/D156396
This avoids the apparent Core Graphics bug whereby the PDF output it generates will mis-render
when subsequently processed again by Core Graphics (although it renders OK in Adobe products).
Unfortunately, this will regress bug 1772225, so that pdf.js documents will be rasterized when
printed or in Save to PDF output on macOS.
(Setting the pref gfx.cairo_quartz_cg_layer.enabled to true will restore "good" (vector-based)
output, but embedded XObject bitmap images may be mis-scaled.)
Differential Revision: https://phabricator.services.mozilla.com/D156570
This simple approach seems to match quite well what other browsers do. And tryserver results weren't horrible.
I noticed only one test failing because of the change, and it is using synchronous XHR + timers.
Now it is using rAF + sync XHR.
Differential Revision: https://phabricator.services.mozilla.com/D156238
This simple approach seems to match quite well what other browsers do. And tryserver results weren't horrible.
I noticed only one test failing because of the change, and it is using synchronous XHR + timers.
Now it is using rAF + sync XHR.
Differential Revision: https://phabricator.services.mozilla.com/D156238
This pref is for testing purpose, as we already finished implementing
both audio and video playback, so we don't need that anymore.
Differential Revision: https://phabricator.services.mozilla.com/D155032
It improves rasterization and upload times by a lot in almost all of the test cases I can find. The only drawback is that our invalidation granulatiry is the tile so invalidation gets coarser as we increase the tile size.
512 is a bit special because it is the limit above which a different texture upload path is taken, so there will be more risk of performance side effects if/when we decide to make tiles even larger.
Differential Revision: https://phabricator.services.mozilla.com/D155822
It improves rasterization and upload times by a lot in almost all of the test cases I can find. The only drawback is that our invalidation granulatiry is the tile so invalidation gets coarser as we increase the tile size.
512 is a bit special because it is the limit above which a different texture upload path is taken, so there will be more risk of performance side effects if/when we decide to make tiles even larger.
Differential Revision: https://phabricator.services.mozilla.com/D155822
It improves rasterization and upload times by a lot in almost all of the test cases I can find. The only drawback is that our invalidation granulatiry is the tile so invalidation gets coarser as we increase the tile size.
512 is a bit special because it is the limit above which a different texture upload path is taken, so there will be more risk of performance side effects if/when we decide to make tiles even larger.
Differential Revision: https://phabricator.services.mozilla.com/D155822
It improves rasterization and upload times by a lot in almost all of the test cases I can find. The only drawback is that our invalidation granulatiry is the tile so invalidation gets coarser as we increase the tile size.
512 is a bit special because it is the limit above which a different texture upload path is taken, so there will be more risk of performance side effects if/when we decide to make tiles even larger.
Differential Revision: https://phabricator.services.mozilla.com/D155822
In nightly and early beta, we still use 0.5 as the threshold so we can collect more data.
In release, use 0.95 as the threshold
Differential Revision: https://phabricator.services.mozilla.com/D155486
- remove flag and corresponding warning/counter.
- remove attribute from parsers, but keep the atom since it's
used by TreeSanitizer.
- remove tests for mfrac@bevelled, there is a WPT test to check it's
not supported.
- layout/mathml/tests/test_bug975681.html is removed, its tests are
currently (wrongly) all disabled when the flag is off and equivalent
tests for attributes other than bevelled exist in WPT.
Differential Revision: https://phabricator.services.mozilla.com/D154199
- Remove preference, warning and counter.
- Remove tests checking support for it, or replacing with
equivalent 50% and 300% values.
Differential Revision: https://phabricator.services.mozilla.com/D154198
- Remove code for align/denumalign/numalign attributes.
- Remove tests checking support for them.
- Remove warning message and counter.
- numalign/denomalign atoms are not removed, since they
are still used by nsTreeSanitizer.
Differential Revision: https://phabricator.services.mozilla.com/D154197
- Remove script_shift_attributes preference and related test, warning
message and parsing.
- Do not remove subscriptshift/supscripshift atoms, since they are
still needed for nsTreeSanitizer.
Differential Revision: https://phabricator.services.mozilla.com/D154195
There are a couple of current issues/discussions that may lead to a change in the set of supported keywords, so we may want to hold back a little on actually shipping this.
- In https://github.com/w3c/IFT/pull/113, the WebFonts WG proposes several new incremental-* keywords (and maybe implies dropping the currently-defined incremental?)
- In https://github.com/w3c/csswg-drafts/issues/7633, I just proposed renaming the feature-* keywords to features-* (plural) for better readability; I'd like to see a decision on that before we ship this to release.
Differential Revision: https://phabricator.services.mozilla.com/D155458
It turns out that websites break with different reasons when hiding things. At this point we want to stop revising the hack further and instead gather the data about how many websites are currently affected.
Differential Revision: https://phabricator.services.mozilla.com/D154578
The patch implements a CookieBanner JSWindowActor. The CookieBanner
actor will be created when the DOMContentLoaded event files, and try to
detect the cookie banner and click the button to handle it.
Differential Revision: https://phabricator.services.mozilla.com/D154806
There are compat issues with the approach. There are future plans to restore the functionality but only when typing into a text area.
Differential Revision: https://phabricator.services.mozilla.com/D155275
The patch implements a CookieBanner JSWindowActor. The CookieBanner
actor will be created when the DOMContentLoaded event files, and try to
detect the cookie banner and click the button to handle it.
Differential Revision: https://phabricator.services.mozilla.com/D154806
It turns out that websites break with different reasons when hiding things. At this point we want to stop revising the hack further and instead gather the data about how many websites are currently affected.
Differential Revision: https://phabricator.services.mozilla.com/D154578
This also introduce a pref which protect these two attributes:
dom.picture_source_dimension_attributes.enabled.
These two dimension attributes will be mapped to the style of <img> elements
if the <source> element's parent is <picture>. This will be implemented
in the later patch. For now, we just implement the DOM interface.
Differential Revision: https://phabricator.services.mozilla.com/D152585
It turns out that websites break with different reasons when hiding things. At this point we want to stop revising the hack further and instead gather the data about how many websites are currently affected.
Differential Revision: https://phabricator.services.mozilla.com/D154578
The ColorSchemeMode::Preferred change doesn't make a difference (that
is, always use the preferred one), since when we only propagate from
top's embedder the embedder is chrome, which always has the preferred
color-scheme.
Differential Revision: https://phabricator.services.mozilla.com/D154931
Backdrop filter crashes newer Intel drivers on Windows. This patch adds
support to the blocklist infrastructure for backdrop filter, and hooks
this up with the CSS property table.
Differential Revision: https://phabricator.services.mozilla.com/D154950
Fix some tests to:
* Not assume `double` precision.
* Account for recent working group resolution with regards to NaN: https://github.com/w3c/csswg-drafts/issues/7067#issuecomment-1111211295
Not sure I caught all, but normalizing to 0 was already our existing
behavior. This feature needs more work before it can be enabled more
generally, so make it nightly-only, for now.
Also, it's unclear per spec what the serialization for infinity*1s or so
should be. Right now we serialize to <very-big-number>s, which seems
reasonable, but some tests (but not others!) expect different behavior.
I left those untouched for now.
Differential Revision: https://phabricator.services.mozilla.com/D154883
We now have test coverage, so let's do this.
The remaining failures are just about infinity/nan, which is a
completely different feature.
Differential Revision: https://phabricator.services.mozilla.com/D154831
Backdrop filter crashes newer Intel drivers on Windows. This patch adds
support to the blocklist infrastructure for backdrop filter, and hooks
this up with the CSS property table.
Differential Revision: https://phabricator.services.mozilla.com/D154950
It seems that making animation shorthand supports animation-composition may be
very tricky, so it's unlikely to include animation-composition into the
shorthand for now, per spec issue:
https://github.com/w3c/csswg-drafts/issues/6946.
WebKit also supports the longhand only on STP (Safari Technology Preview), so
it should be fine to enable the longhand property only on Firefox Nightly,
for experiemental testing.
Differential Revision: https://phabricator.services.mozilla.com/D154934
Fix some tests to:
* Not assume `double` precision.
* Account for recent working group resolution with regards to NaN: https://github.com/w3c/csswg-drafts/issues/7067#issuecomment-1111211295
Not sure I caught all, but normalizing to 0 was already our existing
behavior. This feature needs more work before it can be enabled more
generally, so make it nightly-only, for now.
Also, it's unclear per spec what the serialization for infinity*1s or so
should be. Right now we serialize to <very-big-number>s, which seems
reasonable, but some tests (but not others!) expect different behavior.
I left those untouched for now.
Differential Revision: https://phabricator.services.mozilla.com/D154883
We now have test coverage, so let's do this.
The remaining failures are just about infinity/nan, which is a
completely different feature.
Differential Revision: https://phabricator.services.mozilla.com/D154831
By making image loading in <embed> and <object> behave more like when
an <iframe> loads an image, we can make sure that the synthetic
document generated is process switched if the image is cross
origin. This is done by making image loading in nsObjectLoadingContent
follow the document loading path.
We also make sure that we pass the image size back to the embedder
element to not get stuck with the intrinsic size.
To avoid named targeting being able to target these synthetic
documents, as well as showing up in `Window.frames` and being counted
in `Window.length`, we keep a filtered list of non-synthetic browsing
contexts for that use-case.
This feature is controlled by two prefs:
* browser.opaqueResponseBlocking.syntheticBrowsingContext
This triggers the creation of synthetic documents for images loaded
in <object> or embed.
* browser.opaqueResponseBlocking.syntheticBrowsingContext.filter
This turns on the filtering of synthetic browsing contexts in named
targeting, `Window.length` and `Window.frames`.
Differential Revision: https://phabricator.services.mozilla.com/D148117
This patch adds the following components:
- nsICookieBannerService: Main service singleton managing the rules and initiating other components.
It's exposed via Services.cookieBanners and can be configured via the cookiebanners.* prefs.
To enable it set "cookiebanners.service.mode" to 1 or 2 and restart the browser.
- nsCookieInjector: Looks up rules and injects cookies for matching top level loads.
- nsICookieBannerListService: Imports and updates the cookie banner rules.
- nsICookieBannerRule: Rules for a given domain.
- nsICookieRule: Part of nsICookieBannerRule. Holds cookie specific rules.
Depends on D153641
Differential Revision: https://phabricator.services.mozilla.com/D153642
Prior to this patch, one would need to manually instantiate a copy of a
string from a preference on the main thread in order to access it in a
threadsafe manner on another thread.
This patch adds support for a `DataMutexString` threadsafe type for
mirror: always type StaticPrefs, and works similarly to the existing
atomic types.
Differential Revision: https://phabricator.services.mozilla.com/D153829
- Remove the preference and corresponding tests.
- nsMathMLmencloseFrame continues to implement the radical notation for
now, since it's still used by nsMathMLmsqrtFrame. Ideally, we should
refactor our code so that msqrt/mroot share the same implementation.
Differential Revision: https://phabricator.services.mozilla.com/D154194
Purge HTTP disk cache using backgroundtasks
Motivation:
In the History settings preferences panel you may choose to
`Clear History when Firefox closes` - which sets the
`privacy.sanitize.sanitizeOnShutdown` pref.
If the `Cache` checkbox is also checked it sets the
`privacy.clearOnShutdown.cache` pref to true.
When both of these prefs are true `CacheObserver::ClearCacheOnShutdown()`
will return true, which will cause Firefox to clear the HTTP disk cache
during shutdown. This will block shutdown for howeverlong this takes. If the
user has a slow disk, or the user is on Windows and something is blocking the
deletion of those files, this will trigger a shutdown hang making Firefox
crash. This leads to a bad user experience as trying to start Firefox again
during this time will show the "Firefox is already running message".
Eventually a crash dump is produced. Bug 1356853 and bug 1682899 are caused
by this specific issue.
In order to avoid these crashes and a bad user experience we have
a few options:
1. Completely disable the disk cache when a user checks this box.
This option will degrade the user's browsing experience.
2. Don't delete the folder at shutdown
Whether we do this by removing the checkbox or simply not respecting
the pref value, users who already have this setting would be surprised
if the cache folder stops being deleted.
3. Use a thread pool to delete the files
While it's likely to speed up the deletion at least a little bit,
this would introduce additional complexity while not completely
fixing the issue. A slow disk will still block shutdown.
4. Delete the cache at shutdown using a separate process
This is likely the best option. It has the advantage of not blocking
shutdown while at the same time maintaining similar properties to the
existing functionality:
- The cache folder is deleted at shutdown.
- Has the same behaviour if Firefox gets killed or crashes for different issues.
- Behaves similarly if the OS is forcefully shutdown during or before we begin to purge.
- Additionaly, because we rename the folder prior to dispatching the background task, if the purging isn't completed we
- don't rebuild the cache from an incomplete folder on next restart
- are able to resume the purging after Firefox startup
A particularly special case is the Windows shutdown.
If the user shuts down windows that will try to close Firefox. If the shutdown
takes too long, the user will see the "Close anyway" button and may click
it thus preventing the cache purge to complete.
When using a background task we have a similar situation, but the button won't
even appear. So after the next Firefox restart we will check if the cache
needs to be purged.
Largely, the new behaviour will be:
- At shutdown we conditionally dispatch a background task to delete the folder
- If creating the process fails (for some reason) we fallback to the old way
of synchronously deleting the folder.
- The task will then try to delete the folder in the background
- If for some reason it fails, we will dispatch a new background task shortly
after Firefox restarts to clean up the old folders.
Differential Revision: https://phabricator.services.mozilla.com/D126339
By making image loading in <embed> and <object> behave more like when
an <iframe> loads an image, we can make sure that the synthetic
document generated is process switched if the image is cross
origin. This is done by making image loading in nsObjectLoadingContent
follow the document loading path.
We also make sure that we pass the image size back to the embedder
element to not get stuck with the intrinsic size.
To avoid named targeting being able to target these synthetic
documents, as well as showing up in `Window.frames` and being counted
in `Window.length`, we keep a filtered list of non-synthetic browsing
contexts for that use-case.
This feature is controlled by two prefs:
* browser.opaqueResponseBlocking.syntheticBrowsingContext
This triggers the creation of synthetic documents for images loaded
in <object> or embed.
* browser.opaqueResponseBlocking.syntheticBrowsingContext.filter
This turns on the filtering of synthetic browsing contexts in named
targeting, `Window.length` and `Window.frames`.
Differential Revision: https://phabricator.services.mozilla.com/D148117
On most ARM devices the integrated GPUs and their drivers are
usually better optimized for GLES than desktop GL. Thus lets
prefer GLES on ARM builds, potentially reducing bug and improving
performance.
In case of v3d this is also needed to turn on HW-WR by default
as we disable it due to the first default GL context not supporting
GL >= 3.0.
Notes:
- Unfortunately we can't straightly use `StaticPrefs` in `glxtest`
- We need to ask for a 2.x context as GLES defaults to 1.x. Asking
for 2.x should, however, should give us a 3.x/4.x one if supported.
Differential Revision: https://phabricator.services.mozilla.com/D154506
We have unshipped these since forever, no point in keeping the pref
around. Move the relevant tests to chrome ref/mochitests.
Differential Revision: https://phabricator.services.mozilla.com/D154152
We have unshipped these since forever, no point in keeping the pref
around. Move the relevant tests to chrome ref/mochitests.
Differential Revision: https://phabricator.services.mozilla.com/D154152
This is my silly mistake. I set reverted value to the prefs and the expectation
of WPTs. We need to enable them in late beta and release and disable them in
early beta and nightly.
Differential Revision: https://phabricator.services.mozilla.com/D153885
`increaseFontSize`, `decreaseFontSize`, `gethtml`, `heading` and `readonly`
commands were disabled for a year in all channels, but no regression reports
have been filed. Therefore, we can delete the commands and the telemetry
probes.
Note that `cmd_getContents` command which is the internal command of `gethtml`
is not used in comm-central too. Therefore, this patch deletes the command
handler, `nsClipboardGetContentsCommand`, and `Command::GetHTML` too.
Differential Revision: https://phabricator.services.mozilla.com/D153720
Otherwise seemingly lightweight but unusual calls like
drawArrays(offset:1.5billion) will try to allocate a very large gpu
buffer, which sometimes takes a very long time.
This is unusual and we shouldn't encourage it, so let's just add a
limit. 10M is 160MB, which is generally big enough but not too big.
Differential Revision: https://phabricator.services.mozilla.com/D153533
Both Chrome and Edge on Windows also move the swipe-to-nav arrow icon, the
distance of move seems to be a fixed value, it doesn't depend on the browser
window size. So we also use a fixed value, 100px here.
Chrome on Mac also moves the icon, but in a slightly different way. The icon is
a semicircle shape, it never leaves the edge of the browser window even if it's
moving during swipe gestures. So we introduce a new preference named
"browser.swipe.navigation-icon-move-distance" to implement platform dependent
swipe-to-nav icon behaviors. As of now the value on platforms other than Windows
is zero so that the icon never moves on the platforms.
Depends on D152951
Differential Revision: https://phabricator.services.mozilla.com/D150433
We want to signal content processes to cancel content JS unconditionally on shutdown.
In the case of parent shutdown this has to happen as early as "quit-application-granted", given that both extensions and session storage shutdown rely on the possibility to interact with content processes (which is not possible when they are inside long running JS).
In addition in the case of a normal child shutdown we cancel content JS execution, too.
For now we put this behind the pref "dom.abort_script_on_child_shutdown" which remains default off.
Depends on D150539
Differential Revision: https://phabricator.services.mozilla.com/D150598
These flags are usually initialized very early on, but because child processes are
pre-allocated and then later specialized for a specific process type, we need to
reset them later. This patch adds a new API for this that has some extra assertions.
Differential Revision: https://phabricator.services.mozilla.com/D152373
We want to signal content processes to cancel content JS unconditionally on shutdown.
In the case of parent shutdown this has to happen as early as "quit-application-granted", given that both extensions and session storage shutdown rely on the possibility to interact with content processes (which is not possible when they are inside long running JS).
In addition in the case of a normal child shutdown we cancel content JS execution, too.
For now we put this behind the pref "dom.abort_script_on_child_shutdown" which remains default off.
Depends on D150539
Differential Revision: https://phabricator.services.mozilla.com/D150598
Both Chrome and Edge on Windows also move the swipe-to-nav arrow icon, the
distance of move seems to be a fixed value, it doesn't depend on the browser
window size. So we also use a fixed value, 100px here.
Chrome on Mac also moves the icon, but in a slightly different way. The icon is
a semicircle shape, it never leaves the edge of the browser window even if it's
moving during swipe gestures. So we introduce a new preference named
"browser.swipe.navigation-icon-move-distance" to implement platform dependent
swipe-to-nav icon behaviors. As of now the value on platforms other than Windows
is zero so that the icon never moves on the platforms.
Differential Revision: https://phabricator.services.mozilla.com/D150433
Video scaling to RGB with VideoProcessor seems to have better quality than Video scaling to YUV with VideoProcessor.
It seems better to disable yuv video overlay on Windows for now.
Differential Revision: https://phabricator.services.mozilla.com/D152534
Implement the new dominant axis locking mode for the apz.axis_lock.mode
preference. When using this mode, we do not use the traditional axis locks.
Instead we only consider the input pan displacement for the axis with
a larger value, zeroing out the displacement on the opposite axis.
Differential Revision: https://phabricator.services.mozilla.com/D152104
There's a large list of dynamic preferences in the ui. tree
but none of them should contain personally identifiable data.
Differential Revision: https://phabricator.services.mozilla.com/D152340
Add a pref for MouseEvent.region since that wasn't un-exposed. No other
browser supports it so we can probably safely remove it, but just in
case.
Differential Revision: https://phabricator.services.mozilla.com/D152274
Implement the new dominant axis locking mode for the apz.axis_lock.mode
preference. When using this mode, we do not use the traditional axis locks.
Instead we only consider the input pan displacement for the axis with
a larger value, zeroing out the displacement on the opposite axis.
Differential Revision: https://phabricator.services.mozilla.com/D152104
This patch adds two telemetry probes.
1. The counter of classified third-party email trackers in different
categories.
2. The counter of whether the email tracker is loaded under a email
webapp.
We use a list of known email webapp domains to check if the top-level
content is an email webapp.
Differential Revision: https://phabricator.services.mozilla.com/D151523
This patch adds two telemetry probes.
1. The counter of classified third-party email trackers in different
categories.
2. The counter of whether the email tracker is loaded under a email
webapp.
We use a list of known email webapp domains to check if the top-level
content is an email webapp.
Differential Revision: https://phabricator.services.mozilla.com/D151523
We want to signal content processes to cancel content JS unconditionally on shutdown.
In the case of parent shutdown this has to happen as early as "quit-application-granted", given that both extensions and session storage shutdown rely on the possibility to interact with content processes (which is not possible when they are inside long running JS).
In addition in the case of a normal child shutdown we cancel content JS execution, too.
For now we put this behind the pref "dom.abort_script_on_child_shutdown" which remains default off.
Depends on D150539
Differential Revision: https://phabricator.services.mozilla.com/D150598
When the session storage prefs are enabled, GeckoSession updateSessionState will provide the bundle of information, including zoom, scroll, and form data, to the delegate. Currently works for Fission and on Fenix.
Differential Revision: https://phabricator.services.mozilla.com/D148215
The suggested solution for this bug is to disable browser.fixup.alternate.enabled
unless toggled by the user, and to add telemetry to the preference so that if we
find users rarely use the option, we can safely remove the feature in a future release.
Many tests rely on expecting URI's to be modified, so I modified them so that they
should not expect the prefix or suffix to be modified.
Differential Revision: https://phabricator.services.mozilla.com/D147795
This patch introduces animation-composition longhand but we don't
accept it in @keyframe rule for now. I will support this for @keyframe
in the patch series.
Besides, the shorthand of animation doesn't include animation-composition.
The spec issue is: https://github.com/w3c/csswg-drafts/issues/6946.
We could fix the shorthand once this spec issue gets updated.
Differential Revision: https://phabricator.services.mozilla.com/D150299
When the session storage prefs are enabled, GeckoSession updateSessionState will provide the bundle of information, including zoom, scroll, and form data, to the delegate. Currently works for Fission and on Fenix.
Differential Revision: https://phabricator.services.mozilla.com/D148215
`vaapitest()` is meant to be a sanity check. If it failed there's
likely something very broken about the driver and we log gfx
warnings accordingly, allowing to debug the problem.
Ensure to force-disable VAAPI in this case but still allow users
to enable the feature in blocklisted cases.
While on it add some additional fixes for issues encoutered while
testing:
- `InitVAAPIConfig()` was not run on X11-only builds, wrongly
setting `sLayersSupportsHardwareVideoDecoding` to `true` there
on allowlisted drivers. Thus replace `MOZ_WAYLAND` with
`MOZ_WIDGET_GTK`, ensuring the "Wayland support missing" warning
is shown in `about:support`.
- `UserForceEnable` must be run before `ForceDisable`, otherwise an
assert is triggered on debug builds. Reorder this.
- `GetFeatureStatus` was run twice for
`FEATURE_HARDWARE_VIDEO_DECODING`, once in `InitAcceleration()` in the
common code path, the again in `InitVAAPIConfig()`. Untangle the common
code path to only run `InitVAAPIConfig()`.
- Use the chance to turn `media.hardware-video-decoding.enabled` into a
static pref so it matches `media.hardware-video-decoding.force-enabled`
Differential Revision: https://phabricator.services.mozilla.com/D150959
`vaapitest()` is meant to be a sanity check. If it failed there's
likely something very broken about the driver and we log gfx
warnings accordingly, allowing to debug the problem.
Ensure to force-disable VAAPI in this case but still allow users
to enable the feature in blocklisted cases.
While on it add some additional fixes for issues encoutered while
testing:
- `InitVAAPIConfig()` was not run on X11-only builds, wrongly
setting `sLayersSupportsHardwareVideoDecoding` to `true` there
on allowlisted drivers. Thus replace `MOZ_WAYLAND` with
`MOZ_WIDGET_GTK`, ensuring the "Wayland support missing" warning
is shown in `about:support`.
- `UserForceEnable` must be run before `ForceDisable`, otherwise an
assert is triggered on debug builds. Reorder this.
- `GetFeatureStatus` was run twice for
`FEATURE_HARDWARE_VIDEO_DECODING`, once in `InitAcceleration()` in the
common code path, the again in `InitVAAPIConfig()`. Untangle the common
code path to only run `InitVAAPIConfig()`.
- Use the chance to turn `media.hardware-video-decoding.enabled` into a
static pref so it matches `media.hardware-video-decoding.force-enabled`
Differential Revision: https://phabricator.services.mozilla.com/D150959
If dedicated thread for out-of-process WebGL exists, compositor thread tasks are not delayed by WebGL tasks.
And Bug 1712486 requests that WebGL run on non-compositor thread.
Differential Revision: https://phabricator.services.mozilla.com/D151210
There are still some weird bugs about the media engine inside when enabling the video playback. So use a pref to switch the video playback for testing.
The pref should be removed after we finish implementing video playback on via the media engine.
Differential Revision: https://phabricator.services.mozilla.com/D145156
There are still some weird bugs about the media engine inside when enabling the video playback. So use a pref to switch the video playback for testing.
The pref should be removed after we finish implementing video playback on via the media engine.
Differential Revision: https://phabricator.services.mozilla.com/D145156
This disables the outdated, incorrect implementation of the
Reporting API. The current implementation was only enabled
on Nightly builds, but given its current state it does not
even make sense there.
Differential Revision: https://phabricator.services.mozilla.com/D149873