-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Reland: MSE-in-Workers: srcObject part 5: Conditionally fail worker o…
…bjectURL With the underlying leak fixed by https://chromium-review.googlesource.com/c/chromium/src/+/3704191, this change can be relanded now. Previous revert: > Revert "MSE-in-Workers: srcObject part 5: Conditionally fail worker objectURL" > > This reverts commit 6315549b8c2ece3dbbf3062c1a87347589a5e115. > > Reason for revert: This is causing failures on the WebKit Linux Leak builder > i.e. https://ci.chromium.org/ui/p/chromium/builders/ci/WebKit%20Linux%20Leak/39394/overview > > Original change's description: > > MSE-in-Workers: srcObject part 5: Conditionally fail worker objectURL > > > > If the MediaSourceInWorkersUsingHandle feature is enabled, this change > > prevents successful ability of obtaining an objectURL that would succeed > > in loading a worker-owned MediaSource. > > > > It changes the wpt tests to use handle for attachment and verifies > > expected new behavior of getHandle and that worker objectURL attachment > > fails (these tests run on experimental builds of Chromium with > > currently-experimental MediaSourceInWorkersUsingHandle feature enabled, > > just like the currently-experimental MediaSourceInWorkers feature.) > > > > References: > > Full prototype CL for the parts 1-4 that have already landed: > > https://chromium-review.googlesource.com/c/chromium/src/+/3515334 > > MSE spec issue: > > w3c/media-source#175 > > MSE spec feature updates switching from worker MSE attachment via > > object URL to attachment via srcObject MediaSourceHandle: > > * w3c/media-source#305 > > * further clarifications in discussion at > > w3c/media-source#306 (comment) > > > > BUG=878133 > > > > Change-Id: I60ddca79ee0f95c87b6d84e4f44ad9c283f359a3 > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3698231 > > Commit-Queue: Matthew Wolenetz <wolenetz@chromium.org> > > Auto-Submit: Matthew Wolenetz <wolenetz@chromium.org> > > Reviewed-by: Will Cassella <cassew@chromium.org> > > Cr-Commit-Position: refs/heads/main@{#1012712} > > Bug: 878133 > Change-Id: I1e405ae1de146d1f3183592b00a43bd3c38d849d > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3695890 > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> > Commit-Queue: Nidhi Jaju <nidhijaju@chromium.org> > Owners-Override: Nidhi Jaju <nidhijaju@chromium.org> > Cr-Commit-Position: refs/heads/main@{#1012823} Bug: 878133 Change-Id: I56e4ecd4d8b58d9d58ed3c575b0fb52f596b6fae Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3708465 Reviewed-by: Will Cassella <cassew@chromium.org> Commit-Queue: Matthew Wolenetz <wolenetz@chromium.org> Cr-Commit-Position: refs/heads/main@{#1014755}
- Loading branch information
1 parent
3f4defa
commit 9567120
Showing
14 changed files
with
146 additions
and
48 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
13 changes: 13 additions & 0 deletions
13
media-source/dedicated-worker/mediasource-worker-get-objecturl.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
importScripts("mediasource-worker-util.js"); | ||
|
||
// Note, we do not use testharness.js utilities within the worker context | ||
// because it also communicates using postMessage to the main HTML document's | ||
// harness, and would confuse the test case message parsing there. | ||
|
||
onmessage = function(evt) { | ||
postMessage({ subject: messageSubject.ERROR, info: "No message expected by Worker"}); | ||
}; | ||
|
||
let util = new MediaSourceWorkerUtil(); | ||
|
||
postMessage({ subject: messageSubject.OBJECT_URL, info: URL.createObjectURL(util.mediaSource) }); |
48 changes: 48 additions & 0 deletions
48
media-source/dedicated-worker/mediasource-worker-handle.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<title>Test MediaSource object and handle creation, with MediaSource in dedicated worker</title> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="mediasource-message-util.js"></script> | ||
<script> | ||
|
||
async_test(t => { | ||
// Fail fast if MSE-in-Workers is not supported. | ||
assert_true(MediaSource.hasOwnProperty("canConstructInDedicatedWorker"), "MediaSource hasOwnProperty 'canConstructInDedicatedWorker'"); | ||
assert_true(MediaSource.canConstructInDedicatedWorker, "MediaSource.canConstructInDedicatedWorker"); | ||
assert_true(window.hasOwnProperty("MediaSourceHandle"), "window must have MediaSourceHandle visibility"); | ||
|
||
let worker = new Worker("mediasource-worker-play.js"); | ||
worker.onmessage = t.step_func(e => { | ||
let subject = e.data.subject; | ||
assert_true(subject != undefined, "message must have a subject field"); | ||
switch (subject) { | ||
case messageSubject.ERROR: | ||
assert_unreached("Worker error: " + e.data.info); | ||
break; | ||
case messageSubject.HANDLE: | ||
const handle = e.data.info; | ||
assert_not_equals(handle, null, "must have a non-null MediaSourceHandle"); | ||
assert_true(handle instanceof MediaSourceHandle, "must be a MediaSourceHandle"); | ||
t.done(); | ||
break; | ||
default: | ||
assert_unreached("Unexpected message subject: " + subject); | ||
|
||
} | ||
}); | ||
}, "Test main context receipt of postMessage'd MediaSourceHandle from DedicatedWorker MediaSource"); | ||
|
||
if (MediaSource.hasOwnProperty("canConstructInDedicatedWorker") && MediaSource.canConstructInDedicatedWorker === true) { | ||
// If implementation claims support for MSE-in-Workers, then fetch and run | ||
// some tests directly in another dedicated worker and get their results | ||
// merged into those from this page. | ||
fetch_tests_from_worker(new Worker("mediasource-worker-handle.js")); | ||
} else { | ||
// Otherwise, fetch and run a test that verifies lack of support of | ||
// MediaSource construction in another dedicated worker. | ||
fetch_tests_from_worker(new Worker("mediasource-worker-must-fail-if-unsupported.js")); | ||
} | ||
|
||
</script> | ||
</html> |
45 changes: 45 additions & 0 deletions
45
media-source/dedicated-worker/mediasource-worker-handle.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
importScripts("/resources/testharness.js"); | ||
|
||
test(t => { | ||
// The Window test html conditionally fetches and runs these tests only if the | ||
// implementation exposes a true-valued static canConstructInDedicatedWorker | ||
// attribute on MediaSource in the Window context. So, the implementation must | ||
// agree on support here in the dedicated worker context. | ||
|
||
// Ensure we're executing in a dedicated worker context. | ||
assert_true(self instanceof DedicatedWorkerGlobalScope, "self instanceof DedicatedWorkerGlobalScope"); | ||
assert_true(MediaSource.hasOwnProperty("canConstructInDedicatedWorker", "DedicatedWorker MediaSource hasOwnProperty 'canConstructInDedicatedWorker'")); | ||
assert_true(MediaSource.canConstructInDedicatedWorker, "DedicatedWorker MediaSource.canConstructInDedicatedWorker"); | ||
}, "MediaSource in DedicatedWorker context must have true-valued canConstructInDedicatedWorker if Window context had it"); | ||
|
||
test(t => { | ||
assert_true("getHandle" in MediaSource.prototype, "dedicated worker MediaSource must have getHandle"); | ||
assert_true(self.hasOwnProperty("MediaSourceHandle"), "dedicated worker must have MediaSourceHandle visibility"); | ||
}, "MediaSource prototype in DedicatedWorker context must have getHandle, and worker must have MediaSourceHandle"); | ||
|
||
test(t => { | ||
const ms = new MediaSource(); | ||
assert_equals(ms.readyState, "closed"); | ||
}, "MediaSource construction succeeds with initial closed readyState in DedicatedWorker"); | ||
|
||
test(t => { | ||
const ms = new MediaSource(); | ||
const handle = ms.getHandle(); | ||
assert_not_equals(handle, null, "must have a non-null getHandle result"); | ||
assert_true(handle instanceof MediaSourceHandle, "must be a MediaSourceHandle"); | ||
}, "mediaSource.getHandle() in DedicatedWorker returns a MediaSourceHandle"); | ||
|
||
test(t => { | ||
const ms = new MediaSource(); | ||
const handle1 = ms.getHandle(); | ||
let handle2 = null; | ||
assert_throws_dom("InvalidStateError", function() | ||
{ | ||
handle2 = ms.getHandle(); | ||
}, "getting second handle from MediaSource instance"); | ||
assert_equals(handle2, null, "getting second handle from same MediaSource must have failed"); | ||
assert_not_equals(handle1, null, "must have a non-null result of the first getHandle"); | ||
assert_true(handle1 instanceof MediaSourceHandle, "first getHandle result must be a MediaSourceHandle"); | ||
}, "mediaSource.getHandle() must not succeed more than precisely once for a MediaSource instance"); | ||
|
||
done(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters