diff options
Diffstat (limited to 'testing/web-platform/tests/fenced-frame/revoke-unfenced-top-navigation.https.html')
-rw-r--r-- | testing/web-platform/tests/fenced-frame/revoke-unfenced-top-navigation.https.html | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/testing/web-platform/tests/fenced-frame/revoke-unfenced-top-navigation.https.html b/testing/web-platform/tests/fenced-frame/revoke-unfenced-top-navigation.https.html new file mode 100644 index 0000000000..873404768f --- /dev/null +++ b/testing/web-platform/tests/fenced-frame/revoke-unfenced-top-navigation.https.html @@ -0,0 +1,47 @@ +<!DOCTYPE html> +<title>Test that window.fence.disableUntrustedNetwork disables + _unfencedTop navigations.</title> +<meta name="timeout" content="long"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/utils.js"></script> +<script src="/common/dispatcher/dispatcher.js"></script> +<script src="resources/utils.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<script src="/resources/testdriver-vendor.js"></script> + +<body> +<script> + +promise_test(async(t) => { + const fencedframe = await attachFencedFrameContext({generator_api: 'fledge'}); + await fencedframe.execute(() => {}); + + const actions = new test_driver.Actions(); + await actions.setContext(window) + .pointerMove(0, 0, {origin: fencedframe.element}) + .pointerDown() + .pointerUp() + .send(); + + const destination_url = new URL('resources/unreached.https.html', location.href); + fencedframe.execute(async (url) => { + await window.fence.disableUntrustedNetwork(); + // After disabling network, _unfencedTop navigations should not work. + assert_true(navigator.userActivation.isActive, + 'The frame should have user activation.') + const result = window.open(url, '_unfencedTop'); + assert_equals(result, null, '_unfencedTop did not return a window.'); + }, [destination_url]); + + // Wait a few seconds. + await new Promise((resolve, reject) => + t.step_timeout(() => resolve('timeout'), 3000)); + + // Confirm that the fenced frame is still there. + await fencedframe.execute(() => {}); +}, 'window.fence.disableUntrustedNetwork disables _unfencedTop navigations'); + +</script> +</body> |