| <!DOCTYPE html> | |
| <title>Same-origin prerendering cannot access some APIs</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="../resources/utils.js"></script> | |
| <script src="resources/utils.js"></script> | |
| <body> | |
| <script> | |
| setup(() => assertSpeculationRulesIsSupported()); | |
| test_prerender_restricted( | |
| () => navigator.clipboard.writeText(location.href), | |
| "NotAllowedError", "prerendering pages should not be able to access the clipboard via the Async Clipboard API"); | |
| test_prerender_restricted(async () => { | |
| const canvas = document.createElement('canvas'); | |
| document.body.appendChild(canvas); | |
| await canvas.requestPointerLock(); | |
| }, "WrongDocumentError", "prerendering pages should not be able to access the pointer-lock API"); | |
| test_prerender_restricted(async () => { | |
| const div = document.createElement('div'); | |
| document.body.appendChild(div); | |
| await div.requestFullscreen(); | |
| }, "TypeError", "prerendering pages should not be able to access the FullScreen API"); | |
| test_prerender_defer(() => new Promise( | |
| resolve => navigator.geolocation.getCurrentPosition(p => resolve(p.toString()))), | |
| "Geolocation API should be deferred"); | |
| </script> |