| <!DOCTYPE html> |
| <html> |
| <body> |
| <script src="/js-test-resources/js-test.js"></script> |
| <script> |
| description("Tests that giving device motion permission in the main frame does not give access to third-party iframes."); |
| jsTestIsAsync = true; |
| |
| // If prompted, allow. |
| if (window.testRunner) |
| testRunner.setShouldAllowDeviceOrientationAndMotionAccess(true); |
| |
| onmessage = (_e) => { |
| e = _e; |
| shouldBeEqualToString("e.data", "denied"); |
| finishJSTest(); |
| }; |
| |
| internals.withUserGesture(() => { |
| DeviceMotionEvent.requestPermission().then((_result) => { |
| result = _result; |
| shouldBeEqualToString("result", "granted"); |
| // If prompted, deny. |
| if (window.testRunner) |
| testRunner.setShouldAllowDeviceOrientationAndMotionAccess(false); |
| |
| // Create third-party iframe that requests permission for itself, but this time should be rejected. |
| let testFrame = document.createElement("iframe"); |
| testFrame.src = "http://localhost:8000/device-orientation/resources/request-motion-events.html"; |
| testFrame.allow = "accelerometer;gyroscope"; |
| document.body.append(testFrame); |
| }); |
| }); |
| |
| </script> |
| </body> |
| </html> |