badging.https.html (2822B)
1 <!DOCTYPE html> 2 <title>Test Badging 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 const createRemoteFunctionForServiceWorkerTest = () => { 14 return async (method, service_worker_url) => { 15 const getController = () => { 16 if (navigator.serviceWorker.controller) { 17 return navigator.serviceWorker.controller; 18 } 19 return new Promise(resolve => { 20 navigator.serviceWorker.addEventListener('controllerchange', () => { 21 resolve(navigator.serviceWorker.controller); 22 }); 23 }); 24 }; 25 26 await navigator.serviceWorker.register( 27 service_worker_url, { scope: location.href }); 28 const ctrl = await getController(); 29 30 return new Promise(resolve => { 31 ctrl.postMessage(method); 32 navigator.serviceWorker.onmessage = e => { 33 resolve(e.data.name); 34 } 35 }); 36 } 37 } 38 39 promise_test(async () => { 40 const frame = attachFencedFrameContext(); 41 const error_name = await frame.execute(() => { 42 return navigator.setAppBadge(1).catch(e => e.name); 43 }); 44 assert_equals(error_name, 45 "NotAllowedError", 46 "The Badge API should cause exception in a fencedfarme"); 47 }, 'setAppBadge should fail inside a fenced frame'); 48 49 promise_test(async () => { 50 const frame = attachFencedFrameContext(); 51 const error_name = await frame.execute(() => { 52 return navigator.clearAppBadge().catch(e => e.name); 53 }); 54 assert_equals(error_name, 55 "NotAllowedError", 56 "The Badge API should cause exception in a fencedfarme"); 57 }, 'clearAppBadge should fail inside a fenced frame'); 58 59 promise_test(async () => { 60 const frame = attachFencedFrameContext(); 61 const error_name = await frame.execute( 62 createRemoteFunctionForServiceWorkerTest(), 63 ['setAppBadge', 'badging-sw.js']); 64 assert_equals(error_name, "NotAllowedError", 65 "The Badge API should cause exception from a service worker " + 66 "in a fencedfarme"); 67 }, 'setAppBadge should fail from a service worker inside a fenced frame'); 68 69 promise_test(async () => { 70 const frame = attachFencedFrameContext(); 71 const error_name = await frame.execute( 72 createRemoteFunctionForServiceWorkerTest(), 73 ['clearAppBadge', 'badging-sw.js']); 74 assert_equals(error_name, "NotAllowedError", 75 "The Badge API should cause exception from a service worker " + 76 "in a fencedfarme"); 77 }, 'clearAppBadge should fail from a service worker inside a fenced frame'); 78 </script> 79 </body>