notify-event-top-level-navigation.https.html (2135B)
1 <!DOCTYPE html> 2 <meta name="timeout" content="long"> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <script src="/resources/testdriver.js"></script> 6 <script src="/resources/testdriver-actions.js"></script> 7 <script src="/resources/testdriver-vendor.js"></script> 8 <script src="/common/utils.js"></script> 9 <script src="/common/dispatcher/dispatcher.js"></script> 10 <script src="/common/get-host-info.sub.js"></script> 11 <script src="resources/utils.js"></script> 12 <title>Test that fenced frame notifyEvent() prevents top-level navigation</title> 13 14 <body> 15 <script> 16 promise_test(async (t) => { 17 const fencedframe = await attachFencedFrameContext( 18 {generator_api: 'fledge'}); 19 t.add_cleanup(async () => document.body.removeChild(fencedframe.element)); 20 21 let notify_result = new Promise((resolve) => { 22 fencedframe.element.addEventListener('fencedtreeclick', () => { 23 resolve('notified'); 24 }); 25 }); 26 27 await fencedframe.execute(() => { 28 document.addEventListener('click', (e) => { 29 window.fence.notifyEvent(e); 30 }); 31 }); 32 33 let actions = new test_driver.Actions(); 34 await actions.pointerMove(10, 10, {origin: fencedframe.element}) 35 .pointerDown() 36 .pointerUp() 37 .send(); 38 39 await notify_result; 40 41 // Once `notifyEvent` has resolved, user activation has been consumed in the 42 // fenced frame, so navigating `_unfencedTop` should fail. 43 let opened_key = token(); 44 await fencedframe.execute((opened) => { 45 let opened_url = generateURL('embeddee.html', [opened]); 46 // TODO(averge): Replace this with a pop-up navigation once we require 47 // user activation for pop-up navigations. 48 window.open(opened_url, '_unfencedTop'); 49 }, [opened_key]); 50 51 let result = await Promise.race([ 52 nextValueFromServer(opened_key), 53 new Promise((resolve) => { 54 t.step_timeout(() => resolve('timeout'), 2000); 55 }) 56 ]); 57 58 assert_equals(result, 'timeout'); 59 }, "Test that calling notifyEvent() prevents top-level navigation on click."); 60 </script> 61 </body>