Closed Bug 1665804 Opened 4 years ago Closed 4 years ago

[wpt-sync] Sync PR 25609 - MSE-in-Workers: Cross-thread registry with stubbed attachment

Categories

(Core :: Audio/Video: Playback, task, P4)

task

Tracking

()

RESOLVED FIXED
83 Branch
Tracking Status
firefox83 --- fixed

People

(Reporter: wpt-sync, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

Sync web-platform-tests PR 25609 into mozilla-central (this bug is closed when the sync is complete).

PR: https://github.com/web-platform-tests/wpt/pull/25609
Details from upstream follow.

b'Matt Wolenetz <wolenetz@chromium.org>' wrote:

MSE-in-Workers: Cross-thread registry with stubbed attachment

Introduces a concrete CrossThreadMediaSourceAttachment with minimum
implementation necessary to enable worker thread MediaSource object URL
creation. To enable registration of worker-thread MediaSource object
URLs, which is inherent in the createObjectURL implementation, updates
MediaSourceRegistryImpl to perform registration and unregistration while
holding a mutex in the singleton, main-thread-owned, registry instance.
Mutexes previously were thought unusable for this, but that was due to
the registry previously using an Oilpan HeapHashMap bound to the main
thread's Oilpan heap. The current registry now uses a non-Oilpan
HashMap, so any thread can update the singleton so long as such
accesses or updates are mutex-protected. Also, using cross-thread task
posting to perform these tasks led to complex races whose solution is
much simpler using the mutex approach herein. See
CrossThreadMediaSourceAttachment::Unregister() for more detail.

Includes a necessary update which makes both types of attachments manage
the registered media source in appropriate Oilpan type: the cross thread
attachment must hold that reference as CrossThreadPersistent. The URL
registry implementation already unregisters all entries created on an
execution context if that context is destroyed, so this
CrossThreadPersistent registry entry will not outlive the worker
thread's context. See PublicURLManager::ContextDestroyed() for where
that logic exists already. Rationale for not also making the
SameThreadMediaSourceAttachment use a CrossThreadPersistent type is that
such type introduces a new root in all Oilpan heaps, and resulting
performance hit can be avoided by just using regular Persistents for
same thread attachments' |registered_media_source_|.

Includes new web_tests that exercise basic worker context MediaSource
construction, object URL creation and revocation (with revocation of
worker MediaSource object URL also tested on main thread). Starting an
attachment to a worker MediaSource is also tested, but is currently
expected by the test to fail until upcoming
CrossThreadMediaSourceAttachment changes land.

BUG=878133

Change-Id: I367b6610da9aca3aca7c78f4a11f571e48afc6c8
Reviewed-on: https://chromium-review.googlesource.com/2407075
WPT-Export-Revision: a07a73b80b3823003510284a334dc2afb11b9f50

Component: web-platform-tests → Audio/Video: Playback
Product: Testing → Core

CI Results

Ran 12 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 2 tests and 4 subtests

Status Summary

Firefox

OK : 1
FAIL : 5
ERROR: 1

Chrome

CRASH: 2

Safari

OK : 1
FAIL : 5
ERROR: 1

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

/media-source/dedicated-worker/mediasource-worker-attach.html
Test worker MediaSource attachment (currently should fail to attach): FAIL (Safari: FAIL)
/media-source/dedicated-worker/mediasource-worker-objecturl.html: ERROR (Chrome: CRASH, Safari: ERROR)
Test main context revocation of worker MediaSource object URL: FAIL (Safari: FAIL)
MediaSource construction succeeds with initial closed readyState in dedicated worker: FAIL (Safari: FAIL)
URL.createObjectURL(mediaSource) in dedicated worker returns a Blob URI: FAIL (Safari: FAIL)
URL.revokeObjectURL(mediaSource) in dedicated worker with two url for same MediaSource: FAIL (Safari: FAIL)

Pushed by wptsync@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/b49babad3b2a [wpt PR 25609] - MSE-in-Workers: Cross-thread registry with stubbed attachment, a=testonly https://hg.mozilla.org/integration/autoland/rev/3b819d9128f9 [wpt PR 25609] - Update wpt metadata, a=testonly
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 83 Branch
You need to log in before you can comment on or make changes to this bug.