Use nsLiteralCstring to store the default instead of an std::string, and
update interface appropriately.
We could go one step further and only use literal string to represent
algorithm instead of storing it in a nsCString at some point, but that
would slightly reduce the flexibility of current interface.
Differential Revision: https://phabricator.services.mozilla.com/D188888
This should be good enough to catch regressions. The main thing is we paint something in the fragments of the iframe on the second and following pages and this should catch it if we fail to.
Fuzz amounts are from an all reftests try run.
Differential Revision: https://phabricator.services.mozilla.com/D190246
After bug 1840478, non-inherited custom properties using their initial
values are represented as absent from `ComputedCustomProperties` in
order to save memory. Wherever the values of such properties are
requested, it is necessary to fallback to any registered initial value.
However, this makes difficult to properly enumerate custom properties
for exposure via the `CSSStyleDeclaration.item()` API and indeed our
current implementation only exposes the properties actually present in
`ComputedCustomProperties`.
Additionally, such a representation conflicts with pre-existent
representation of guaranteed-invalid values as absent values, causing
some issues e.g. bad handling of invalid at computed-value time [1] [2].
This patch changes `ComputedCustomProperties` so that registered initial
values are always stored in the `non_inherited` map, immediately fixing
the issue with `CSSStyleDeclaration.item()` and preparing follow-up
work on guaranteed-invalid values.
To avoid excessive increase of memory usage, the `non_inherited` map
becomes ref-counted. The associated Stylist contains an up-to-date
ComputedCustomProperties with registered custom properties that have
initial values, and the `non_inherited` map can generally just be
shallow-cloned from it.
A new test `get-computed-style-enumeration.html` is added to make sure
custom properties are correctly exposed when enumerating
`CSSStyleDeclaration` as a list. A similar but more restricted version
already exists: `cssstyledeclaration-registered-custom-properties.html`.
Two test cases are also added to `determine-registration.html` in order
to cover some issue previously detected during the review of
`get_custom_property_initial_values`.
[1] https://drafts.csswg.org/css-variables-2/#invalid-at-computed-value-time
[2] https://bugzilla.mozilla.org/show_bug.cgi?id=1855946
Differential Revision: https://phabricator.services.mozilla.com/D189999
Use the platform to differentiate x64 and aarch64 builds, not the
symbol. This makes add-on-devel and fuzzing builds match what we're
already doing for shippable and devedition.
Differential Revision: https://phabricator.services.mozilla.com/D190042
In `NewMaybeExternalString` we have a fast path for short Latin1 strings. This case is
very common.
Changing the cache to handle these too is very effective: the `lookupInline` method
has a hit rate of at least 90% on Speedometer 3.
Differential Revision: https://phabricator.services.mozilla.com/D190206
We can go through quite a few more timers these days, since timers are stored now in an array and iterating through that is fast.
Also, relying on timer value for another thread or low priority timers does prevent idle tasks to run in some cases, and now that more timers
are iterated through, that behavior can be tweaked.
For RefreshDriver this is taking the simple approach and just let idle tasks to run if RefreshDriver isn't ticking. We do start RefreshDriverTimer pretty
much always when something in DOM or layout is changing.
Differential Revision: https://phabricator.services.mozilla.com/D189909
Another bug caused by GObject floating references :')
The GVariant returned by builder_end() is floating, and the way
g_variant_builder_add_value works is that it _only_ takes a reference if
floating.
So basically if you have a RefPtr<GVariant> with a floating reference,
then pass it to g_variant_builder_add_value, the reference is "stolen",
but RefPtr doesn't know about it.
It really sucks.
Differential Revision: https://phabricator.services.mozilla.com/D190240
Use nsLiteralCstring to store the default instead of an std::string, and
update interface appropriately.
We could go one step further and only use literal string to represent
algorithm instead of storing it in a nsCString at some point, but that
would slightly reduce the flexibility of current interface.
Differential Revision: https://phabricator.services.mozilla.com/D188888
Reading this code I found I did not know what the position the start was being
set to. The patch renames this to make it clear that it's being set to the
current position.
Differential Revision: https://phabricator.services.mozilla.com/D190191
These members specify the start of the nursery (usually they are zero, but can
be different in generational zeal mode). They are constant between collections.
Calling them 'current' implies that they change often and this could lead to
confusion with currentChunk, which does change between collections. It's
simpler to remove the 'current'.
Differential Revision: https://phabricator.services.mozilla.com/D190189
Instead of using get_free_port(), pass in 0 as the port number and
allow geckodriver to select a free port. Then read the port from the
geckodriver output at startup. This should prevent rare race
conditions where we happen to select a port that later turns out to be
used.
Differential Revision: https://phabricator.services.mozilla.com/D189927
Instead of passing in a port selected in the fixture, pass in 0 as the
port, allowing geckodriver to select the port, and then read the port
number from the utput in stdout.
This should prevent us trying to reuse an already bound port in
a race-free way.
Differential Revision: https://phabricator.services.mozilla.com/D189926
Previously this bound to a free port, but we weren't allowing
connections because we checked the Host header against the specified
port (i.e. 0) rather than the bound port.
Differential Revision: https://phabricator.services.mozilla.com/D189925
The preference "test.events.async.enabled" controls the usage of
widget events in general, but Marionette doesn't support all of
them yet. To get widget events enabled for web-platform tests
those unsupported event types need to still synthesize the event.
Differential Revision: https://phabricator.services.mozilla.com/D188296
This converts addon suggestions from dynamic to standard results and removes
support for review stars. Other things worth noting:
* I removed `suggestion.is_top_pick` support because addons should always be top
picks. This lets us simplify the code and tests.
* This changes the overall icon box size for addons from 60px to 52px, since it
combines the icon rules for Pocket and addons. I checked with Josh, and he
says that's fine ([Slack](https://mozilla.slack.com/archives/C03LYL79G82/p1696471328852089?thread_ts=1696446640.986769&cid=C03LYL79G82))
* Currently the default `-webkit-line-clamp` is 3 and MDN and Pocket rows
override it by setting it to 2. I think the opposite makes more sense, i.e.
the default should be 2, since there are no row types that need it to be 3.
This lets me avoid adding a rule for addon rows. (`-webkit-line-clamp` was
added in D185247)
Depends on D190138
Differential Revision: https://phabricator.services.mozilla.com/D190145
Counted ref of TextureHostWrapperD3D11 is added to GpuProcessD3D11TextureMap::UpdatingTextureHolder. Then TextureHostWrapperD3D11 remains alive during updating Texture.
TextureCheck is added to TextureHostWrapperD3D11::~TextureHostWrapperD3D11(). It is for preventing the crash by null pointer deref.
NotifyNotUsed() call to wrapped TextureHost is removed, since TextureHostWrapperD3D11 holds compositable ref of wrapped TextureHost and the NotifyNotUsed() is called when compositable ref becomes 0. Then NotifyNotUsed() call to wrapped TextureHost is not necessary.
Differential Revision: https://phabricator.services.mozilla.com/D190243
This sets `has-url` on dynamic-result-type rows when their view template
contains a `.urlbarView-url` element. This fixes the missing separator in both
addon and weather rows.
This does not address one remaining problem: When `wrap` is set, the separator
is still missing in addon rows because they don't handle wrapping. Prior to
bug 1855639, they just always showed their title separator, and since they don't
wrap their URL, that was fine. I'd like to handle that separately by converting
addon rows from dynamic to standard. I filed bug 1857137 for that.
Differential Revision: https://phabricator.services.mozilla.com/D190144
As we will need to re-initialize the wmf decoder module, which takes
longer time sometime resulting IPC timeout. Therefore, make it async in
order to not interfere IPC response.
Differential Revision: https://phabricator.services.mozilla.com/D190224