forked from mirrors/gecko-dev
Bug 1841841 - Add notification tag WPT test and replace old ones r=hsingh
Differential Revision: https://phabricator.services.mozilla.com/D207179
This commit is contained in:
parent
1e447389e4
commit
8da18dbcfc
6 changed files with 57 additions and 144 deletions
|
|
@ -19,10 +19,6 @@ skip-if = ["os == 'win'"] # Bug 1411118
|
|||
https_first_disabled = true
|
||||
skip-if = ["os == 'win'"] # Bug 1411118
|
||||
|
||||
["browser_notification_replace.js"]
|
||||
https_first_disabled = true
|
||||
skip-if = ["os == 'win'"] # Bug 1422928
|
||||
|
||||
["browser_notification_tab_switching.js"]
|
||||
https_first_disabled = true
|
||||
skip-if = ["os == 'win'"] # Bug 1243263
|
||||
|
|
|
|||
|
|
@ -1,66 +0,0 @@
|
|||
"use strict";
|
||||
|
||||
let notificationURL =
|
||||
// eslint-disable-next-line @microsoft/sdl/no-insecure-url
|
||||
"http://example.org/browser/browser/base/content/test/alerts/file_dom_notifications.html";
|
||||
|
||||
add_task(async function test_notificationReplace() {
|
||||
await addNotificationPermission(notificationURL);
|
||||
|
||||
await BrowserTestUtils.withNewTab(
|
||||
{
|
||||
gBrowser,
|
||||
url: notificationURL,
|
||||
},
|
||||
async function dummyTabTask(aBrowser) {
|
||||
await SpecialPowers.spawn(aBrowser, [], async function () {
|
||||
let win = content.window.wrappedJSObject;
|
||||
let notification = win.showNotification1();
|
||||
let promiseCloseEvent = ContentTaskUtils.waitForEvent(
|
||||
notification,
|
||||
"close"
|
||||
);
|
||||
|
||||
let showEvent = await ContentTaskUtils.waitForEvent(
|
||||
notification,
|
||||
"show"
|
||||
);
|
||||
Assert.equal(
|
||||
showEvent.target.body,
|
||||
"Test body 1",
|
||||
"Showed tagged notification"
|
||||
);
|
||||
|
||||
let newNotification = win.showNotification2();
|
||||
let newShowEvent = await ContentTaskUtils.waitForEvent(
|
||||
newNotification,
|
||||
"show"
|
||||
);
|
||||
Assert.equal(
|
||||
newShowEvent.target.body,
|
||||
"Test body 2",
|
||||
"Showed new notification with same tag"
|
||||
);
|
||||
|
||||
let closeEvent = await promiseCloseEvent;
|
||||
Assert.equal(
|
||||
closeEvent.target.body,
|
||||
"Test body 1",
|
||||
"Closed previous tagged notification"
|
||||
);
|
||||
|
||||
let promiseNewCloseEvent = ContentTaskUtils.waitForEvent(
|
||||
newNotification,
|
||||
"close"
|
||||
);
|
||||
newNotification.close();
|
||||
let newCloseEvent = await promiseNewCloseEvent;
|
||||
Assert.equal(
|
||||
newCloseEvent.target.body,
|
||||
"Test body 2",
|
||||
"Closed new notification"
|
||||
);
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
10
testing/web-platform/meta/notifications/tag.https.html.ini
Normal file
10
testing/web-platform/meta/notifications/tag.https.html.ini
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
prefs: [notification.prompt.testing:true,marionette.setpermission.enabled:true]
|
||||
|
||||
[tag.https.html]
|
||||
bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1891536
|
||||
expected:
|
||||
if (os == "android"): TIMEOUT
|
||||
|
||||
[Opening two notifications with the same tag should close the first one]
|
||||
expected:
|
||||
if (os == "android"): TIMEOUT
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Notification.tag (two tags with different values)</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com/">
|
||||
<link rel="author" title="Xin Liu" href="mailto:xinx.liu@intel.com">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="common.js"></script>
|
||||
<div id=passfail></div>
|
||||
<script>
|
||||
setup({ explicit_timeout: true })
|
||||
if (hasNotificationPermission()) {
|
||||
async_test(function (t) {
|
||||
t.step(function () {
|
||||
var notification1 = null,
|
||||
notification2 = null,
|
||||
notifications = [],
|
||||
text1 = "This is the body: Room 101",
|
||||
text2 = "This is the body: Room 202"
|
||||
createPassFail("If two notifications appear: First one with the"
|
||||
+ " text \"" + text1 + "\", followed by one with the text \""
|
||||
+ text2 + "\"",
|
||||
t, closeNotifications, notifications)
|
||||
notification1 = new Notification("New Email Received", {
|
||||
body: text1,
|
||||
tag: "Tom"
|
||||
})
|
||||
notification2 = new Notification("New Email Received", {
|
||||
body: text2,
|
||||
tag: "Rose"
|
||||
})
|
||||
notifications.push(notification1)
|
||||
notifications.push(notification2)
|
||||
})
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Notification.tag (two tags with same value)</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com/">
|
||||
<link rel="author" title="Xin Liu" href="mailto:xinx.liu@intel.com">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="common.js"></script>
|
||||
<div id=passfail></div>
|
||||
<script>
|
||||
setup({ explicit_timeout: true })
|
||||
if (hasNotificationPermission()) {
|
||||
async_test(function (t) {
|
||||
t.step(function () {
|
||||
var notification1 = null,
|
||||
notification2 = null,
|
||||
notifications = [],
|
||||
text1 = "This is the body: Room 101",
|
||||
text2 = "This is the body: Room 202"
|
||||
createPassFail("If a notification with the text \""
|
||||
+ text2 + "\", replaces the notification with the text \""
|
||||
+ text1 + "\" in the same position",
|
||||
t, closeNotifications, notifications)
|
||||
notification1 = new Notification("New Email Received", {
|
||||
body: text1,
|
||||
tag: "Tom"
|
||||
})
|
||||
notification2 = new Notification("New Email Received", {
|
||||
body: text2,
|
||||
tag: "Tom"
|
||||
})
|
||||
notifications.push(notification1)
|
||||
notifications.push(notification2)
|
||||
})
|
||||
})
|
||||
}
|
||||
</script>
|
||||
47
testing/web-platform/tests/notifications/tag.https.html
Normal file
47
testing/web-platform/tests/notifications/tag.https.html
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset="utf-8">
|
||||
<title>Notification.tag (two tags with same or different value)</title>
|
||||
<link rel="author" title="Intel" href="http://www.intel.com/">
|
||||
<link rel="author" title="Xin Liu" href="mailto:xinx.liu@intel.com">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/helpers.js"></script>
|
||||
<script>
|
||||
function promiseEvent(target, eventName, syncListener) {
|
||||
return new Promise(resolve => {
|
||||
target.addEventListener(eventName, ev => {
|
||||
syncListener?.();
|
||||
resolve(ev);
|
||||
}, { once: true });
|
||||
});
|
||||
}
|
||||
|
||||
promise_setup(async () => {
|
||||
await trySettingPermission("granted");
|
||||
});
|
||||
|
||||
promise_test(async t => {
|
||||
const tom1 = new Notification("New Email to tom", {
|
||||
tag: "Tom"
|
||||
});
|
||||
t.add_cleanup(() => tom1.close());
|
||||
|
||||
let closed = false;
|
||||
const promiseCloseEvent = promiseEvent(tom1, "close", () => closed = true);
|
||||
await promiseEvent(tom1, "show");
|
||||
|
||||
const rose = new Notification("New Email to Rose", {
|
||||
tag: "Rose"
|
||||
});
|
||||
t.add_cleanup(() => rose.close());
|
||||
await promiseEvent(rose, "show");
|
||||
assert_false(closed, "Different tag should not close the first notification");
|
||||
|
||||
const tom2 = new Notification("New Email to tom", {
|
||||
tag: "Tom"
|
||||
});
|
||||
t.add_cleanup(() => tom2.close());
|
||||
|
||||
await promiseCloseEvent; // This should not timeout
|
||||
}, "Opening two notifications with the same tag should close the first one");
|
||||
</script>
|
||||
Loading…
Reference in a new issue