test_notification_permissions.html (1993B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 Tests that the Notification.requestPermission and navigator.permissions.query 5 return values are consistent with the stored permission. 6 https://bugzilla.mozilla.org/show_bug.cgi?id=1589754 7 --> 8 <head> 9 <title>Notification permissions and permissions API</title> 10 <script src="/tests/SimpleTest/SimpleTest.js"></script> 11 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"> 12 </head> 13 <body> 14 <p id="display"></p> 15 <div id="content" style="display: none"> 16 </div> 17 <pre id="test"> 18 <script class="testbody"> 19 20 add_task(async function test_notifications_permission() { 21 await SpecialPowers.pushPrefEnv({ 22 set: [ 23 // Automatically dismiss the permission request when it appears. 24 ["dom.webnotifications.requireuserinteraction", true], 25 ], 26 }); 27 28 async function testPermissionInWindow(win) { 29 async function checkPermission(perm, expectedResult, expectedPermission) { 30 await SpecialPowers.pushPermissions([ 31 { 32 type: "desktop-notification", 33 allow: SpecialPowers.Ci.nsIPermissionManager[perm], 34 context: document, 35 }, 36 ]); 37 is( 38 await win.Notification.requestPermission(), 39 expectedResult, 40 `expected requestPermission() result for permission ${perm}` 41 ); 42 43 let result = 44 await win.navigator.permissions.query({ name: "notifications" }); 45 is( 46 result.state, 47 expectedPermission, 48 `expected permissions API result for permission ${perm}` 49 ); 50 } 51 52 await checkPermission("UNKNOWN_ACTION", "default", "prompt"); 53 await checkPermission("ALLOW_ACTION", "granted", "granted"); 54 await checkPermission("DENY_ACTION", "denied", "denied"); 55 await checkPermission("PROMPT_ACTION", "default", "prompt"); 56 } 57 58 var win = window.open("blank.html"); 59 await new Promise(resolve => { win.onload = resolve; }); 60 await testPermissionInWindow(win); 61 win.close(); 62 }); 63 64 </script> 65 </pre> 66 </body> 67 </html>