blob: d57ea9edabce4b440d2b3eb9c4276244cb333471 [file] [log] [blame]
<!doctype html>
<html>
<head>
<title>Notifications: Requesting notification permission in a detached context should not crash.</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="resources/test-helpers.js"></script>
</head>
<body>
<script>
// Tests that notifications created in a different context do not crash when said
// context gets detached, and events are still being fired on it.
if (window.testRunner) {
testRunner.setPermission('notifications', 'granted', location.origin, location.origin);
testRunner.setCanOpenWindows();
}
async_test(test => {
const remoteWindow = window.open('resources/window-detached-context.html');
let remoteNotificationObj = null;
window.addEventListener('message', test.step_func(event => {
switch (event.data) {
case 'opened':
assert_equals(remoteNotificationObj, null);
remoteNotificationObj = remoteWindow.Notification;
remoteWindow.close();
break;
case 'closed':
assert_not_equals(remoteNotificationObj, null);
// Permission is always set to denied for detached objects.
assert_equals(remoteNotificationObj.permission, 'denied');
// The following call should not throw an exception.
remoteNotificationObj.requestPermission(function () {});
test.done();
break;
default:
assert_unreached('Unrecognized message from the opened window.');
break;
}
}));
}, 'Requesting notification permission in a detached context should not crash.');
</script>
</body>
</html>