218 lines
7.4 KiB
HTML
218 lines
7.4 KiB
HTML
<!DOCTYPE html>
|
|
<title>Test fenced frame does not allow to register background sync</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script src="resources/utils.js"></script>
|
|
<script src="/common/get-host-info.sub.js"></script>
|
|
<script src="/common/utils.js"></script>
|
|
<body>
|
|
<script>
|
|
const background_sync_register_key = token();
|
|
const fenced_frame_url = 'resources/background-sync-inner.https.html';
|
|
const fenced_frame_url_for_service_worker_test =
|
|
'resources/background-sync-sw-inner.https.html';
|
|
|
|
const generateFencedFrameUrl = (params, is_worker_test = false) => {
|
|
const searchParams = new URLSearchParams(params);
|
|
const frame_url = is_worker_test ?
|
|
fenced_frame_url_for_service_worker_test : fenced_frame_url;
|
|
|
|
return generateURL(`${frame_url}?${searchParams.toString()}`,
|
|
[background_sync_register_key]);
|
|
};
|
|
|
|
async function background_sync_test(url, expected_text, message) {
|
|
attachFencedFrame(url)
|
|
|
|
// Get the result for the top-level fenced frame.
|
|
const fenced_frame_result =
|
|
await nextValueFromServer(background_sync_register_key);
|
|
assert_equals(fenced_frame_result, expected_text, message);
|
|
};
|
|
|
|
const background_sync_message =
|
|
"Background Sync is not allowed in fenced frames.";
|
|
const periodic_background_sync_message =
|
|
"Periodic Background Sync is not allowed in fenced frames.";
|
|
|
|
promise_test(async (t) => {
|
|
const method = 'register';
|
|
const frame_url = generateFencedFrameUrl({method});
|
|
const expected_message = "Failed to execute 'register' on 'SyncManager': " +
|
|
background_sync_message;
|
|
await background_sync_test(
|
|
frame_url,
|
|
expected_message,
|
|
'register() is disallowed inside a same-origin fenced frame');
|
|
|
|
const cross_origin_frame_url = getRemoteOriginURL(frame_url);
|
|
await background_sync_test(
|
|
cross_origin_frame_url,
|
|
expected_message,
|
|
'register() is disallowed inside a cross-origin fenced frame');
|
|
}, 'background sync register');
|
|
|
|
promise_test(async (t) => {
|
|
const method = 'getTags';
|
|
const frame_url = generateFencedFrameUrl({method});
|
|
const expected_message = background_sync_message;
|
|
await background_sync_test(
|
|
frame_url,
|
|
expected_message,
|
|
'getTags() is disallowed inside a same-origin fenced frame');
|
|
|
|
const cross_origin_frame_url = getRemoteOriginURL(frame_url);
|
|
await background_sync_test(
|
|
cross_origin_frame_url,
|
|
expected_message,
|
|
'getTags() is disallowed inside a cross-origin fenced frame');
|
|
}, 'background sync getTags');
|
|
|
|
promise_test(async (t) => {
|
|
const method = 'register';
|
|
const frame_url = generateFencedFrameUrl({method}, true);
|
|
const expected_message = "Failed to execute 'register' on 'SyncManager': " +
|
|
background_sync_message;
|
|
await background_sync_test(
|
|
frame_url,
|
|
expected_message,
|
|
'register() is disallowed inside a same-origin fenced frame');
|
|
const cross_origin_frame_url = getRemoteOriginURL(frame_url);
|
|
await background_sync_test(
|
|
cross_origin_frame_url,
|
|
expected_message,
|
|
'register() is disallowed inside a cross-origin fenced frame');
|
|
}, 'background sync register in service worker');
|
|
|
|
promise_test(async (t) => {
|
|
const method = 'getTags';
|
|
const frame_url = generateFencedFrameUrl({method}, true);
|
|
const expected_message = background_sync_message;
|
|
await background_sync_test(
|
|
frame_url,
|
|
expected_message,
|
|
'getTags() is disallowed inside a same-origin fenced frame');
|
|
const cross_origin_frame_url = getRemoteOriginURL(frame_url);
|
|
await background_sync_test(
|
|
cross_origin_frame_url,
|
|
expected_message,
|
|
'getTags() is disallowed inside a cross-origin fenced frame');
|
|
}, 'background sync getTags in service worker');
|
|
|
|
promise_test(async (t) => {
|
|
const params = {
|
|
method: 'register',
|
|
periodic: true
|
|
};
|
|
const frame_url = generateFencedFrameUrl(params)
|
|
const expected_message = "Failed to execute 'register' on " +
|
|
"'PeriodicSyncManager': " + periodic_background_sync_message;
|
|
await background_sync_test(
|
|
frame_url,
|
|
expected_message,
|
|
'register() is disallowed inside a same-origin fenced frame');
|
|
|
|
const cross_origin_frame_url = getRemoteOriginURL(frame_url);
|
|
await background_sync_test(
|
|
cross_origin_frame_url,
|
|
expected_message,
|
|
'register() is disallowed inside a cross-origin fenced frame');
|
|
}, 'periodic sync register');
|
|
|
|
promise_test(async (t) => {
|
|
const params = {
|
|
method: 'getTags',
|
|
periodic: true
|
|
};
|
|
const frame_url = generateFencedFrameUrl(params)
|
|
const expected_message = periodic_background_sync_message;
|
|
await background_sync_test(
|
|
frame_url,
|
|
expected_message,
|
|
'getTags() is disallowed inside a same-origin fenced frame');
|
|
|
|
const cross_origin_frame_url = getRemoteOriginURL(frame_url);
|
|
await background_sync_test(
|
|
cross_origin_frame_url,
|
|
expected_message,
|
|
'getTags() is disallowed inside a cross-origin fenced frame');
|
|
}, 'periodic sync getTags');
|
|
|
|
promise_test(async (t) => {
|
|
const params = {
|
|
method: 'unregister',
|
|
periodic: true
|
|
};
|
|
const frame_url = generateFencedFrameUrl(params)
|
|
const expected_message = periodic_background_sync_message;
|
|
await background_sync_test(
|
|
frame_url,
|
|
expected_message,
|
|
'unregister() is disallowed inside a same-origin fenced frame');
|
|
|
|
const cross_origin_frame_url = getRemoteOriginURL(frame_url);
|
|
await background_sync_test(
|
|
cross_origin_frame_url,
|
|
expected_message,
|
|
'unregister() is disallowed inside a cross-origin fenced frame');
|
|
}, 'periodic sync unregister');
|
|
|
|
promise_test(async (t) => {
|
|
const params = {
|
|
method: 'register',
|
|
periodic: true
|
|
};
|
|
const frame_url = generateFencedFrameUrl(params, true)
|
|
const expected_message = "Failed to execute 'register' on " +
|
|
"'PeriodicSyncManager': " + periodic_background_sync_message;
|
|
await background_sync_test(
|
|
frame_url,
|
|
expected_message,
|
|
'register() is disallowed inside a same-origin fenced frame');
|
|
|
|
const cross_origin_frame_url = getRemoteOriginURL(frame_url);
|
|
await background_sync_test(
|
|
cross_origin_frame_url,
|
|
expected_message,
|
|
'register() is disallowed inside a cross-origin fenced frame');
|
|
}, 'periodic sync register in service worker');
|
|
|
|
promise_test(async (t) => {
|
|
const params = {
|
|
method: 'getTags',
|
|
periodic: true
|
|
};
|
|
const frame_url = generateFencedFrameUrl(params, true)
|
|
const expected_message = periodic_background_sync_message;
|
|
await background_sync_test(
|
|
frame_url,
|
|
expected_message,
|
|
'getTags() is disallowed inside a same-origin fenced frame');
|
|
|
|
const cross_origin_frame_url = getRemoteOriginURL(frame_url);
|
|
await background_sync_test(
|
|
cross_origin_frame_url,
|
|
expected_message,
|
|
'getTags() is disallowed inside a cross-origin fenced frame');
|
|
}, 'periodic sync getTags in service worker');
|
|
|
|
promise_test(async (t) => {
|
|
const params = {
|
|
method: 'unregister',
|
|
periodic: true
|
|
};
|
|
const frame_url = generateFencedFrameUrl(params, true)
|
|
const expected_message = periodic_background_sync_message;
|
|
await background_sync_test(
|
|
frame_url,
|
|
expected_message,
|
|
'unregister() is disallowed inside a same-origin fenced frame');
|
|
|
|
const cross_origin_frame_url = getRemoteOriginURL(frame_url);
|
|
await background_sync_test(
|
|
cross_origin_frame_url,
|
|
expected_message,
|
|
'unregister() is disallowed inside a cross-origin fenced frame');
|
|
}, 'periodic sync unregister in service worker');
|
|
</script>
|
|
</body>
|