I needed empty blobs in MediaRecorder and seeing that there was no
Blob::CreateEmptyBlob, nor an export of EmptyBlobImpl, I thought
Blob::CreateEmptyBlob would be the cleaner solution, so here it is.
Differential Revision: https://phabricator.services.mozilla.com/D35310
--HG--
extra : moz-landing-system : lando
This moves the impl of PushBlobRunnable from a runnable to MozPromise, which
let's us more easily modularize it's parts (gather the blob, fire dataavailable)
to make individual code paths more explicit.
Differential Revision: https://phabricator.services.mozilla.com/D17813
--HG--
extra : moz-landing-system : lando
This first of all does some refactoring of how metadata is encoded in
MediaEncoder. This is now guided by the new Muxer class. If we're ready to pass
data to the muxer and it does not have metadata yet, we provide metadata before
giving it any media data. This metadata is passed to the muxer in a single call.
The metadata provided in this call must stay valid for the entire recording.
This removes MediaEncoder::GetEncodedMetadata().
This also removes the ctor argument from the WebMWriter since it can now rely on
the single SetMetadata() instead.
To comply with the ContainerWriter::SetMetadata() docs,
WebMWriter::SetMetadata() will now also sanity check metadata.
ContainerWriter instances are updated somewhat, to accommodate these changes.
Lastly, and most important, the new Muxer class manages muxing of the (up to)
two tracks into a single container, ensuring that timestamps increase
monotonically throughout a recording.
Differential Revision: https://phabricator.services.mozilla.com/D35306
--HG--
extra : moz-landing-system : lando
Update MediaEncoder to pass frames to the muxer in order of their time stamps.
This should prevent the currently possible scenario where audio and video
frames are written with non-monotonically increasing timestamps (in violation
of the webm spec).
Differential Revision: https://phabricator.services.mozilla.com/D35388
--HG--
extra : moz-landing-system : lando
MediaQueue provides a better interface for interleaving frames when writing to
the muxer (this change will follow in another changeset). The queue interface
provides a nicer abstraction than manually managing a nsTArray.
Differential Revision: https://phabricator.services.mozilla.com/D35387
--HG--
extra : moz-landing-system : lando
This changes EncodedFrame to behave more like MediaData, so that EncodedFrame
can be used with the MediaQueue data structure. It also provides a somewhat
more consistent interface across media data types.
Differential Revision: https://phabricator.services.mozilla.com/D35386
--HG--
extra : moz-landing-system : lando
Move the responsibility of adjusting opus frame timestamps to the MediaEncoder.
This was previously done by the EbmlComposer, but doing so in the MediaEncoder
means we can have greater control over handling of time codes and interleaving
of frames.
Differential Revision: https://phabricator.services.mozilla.com/D35385
--HG--
extra : moz-landing-system : lando
Remove EncodedFrameContainer and clean up areas where it was used.
EncodedFrameContainer provided a wrapper around an
nsTArray<RefPtr<EncodedFrame>>, but it simplifies the code to simply expose
this array. Also clean up unused enums in EncodedFrame, and clean up some of
the outdated comments for our encoded frame handling.
Differential Revision: https://phabricator.services.mozilla.com/D35384
--HG--
rename : dom/media/encoder/EncodedFrameContainer.h => dom/media/encoder/EncodedFrame.h
extra : moz-landing-system : lando
Separating the encode and mux steps allows for better control over interleaving
audio and video data. If encode and mux are done in a single step it's possible
to mux large amounts of audio or video data which should have been interleaved
with the other data type to give correctly ordered time stamps in the target
container.
Differential Revision: https://phabricator.services.mozilla.com/D35383
--HG--
extra : moz-landing-system : lando
In ColumnSetFrame's reflow methods, mCBReflowInput is equal to
mParentReflowInput in most of the cases.
However, a multicol <button> has the HTMLButtonControl as the outermost
frame, where ColumnSetWrapper is its -moz-button-content anonymous
child. In this case, mCBReflowInput is HTMLButtonControl's reflow input.
To get the correct computedBSize of ColumnSetWrapper, we need to use
mParentReflowInput.
Differential Revision: https://phabricator.services.mozilla.com/D41497
--HG--
extra : moz-landing-system : lando
This makes prefs definition simpler, more consistent, and less error-prone.
The patch also changes the form of the "not Android" condition to one used more
widely in all.js.
Differential Revision: https://phabricator.services.mozilla.com/D41299
--HG--
extra : moz-landing-system : lando
This makes prefs definition simpler, more consistent, and less error-prone.
Differential Revision: https://phabricator.services.mozilla.com/D41298
--HG--
extra : moz-landing-system : lando
This bug became an unexpected PASS on tier-2 android platform after
landing the fixes for bug 1572197. The fixes in that bug were
specifically to fix this test on windows platforms, so it's not
surprising that it also fixes it on android.
Differential Revision: https://phabricator.services.mozilla.com/D41493
--HG--
extra : moz-landing-system : lando
Automatic update from web-platform-tests
Clean-up: Updated URLs in comments referencing web-share and web-share-target.
- Web Share spec has moved from WICG to W3C.
- Updated some Web Share Target URLs to point to the WICG spec, not the
explainer.
- Updated some Web Share Target URLs to point to the WICG spec, not a
draft on the pr-preview site.
- Removed some notes that say Web Share Target is part of an unlaunched
experiment.
Change-Id: I48132388192d773d962d13bc9361778ddeb66e4e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1742258
Reviewed-by: Dominick Ng <dominickn@chromium.org>
Reviewed-by: Ted Choc <tedchoc@chromium.org>
Commit-Queue: Matt Giuca <mgiuca@chromium.org>
Cr-Commit-Position: refs/heads/master@{#685457}
--
wpt-commits: 40c12bca52d4a695eb36e2887d93675251a3e3ef
wpt-pr: 18331
Automatic update from web-platform-tests
[cookie-store] Deflake service worker registration
Instead of attempting to unregister previously installed service workers
at the beginning of a test, use `add_completion_callback` to unregister
them at test completion. This will deflake the tests when they are run
multiple times without restarts (`--rerun`).
The alternative is to do what many tests in service-workers do:
unregister service workers at the start, but wait for newly installed
service workers to become activated and use `registration.active`
instead of `registration.installing`, which is a bit more complex.
--
wpt-commits: cc9dc6bb113ac7e04aee6b8e4157fbe8eb2d731c
wpt-pr: 18324
Automatic update from web-platform-tests
Use correct URLLoaderFactory in an unload handler.
Context and behavior implemented + expected before and after the CL
===================================================================
A content::RenderFrameImpl stores |subresource_loader_factories| that
are used for all requests/XHRs/etc initiated by the frame. We don't
currently swap the RenderFrame when committing another same-process
document (this future work is tracked by https://crbug.com/936696).
The URLLoaderFactory for handling http/https requests contains a
|request_initiator_site_lock| in network::URLLoaderFactoryParams.
This lock limits what network::ResourceRequest::request_initiator may be
used. The lock is currently used in various, security-sensitive
features like CORB, CORP, Sec-Fetch-Site. In the future the lock may be
consulted for all requests handled by the NetworkService (see
https://crbug.com/920634 and also https://crbug.com/961614).
When a cross-origin, same-process navigation commits, then:
- The commit IPC carries a bundle of |subresource_loader_factories|.
The new |subresource_loader_factories| should be used by the newly
committed document.
- Before committing the new document, the old document's unload
handler needs to run. The unload handler needs to use the old
|subresource_loader_factories| (e.g. because otherwise
|URLLoaderFactoryParams::request_initiator_site_lock| might
not match the document origin).
The problematic behavior before this CL
=======================================
Before the CL, content::RenderFrameImpl::CommitNavigationWithParams
would start using the new |subresource_loader_factories| before running
the unload handler of the old document (i.e. before calling
blink::WebNavigationControl::CommitNavigation on |frame_|).
The CL adds WPT tests that fail when the old, incorrect behavior
happens. The new test initiates a beacon request from a frame's unload
handler and verifies the Sec-Fetch-Site request header associated with
this request. The header depends on the correct
request_initiator_site_lock / on using the correct URLLoaderFactory.
The fixes in this CL
====================
This CL introduces the |call_before_attaching_new_document| callback
that is taken by blink::WebNavigationControl::CommitNavigation and
called *after* finishing running the old document's unload handler
and *before* the new document can initiate any requests of its own.
This fix is a bit icky. In the long-term the callback can be avoided if
the |subresource_loader_factories| are stored in a per-document object
(i.e. if we swap RenderFrame on every document change, or if we replace
RenderFrame with a RenderDocument - see https://crbug.com/936696). The
CL adds a TODO to call this out.
The fix had to refactor BuildServiceWorkerNetworkProviderForNavigation
to make sure that it uses the |new_loader_factories| (even though they
have not yet been passes to SetLoaderFactoryBundle).
The fix also refactored GetLoaderFactoryBundleFromCreator to a separate
method, so that setting the creator-based factories can also be
postponed to |call_before_attaching_new_document|.
Bug: 986577
Change-Id: If0209df61b0305ec43b5179bfdc1b9f8668a88b5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1716084
Reviewed-by: Wei Li <weili@chromium.org>
Reviewed-by: Tommy Li <tommycli@chromium.org>
Reviewed-by: Yutaka Hirano <yhirano@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Łukasz Anforowicz <lukasza@chromium.org>
Cr-Commit-Position: refs/heads/master@{#685290}
--
wpt-commits: c0b0a0d72066faf8838420b601bcd99d94842b22
wpt-pr: 18061
Automatic update from web-platform-tests
Don't apply filter or clip-path in SVGForeignObjectPainter.
SVG foreign objects always have PaintLayers now, since they are
stacking contexts. The filter and clip-path are applied by
PaintLayerPainter.
Therefore we shouldn't try to apply them in SVGForeignObjectPainter,
nor should we early-out if they "fail" to apply.
Bug: 989673
Change-Id: I4a20da8f8ea85d377b25d8376d591f36f172d854
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1743256
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Cr-Commit-Position: refs/heads/master@{#685285}
--
wpt-commits: 2a0b3d690c0b56aeb189dc3042f4b36e1acd0564
wpt-pr: 18332
Automatic update from web-platform-tests
Update tests to check XRInputSource profiles + gamepad.id
Per the latest WebXR spec, XRInputSource.gamepad.id must be the empty
string. Update the browser and layout tests to actually check this.
Also update the browser tests that run on Windows to check the profiles
array contents against expected values for WMR and OpenVR.
Bug: 989114, 942201
Change-Id: I36dff42cff55728d5d90384623623ea871d3a13e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1742439
Commit-Queue: Jacob DeWitt <jacde@chromium.org>
Reviewed-by: Brian Sheedy <bsheedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#685270}
--
wpt-commits: d328e5763f3d76e8b5f9e62030e9d4e578931c78
wpt-pr: 18330
Automatic update from web-platform-tests
CSS: Test height and width do not inherit
WPT to verify the width and height properties do
not inherit.
https://drafts.csswg.org/css-sizing-3/#propdef-width
Change-Id: Ib35db7d4d5b55a5bc1b56db38eff49ec0fb4c427
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1741785
Reviewed-by: Emil A Eklund <eae@chromium.org>
Commit-Queue: Emil A Eklund <eae@chromium.org>
Auto-Submit: Eric Willigers <ericwilligers@chromium.org>
Cr-Commit-Position: refs/heads/master@{#685251}
--
wpt-commits: 9c1737440fc7001ea43189e6a56a8e04905401e1
wpt-pr: 18327
Automatic update from web-platform-tests
CSS: Test dominant-baseline initial value 'auto'
The CSS Inline Layout spec has been updated to
show the initial value of dominant-baseline as
'auto', matching SVG 1.1 and browsers.
https://drafts.csswg.org/css-inline/#dominant-baseline-propertyhttps://github.com/w3c/csswg-drafts/issues/4115
Change-Id: Ib2dbdf91a9535c4d149aa773b61302c36c360305
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1741445
Auto-Submit: Eric Willigers <ericwilligers@chromium.org>
Commit-Queue: Emil A Eklund <eae@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Cr-Commit-Position: refs/heads/master@{#685218}
--
wpt-commits: b1fd38d1568441ff1d6a93c04a7eedb5458cf30a
wpt-pr: 18325
Automatic update from web-platform-tests
[Contacts] Add contacts wpt tests with a mock contacts implementation.
- Create a mocked contacts interface that requires user agents to set
the contacts to return when queried.
- Implement the mocked contacts interface for chromium.
- Move chromium web_tests to the wpt folder. I've added one test and
removed one test.
Change-Id: I8fe518eef37eedf2908b4b0ea9bec9df9ea4938f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1741915
Commit-Queue: Rayan Kanso <rayankans@chromium.org>
Reviewed-by: Peter Beverloo <peter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#685182}
--
wpt-commits: 3c2d193651aad8eabad20b0bf870614f0df9c4c8
wpt-pr: 18319