diff --git a/mediacapture-streams/MediaStreamTrack-iframe-audio-transfer.https.html b/mediacapture-streams/MediaStreamTrack-iframe-audio-transfer.https.html
index e1df23a24a135ab..963f42c4cbbb89a 100644
--- a/mediacapture-streams/MediaStreamTrack-iframe-audio-transfer.https.html
+++ b/mediacapture-streams/MediaStreamTrack-iframe-audio-transfer.https.html
@@ -2,9 +2,12 @@
MediaStreamTrack transfer to iframe
+
+
+
+
-
diff --git a/speculation-rules/prerender/restriction-screen-capture.https.html b/speculation-rules/prerender/restriction-screen-capture.https.html
index e4b958d338a9a88..2cd7fb662f2c7e8 100644
--- a/speculation-rules/prerender/restriction-screen-capture.https.html
+++ b/speculation-rules/prerender/restriction-screen-capture.https.html
@@ -1,5 +1,5 @@
-Access to the Screen Capture API is deferred
+Prerendering cannot invoke the Screen Capture API
@@ -12,8 +12,7 @@
promise_test(async t => {
const uid = token();
- const bc = new PrerenderChannel('test-channel', uid);
- t.add_cleanup(_ => bc.close());
+ const bc = new PrerenderChannel('prerender-channel', uid);
const gotMessage = new Promise(resolve => {
bc.addEventListener('message', e => {
@@ -22,35 +21,15 @@
once: true
});
});
- const url = `resources/screen-capture.https.html?uid=${uid}`;
- window.open(url, '_blank', 'noopener');
+ // Start prerendering a page that attempts to invoke the Screen Capture API.
+ // This API is activated-gated so it's expected to fail:
+ // https://wicg.github.io/nav-speculation/prerendering.html#implicitly-restricted
+ startPrerendering(`resources/screen-capture.https.html?uid=${uid}`);
const result = await gotMessage;
- const expected = [
- {
- event: 'started waiting navigator.mediaDevices.getDisplayMedia',
- prerendering: true
- },
- {
- event: 'prerendering change',
- prerendering: false
- },
- {
- event: 'finished waiting navigator.mediaDevices.getDisplayMedia',
- prerendering: false
- },
- ];
- assert_equals(result.length, expected.length);
- for (let i = 0; i < result.length; i++) {
- assert_equals(result[i].event, expected[i].event, `event[${i}]`);
- assert_equals(result[i].prerendering, expected[i].prerendering,
- `prerendering[${i}]`);
- }
-
- // Send a close signal to PrerenderEventCollector on the prerendered page.
- new PrerenderChannel('close', uid).postMessage('');
-}, `The access to the Screen Capture API should be deferred until the
- prerendered page is activated`);
+ assert_equals(result, 'InvalidStateError');
+ bc.close();
+}, `prerendering pages should not be able to invoke the Screen Capture API`);