(This patch was first presented for review in bug 1463919, I've split it off
into its own bug here).
If the user opens a tab in the background, and that tab tries to play media,
we'll delay playing that media until the tab is brought to the foreground.
But the user can explicitly start playback of such delayed media by clicking
the "play" icon we show in the tab indicator. Then if autoplay is disabled,
we'll block the play (unless the origin is whitelisted). This is bad, as the
user has clearly indicated intent to play media in this tab.
So this patch "gesture activates" the root content document when the tab audio
indicator play button is pressed. This means the block autoplay logic will
behave as if there's been a user gesture in the tab (mouse click or keypress),
and not block the play. Gesture activation state is per document, so it does
not persist across document loads.
MozReview-Commit-ID: 3pgrADRrJqt
***
fix
--HG--
extra : rebase_source : a099cd3eedf6785a7af0b95613c5bd210e791a53
initialProcessData has the unfortunate side-effect of sending an entire copy
of all of its data to all content processes, and eagerly decoding it. For the
extension framework, this means that we wind up loading an entire copy of all
of our schema data, and of every extension's manifest and locale data, into
every process, even if we'll never need it.
The sharedData helper allows us to store an encoded copy of that data in a
shared memory region, and clone it into the current process only when we need
it, which can be a significant savings. For screenshots alone, it saves about
15K on locale and manifest data per content process, plus the size we save on
not copying schema data.
MozReview-Commit-ID: KkIOoLsBd99
--HG--
extra : rebase_source : 21cb433e8897a3d33943ebbd3d788d8d54e0844b
extra : source : 8074c985095c9951171311dac840684b915a57f6
I was hoping to avoid supporting blobs here, but some parts of the
WebExtensions framework rely on being able to store Blobs in
initialProcessData, and can't be migrated without adding blob support.
This patch adds an ordered array of BlobImpls for all extant keys, clones them
to all child processes when updating the serialized maps, and initializes
StructuredCloneData instances with indexes into the combined array.
MozReview-Commit-ID: IdSv5FHbPbE
--HG--
extra : rebase_source : 90eeb7fad21eac93582ef9244180998d22267373
extra : source : cebf1f055d1dfb505e96cebf7e4284b35a419dd6
This is the first basic implementation of a shared-memory key-value store for
JS message managers. It has one read-write endpoint in the parent process, and
separate read-only endpoints for each child-process message manager.
Changes to the parent endpoint are broadcast to the children as snapshots.
Each snapshot triggers a "change" event with a list of changed keys.
It currently has the following limitations:
- It only supports basic structured clone data. There's no support for blobs,
input streams, message ports... Blob support will be added in a follow-up
patch.
- Changes are currently only broadcast to child endpoints when flush() is
explicitly called in the parent, or when new child processes are launched.
In a follow-up, this will be changed to automatically flush after changes
when the event loop is idle.
- All set operations clone their inputs synchronously, which means that
there's no trivial way for callers to batch multiple changes to a single key
without some additional effort. It might be useful to add a
delayed-serialization option to the .set() call in a follow-up, for callers
who are sure they know what they're doing.
MozReview-Commit-ID: IM8a3UgejXU
--HG--
extra : rebase_source : 66c92d538a5485349bc789028fdc3a6806bc5d5a
extra : source : 2ebaf5f8c6055b11b11d7ec334d54ee941115d48
This class allows one read-write copy of a map in the parent process to share
data with multiple read-only copies in child processes. The maps only hold
onto data as structured clone blobs, and deserialize them each time a key is
read.
This commit only provides the bare-bones data structures. Follow-ups will add
bindings, change events, and automatic flushes.
MozReview-Commit-ID: LimwfmFBNOi
--HG--
extra : rebase_source : e43985c39bd1cfd05a2ad536b0d7f74db494a753
extra : source : c27295337b4c16e2a178106a3aa873d2a0e5a1f4
Switch to cache FTLResources per FileSource. This allows us to minimize
the memory impact of dynamic additions/removals of l10n resources to
a context on fly.
MozReview-Commit-ID: B9fxbkaU3oX
--HG--
extra : rebase_source : bc268352965c721b5692f2062a063f7fba091136
Switch to cache FTLResources per FileSource. This allows us to minimize
the memory impact of dynamic additions/removals of l10n resources to
a context on fly.
MozReview-Commit-ID: B9fxbkaU3oX
--HG--
extra : rebase_source : efad7ec156baea0924e848acb29b62a1fe0aff40
This change has WrClipId contain the ClipId type (except for clip
chains, which are handled separately) in the least significant bit of
the size_t. On 32-bit systems this limits the number of clip and spatial
nodes to 2,147,483,648 which is likely more than what WebRender can
handle.
MozReview-Commit-ID: 8ohMKqTZcKT
--HG--
extra : rebase_source : cce763be7c0637bf97e96c23f8dba5aeff34baaf
This is the result of an execution of:
> find testing/web-platform/tests/webaudio/the-audio-api -exec sed -i "s/'TypeError'/TypeError/" {} \;
MozReview-Commit-ID: 8T0RoOobxJW
--HG--
extra : rebase_source : df093a9c433c0bab78bae0dad8570ec696aa183e
extra : intermediate-source : 1f89fc574e6ccffbdf96ae74e1151c2a8442c7c3
extra : source : 30c0660089d57c5c63a1dff88a340e1e4d5779a3
This cannot happen anymore, because we're using sequence<float> and not
Float32Array in WebIDL, and sequence<float> throws when it contains Infinity or
NaN.
MozReview-Commit-ID: 9ZUbXa0viSk
--HG--
extra : rebase_source : e1783b6873caeefa1f09caf938e342f591da0056
extra : source : 5d0cce417e56935badf1e7a503f348079c8a9435
Link to the standard: https://webaudio.github.io/web-audio-api/#dom-audioparam-setvaluecurveattime
MozReview-Commit-ID: 8GwaIbQkfr2
--HG--
extra : rebase_source : aa8dd5e653de51768ff81d855fe1b8b398baa586
extra : intermediate-source : 9d34c85e0ec166fb7a117b2a85ca7cd4e98b1ceb
extra : source : d752fc72a9a35fdc0ce7b8bce94b29149eaf7639
This patch makes the QR test platforms tier-1 by default, and removes
the ad-hoc bits that were making individual QR jobs tier-1 before.
However, it also explicitly downgrades some QR jobs to tier-2 or tier-3;
comments in the yml files indicate why.
MozReview-Commit-ID: 1UfPuhcMvIW
--HG--
extra : rebase_source : a2347f6a5929246aaba7656b59c0b8f7aa4ca081
So panels provided by extensions with IDs that contain words like "inspector"
don't break.
Include test in existing panel creation test.
MozReview-Commit-ID: JerMCaKRgkl
--HG--
extra : rebase_source : 59a884cb616e22e3c6062d19d223b5670cf17225
We don't support setting the rate of an AudioParam yet, so we fail this.
MozReview-Commit-ID: 4bbnHannHvG
--HG--
extra : rebase_source : 771436213d96b352634e5af02fe62eb73cb44547
A more involved test exists as a web-platform-tests, but we can't run it because
it makes use of AudioListener AudioParam, that we don't have right now.
MozReview-Commit-ID: 8QJ12cGVRbQ
--HG--
extra : rebase_source : 6161e33d7d8ef83eb5e16a4570a770401dd672cd
In the panning formula, one of the channels is always left untouched by the
panning gain, so the current setup didn't work: it would not apply the gain to
one of the channels.
MozReview-Commit-ID: LjrTlTT2z9r
--HG--
extra : rebase_source : 29aabddc7caf16427330687acbab91f9c3047d32
Filters out empty categories when ChromeUtils.requestPerformanceMetrics() is called.
This test also:
- adds more test coverage
- uses the worker windowId when it has no linked window.
- properly walk to the worker parent
MozReview-Commit-ID: 3UH9a0UtVmx
--HG--
extra : rebase_source : 337b95466c7e7a30f881e881358d3b8d290f8f5b