payment-handler.https.html (2030B)
1 <!DOCTYPE html> 2 <title>Test Payment Handler API</title> 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-vendor.js"></script> 7 <script src="/common/utils.js"></script> 8 <script src="/common/dispatcher/dispatcher.js"></script> 9 <script src="resources/utils.js"></script> 10 11 <body> 12 <script> 13 promise_test(async () => { 14 const frame = attachFencedFrameContext(); 15 const error_name = await frame.execute(async () => { 16 navigator.serviceWorker.register( 17 "empty-worker.js", { scope: location.href }); 18 const registration = await navigator.serviceWorker.ready; 19 try { 20 registration.paymentManager; 21 } catch (e) { 22 return e.name; 23 } 24 }); 25 assert_equals(error_name, "NotAllowedError", 26 "paymentManager is not allowed in fenced frames"); 27 }, 'paymentManager should fail inside a fenced frame'); 28 29 promise_test(async () => { 30 const frame = attachFencedFrameContext(); 31 const error_name = await frame.execute(async () => { 32 const getController = () => { 33 if (navigator.serviceWorker.controller) { 34 return navigator.serviceWorker.controller; 35 } 36 return new Promise(resolve => { 37 navigator.serviceWorker.addEventListener('controllerchange', () => { 38 resolve(navigator.serviceWorker.controller); 39 }); 40 }); 41 }; 42 43 navigator.serviceWorker.register( 44 "payment-handler-sw.js", { scope: location.href }); 45 const ctrl = await getController(); 46 47 return new Promise(resolve => { 48 ctrl.postMessage("test"); 49 navigator.serviceWorker.onmessage = e => { 50 const error = e.data; 51 resolve(error.name); 52 }; 53 }); 54 }); 55 assert_equals(error_name, "NotAllowedError", 56 "paymentManager is not allowed from the service worker " + 57 "in fenced frames"); 58 }, 'paymentManager should fail from the service worker inside a fenced frame'); 59 </script> 60 </body>