| <!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> |