IndexedDB database operations are written such that they must execute
synchronously. For this reason, the add/put operation reads/writes its
Blobs to disk in a synchronous fashion. However, with the introduction
of SendStream-backed Blobs for large (>1 MiB) blobs whose contents are
streamed to the parent replacing nsStringInputStream-backed Blobs
(whose contents were sent up in a single IPC message that might exceed
the size limit and cause a crash), this has no longer been a safe
assumption. However, the problems weren't immediately obvious because
most pre-WASM Blobs are smaller than the 1MiB threshold and even when
they exceeded the size, their memory-backed contents could rapidly be
sent to the parent via IPC, making NS_BASE_STREAM_WOULD_BLOCK errors
rare/hard to reproduce. (rr and its enforced single-threading is a
good way to reproduce, however. Also, see the testing patch on the
bug that introduces artificial delays into SendStream.)
Included SpecialPowersObserver.jsm minor changes to "CreateFiles":
- appendRelativePath is used instead of appendPath because appendPath
only allows a single path component to be appended. In other words,
file creation is limited to files at the root of the profile
directory using appendPath, which is needlessly limiting.
- outStream is now closed even if no data is provided. This is
essential on windows where file deletion only occurs when all handles
are closed. Without this fix, "RemoveFiles" side-effect of deleting
the created files might not take effect until garbage collection runs
and collects the outStream.
In Web Animations specification, if the animation effect is in none of the any phase, it define as 'Idle' phase. [1]
But, in the gecko, it defined as 'Null' phase.
So we will need to use 'Idle' phase for consistency.
[1] https://w3c.github.io/web-animations/#idle-phase
MozReview-Commit-ID: FlPpYOqdM4X
--HG--
extra : rebase_source : ec294c84f9c77a42d6128e3d43380b80fc130513
Implement the mapping between EffectCompositor::CascadeLevel in Gecko and
EffectCompositor_CascadeLevel in Servo, so we can pass it as a parameter into
Gecko_GetAnimationRule.
MozReview-Commit-ID: GRedooyGE8c
--HG--
extra : rebase_source : c18d54dabb093242c66d46be8ca03424a2c6ca78
1. Add one new FFI, Gecko_GetAnimationRule, which will try
to update the animation rule and retrieve a ServoAnimationRule
from EffectSet.
2. Add GetServoAnimationRule, which calls Animation::ComposeStyle and updates
mElementsToRestyle.
3. There is no eRestyle_{CSSAnimations|CSSTransitions}, so we use
eRestyle_Self and eRestyle_Subtree for stylo.
MozReview-Commit-ID: 9RpJurPSFMk
--HG--
extra : rebase_source : 6f1246b73a920aee86faeeaccc42b7f51ed2a6c8
nsDOMNavigationTiming is not thread-safe ref-counted, so it's better not to
put it into RefPtr because we might call those functions from servo side.
Actually, nsDOMNavigationTiming is held by the document, and the document
must still live in these functions.
MozReview-Commit-ID: AyZ4k749btm
--HG--
extra : rebase_source : 06c0f3654a32483594b80042ec854d3c09a21d9c
We need to call GetEffectSet() from Servo code, which passes an
immutable reference to GeckoElement, so it's better to make dom::Element
const.
MozReview-Commit-ID: GqQEB7BwkJA
--HG--
extra : rebase_source : 4b025f56949d8327781be26d1607e6d9f4668f2f
1. Call Servo's interpolation from KeyframeEffectReadOnly::ComposeStyle().
2. Store the results into ServoAnimationRule.
MozReview-Commit-ID: LOp2mbXforg
--HG--
extra : rebase_source : eda5e275e81f2413b2a729e8d06663eae496c15c
1. Introduce ServoAnimationRule, which is an equivalent of AnimValuesStyleRule.
2. Wrap ServoAnimationRule and AnimValuesStyleRule into a struct, and
use it as the parameter of Animation::ComposeStyle and
KeyframeEffectReadOnly::ComposeStyle.
3. Uncompute the RawServoAnimationValues in ServoAnimationRule when we
need it.
MozReview-Commit-ID: HahXDYBCAhH
--HG--
extra : rebase_source : cd8c6f3a8409abf97f04af888953ff0e77d98348