Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<body></body>
<script>
'use strict';
const { HTTPS_ORIGIN, HTTPS_NOTSAMESITE_ORIGIN } = get_host_info();
const PATH = location.pathname.substring(0, location.pathname.lastIndexOf('/') + 1);
const IFRAME_PATH = PATH + 'resources/iframe-helper.html';
function load_iframe(src, permission_policy, test_name) {
let iframe = document.createElement('iframe');
return new Promise((resolve, reject) => {
iframe.onload = () => {
iframe.contentWindow.postMessage({type: test_name}, '*');
resolve(iframe);
}
iframe.src = src;
iframe.allow = permission_policy;
document.body.appendChild(iframe);
});
}
promise_test(async t => {
const src = HTTPS_NOTSAMESITE_ORIGIN + IFRAME_PATH;
await load_iframe(src, /*permission_policy=*/"", "SummarizerCreate");
return new Promise((resolve, reject) => {
window.onmessage = message => {
if (message.data == 'Failure: NotAllowedError') {
resolve();
} else {
reject(message.data)
}
}
});
}, "Throw a 'NotAllowedError' when creating Summarizer within cross-origin iframe");
promise_test(async t => {
const src = HTTPS_NOTSAMESITE_ORIGIN + IFRAME_PATH;
load_iframe(src, "summarizer", "SummarizerCreate");
return new Promise((resolve, reject) => {
window.onmessage = message => {
if (message.data == 'Success') {
resolve();
} else {
reject(message.data)
}
}
});
}, "Summarizer can be created within cross-origin iframe with permission policy");
promise_test(async t => {
const src = HTTPS_ORIGIN + IFRAME_PATH;
load_iframe(src, /*permission_policy=*/"", "SummarizerCreate");
return new Promise((resolve, reject) => {
window.onmessage = message => {
if (message.data == 'Success') {
resolve();
} else {
reject(message.data)
}
}
});
}, "Summarizer can be used within same-origin iframe");
promise_test(async t => {
const src = HTTPS_NOTSAMESITE_ORIGIN + IFRAME_PATH;
load_iframe(src, /*permission_policy=*/"", "SummarizerAvailability");
return new Promise((resolve, reject) => {
window.onmessage = message => {
if (message.data == 'unavailable') {
resolve();
} else {
reject(message.data)
}
}
});
}, "Summarizer is unavailable within cross-origin iframe");
promise_test(async t => {
const src = HTTPS_NOTSAMESITE_ORIGIN + IFRAME_PATH;
load_iframe(src, "summarizer", "SummarizerAvailability");
return new Promise((resolve, reject) => {
window.onmessage = message => {
if (message.data != 'unavailable') {
resolve();
} else {
reject(message.data)
}
}
});
}, "Summarizer is available within cross-origin iframe with permission policy");
promise_test(async t => {
const src = HTTPS_ORIGIN + IFRAME_PATH;
load_iframe(src, /*permission_policy=*/"", "SummarizerAvailability");
return new Promise((resolve, reject) => {
window.onmessage = message => {
if (message.data != 'unavailable') {
resolve();
} else {
reject(message.data)
}
}
});
}, "Summarizer is available within same-origin iframe");
</script>