This patch:
* extracts family name matching logic from FontFamilyList::Contains into FontFamilyName::IsNamedFamily
* simplifies the loop around StretchEnumContext::EnumCallback using a range-based loop with a break
* inverts the meaning of StretchEnumContext::EnumCallback’s return value
These changes were first reviewed in D73833, but we’re separating them to help us investigate some test regressions.
Differential Revision: https://phabricator.services.mozilla.com/D77067
- Add a gfxVarReceiver for nsCSSProps.
- Recompute backdrop-filter state when notifying receivers for WebRender.
- Remove NS_NewRunableFunction calls when we know we're on main thread.
- Add assertion that recompute enabled state is called from main thread.
Differential Revision: https://phabricator.services.mozilla.com/D74975
There's no use case for stateful comparators, so they can be just plain
function pointers.
This is used in some hot places like CSS selector matching.
Differential Revision: https://phabricator.services.mozilla.com/D77084
WR may be sanitizing more fonts than just downloadable webfonts (any for
which we couldn't generate a descriptor), so we need to be more permissive
about what font types we allow that the content process would normally skip.
Differential Revision: https://phabricator.services.mozilla.com/D76608
Part 1 of this patch enables subpixel AA in more cases when there
are multiple picture cache slices. Because of this, we can enable
extra picture cache slices by default, as a performance win for
the general case.
Users who want to force subpixel AA in more cases, at the cost of
performance can manually set the about:config value called
gfx.webrender.quality.force-subpixel-aa-where-possible.
Differential Revision: https://phabricator.services.mozilla.com/D75465
In this bug we're moving away from monolithic JNI headers to class-specific
headers so that we don't have to rebuild the world every time we make a change
to a JNI interface.
Differential Revision: https://phabricator.services.mozilla.com/D75377
If the script itemizer interrupts runs on encountering Script=Unknown, the PUA character will
be shaped separately from its context and therefore OpenType features cannot take effect.
Allowing characters with Script=Unknown to be "adopted" into the surrounding run makes glyph
shaping possible, where a font wants to apply OpenType features such as ligation, kerning,
or diacritic positioning between a PUA codepoint and the adjacent non-PUA characters.
Differential Revision: https://phabricator.services.mozilla.com/D75067
I had to mess with the refcounting of Display (and hence destructors) because we create a NewRunnableMethod inside Display that holds a pointer to |this|. There are versions of NewRunnableMethod that don't take a ref but I'm not sure of the lifetime of Display, so easier to just take a ref since several of the subclasses are already refcounted.
Differential Revision: https://phabricator.services.mozilla.com/D71303
- Enable BackdropFilter pref by default
- Add function IsBackdropFilterAavailable()
- Use IsBackdropFilterAvailable for relevant WebIDL instead of pref
- Add test for BackdropFilter availability
Differential Revision: https://phabricator.services.mozilla.com/D73967
Android API 29 or later has font matcher and system font API that is for
accessing font data from native code.
Although Android's Default fonts are installed `/system/fonts`, some vendors
also install some fonts in another directories.
Example, Pixel 2's fonts are installed in `/system/fonts` and `/product/fonts`.
Differential Revision: https://phabricator.services.mozilla.com/D70533
- Enable BackdropFilter pref by default
- Add function IsBackdropFilterAavailable()
- Use IsBackdropFilterAvailable for relevant WebIDL instead of pref
- Add test for BackdropFilter availability
Differential Revision: https://phabricator.services.mozilla.com/D73967
The only caveat here is that gfxVars are not atomic, but multiple threads can
query DWM status. To solve this, changes to the var are mirrored into an atomic
and that is read instead.
DWM status changes are indicated by Windows via a window message. We use that
window message to cause the update to propagate
Differential Revision: https://phabricator.services.mozilla.com/D73743
Currently, There are multiple places that call the Win32 APIs for DWM status.
Once Win32k lockdown is enabled, this API will be unavailable and will need
to be remoted. This new function will be made to work in both parent and
content processes, and therefore all DWM queries must be directed to it.
Also, some minor cleanup because... Why not?
Differential Revision: https://phabricator.services.mozilla.com/D73742
I had to mess with the refcounting of Display (and hence destructors) because we create a NewRunnableMethod inside Display that holds a pointer to |this|. There are versions of NewRunnableMethod that don't take a ref but I'm not sure of the lifetime of Display, so easier to just take a ref since several of the subclasses are already refcounted.
Differential Revision: https://phabricator.services.mozilla.com/D71303
We have encountered issues when rolling out WebRender because the
configuration logic is quite complicated. It would serve us well to have
it in a form that we can easily test. This patch does said refactor, as
well as adds an initial set of tests.
Differential Revision: https://phabricator.services.mozilla.com/D72027