page-visibility.https.html (1655B)
1 <!DOCTYPE html> 2 <html> 3 <body> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script src="/resources/testdriver.js"></script> 7 <script src="/resources/testdriver-vendor.js"></script> 8 <script src="/page-visibility/resources/window_state_context.js"></script> 9 <script src="../resources/orientation-event-helpers.js"></script> 10 <script> 11 'use strict'; 12 13 promise_test(async (t) => { 14 const helper = new SensorTestHelper(t, 'devicemotion'); 15 await helper.grantSensorsPermissions(); 16 await helper.initializeSensors(); 17 18 const motionData = generateMotionData(0, 0, 0, 19 0, 0, 0, 20 0, 0, 0); 21 22 await helper.setData(motionData); 23 const event = getExpectedMotionEvent(motionData); 24 await waitForEvent(event); 25 26 const {minimize, restore} = window_state_context(t); 27 await minimize(); 28 assert_true(document.hidden); 29 30 let hiddenEventPromise = new Promise((resolve, reject) => { 31 window.addEventListener( 32 'devicemotion', 33 event => { 34 if (document.hidden) { 35 reject(); 36 } else { 37 resolve(); 38 } 39 }, 40 { once: true }); 41 }); 42 43 // devicemotion events fire every 16ms when active, so we sleep for a while 44 // here to make sure we're not actually getting any events. 45 await new Promise(resolve => { t.step_timeout(resolve, 100); }); 46 await restore(); 47 assert_false(document.hidden); 48 return Promise.all([hiddenEventPromise, waitForEvent(event)]); 49 }, 'Tests to check that devicemotion events are not fired when the page is not visible.'); 50 </script> 51 </body> 52 </html>