зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1689565 - Part 1: Remove Notification.get() r=saschanaz
Remove Notification.get() in the code Differential Revision: https://phabricator.services.mozilla.com/D167236
This commit is contained in:
Родитель
8e9b448440
Коммит
c1b2ac7b4e
|
@ -112,20 +112,6 @@ interface nsINotificationStorage : nsISupports
|
||||||
*/
|
*/
|
||||||
void delete(in AString origin,
|
void delete(in AString origin,
|
||||||
in AString id);
|
in AString id);
|
||||||
|
|
||||||
/**
|
|
||||||
* Notifications are not supposed to be persistent, according to spec, at
|
|
||||||
* least for now. But we want to be able to have this behavior on B2G. Thus,
|
|
||||||
* this method will check if the origin sending the notifications is a valid
|
|
||||||
* registered app with a manifest or not. Hence, a webpage that has none
|
|
||||||
* will have its notification sent and available (via Notification.get())
|
|
||||||
* during the life time of the page.
|
|
||||||
*
|
|
||||||
* @param origin: Origin from which the notification is sent.
|
|
||||||
*
|
|
||||||
* @return boolean
|
|
||||||
*/
|
|
||||||
boolean canPut(in AString origin);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
%{C++
|
%{C++
|
||||||
|
|
|
@ -688,11 +688,6 @@ bool Notification::PrefEnabled(JSContext* aCx, JSObject* aObj) {
|
||||||
return StaticPrefs::dom_webnotifications_enabled();
|
return StaticPrefs::dom_webnotifications_enabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
|
||||||
bool Notification::IsGetEnabled(JSContext* aCx, JSObject* aObj) {
|
|
||||||
return NS_IsMainThread();
|
|
||||||
}
|
|
||||||
|
|
||||||
Notification::Notification(nsIGlobalObject* aGlobal, const nsAString& aID,
|
Notification::Notification(nsIGlobalObject* aGlobal, const nsAString& aID,
|
||||||
const nsAString& aTitle, const nsAString& aBody,
|
const nsAString& aTitle, const nsAString& aBody,
|
||||||
NotificationDirection aDir, const nsAString& aLang,
|
NotificationDirection aDir, const nsAString& aLang,
|
||||||
|
@ -1684,17 +1679,6 @@ already_AddRefed<Promise> Notification::Get(
|
||||||
return promise.forget();
|
return promise.forget();
|
||||||
}
|
}
|
||||||
|
|
||||||
already_AddRefed<Promise> Notification::Get(
|
|
||||||
const GlobalObject& aGlobal, const GetNotificationOptions& aFilter,
|
|
||||||
ErrorResult& aRv) {
|
|
||||||
AssertIsOnMainThread();
|
|
||||||
nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(aGlobal.GetAsSupports());
|
|
||||||
MOZ_ASSERT(global);
|
|
||||||
nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(global);
|
|
||||||
|
|
||||||
return Get(window, aFilter, u""_ns, aRv);
|
|
||||||
}
|
|
||||||
|
|
||||||
class WorkerGetResultRunnable final : public NotificationWorkerRunnable {
|
class WorkerGetResultRunnable final : public NotificationWorkerRunnable {
|
||||||
RefPtr<PromiseWorkerProxy> mPromiseProxy;
|
RefPtr<PromiseWorkerProxy> mPromiseProxy;
|
||||||
const nsTArray<NotificationStrings> mStrings;
|
const nsTArray<NotificationStrings> mStrings;
|
||||||
|
|
|
@ -106,8 +106,6 @@ class Notification : public DOMEventTargetHelper,
|
||||||
NS_DECL_NSIOBSERVER
|
NS_DECL_NSIOBSERVER
|
||||||
|
|
||||||
static bool PrefEnabled(JSContext* aCx, JSObject* aObj);
|
static bool PrefEnabled(JSContext* aCx, JSObject* aObj);
|
||||||
// Returns if Notification.get() is allowed for the current global.
|
|
||||||
static bool IsGetEnabled(JSContext* aCx, JSObject* aObj);
|
|
||||||
|
|
||||||
static already_AddRefed<Notification> Constructor(
|
static already_AddRefed<Notification> Constructor(
|
||||||
const GlobalObject& aGlobal, const nsAString& aTitle,
|
const GlobalObject& aGlobal, const nsAString& aTitle,
|
||||||
|
@ -163,10 +161,6 @@ class Notification : public DOMEventTargetHelper,
|
||||||
const nsAString& aScope,
|
const nsAString& aScope,
|
||||||
ErrorResult& aRv);
|
ErrorResult& aRv);
|
||||||
|
|
||||||
static already_AddRefed<Promise> Get(const GlobalObject& aGlobal,
|
|
||||||
const GetNotificationOptions& aFilter,
|
|
||||||
ErrorResult& aRv);
|
|
||||||
|
|
||||||
static already_AddRefed<Promise> WorkerGet(
|
static already_AddRefed<Promise> WorkerGet(
|
||||||
WorkerPrivate* aWorkerPrivate, const GetNotificationOptions& aFilter,
|
WorkerPrivate* aWorkerPrivate, const GetNotificationOptions& aFilter,
|
||||||
const nsAString& aScope, ErrorResult& aRv);
|
const nsAString& aScope, ErrorResult& aRv);
|
||||||
|
|
|
@ -15,7 +15,4 @@ skip-if = xorigin # Bug 1792790
|
||||||
fail-if = xorigin
|
fail-if = xorigin
|
||||||
[test_notification_permissions.html]
|
[test_notification_permissions.html]
|
||||||
scheme = https
|
scheme = https
|
||||||
[test_notification_storage.html]
|
|
||||||
skip-if = xorigin # Bug 1792790
|
|
||||||
[test_bug931307.html]
|
|
||||||
[test_notification_tag.html]
|
[test_notification_tag.html]
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
<!--
|
|
||||||
Any copyright is dedicated to the Public Domain.
|
|
||||||
http://creativecommons.org/publicdomain/zero/1.0/
|
|
||||||
-->
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Bug 931307</title>
|
|
||||||
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<pre id="test">
|
|
||||||
<script type="application/javascript"><!--
|
|
||||||
|
|
||||||
SimpleTest.waitForExplicitFinish();
|
|
||||||
var notification = new Notification("");
|
|
||||||
var promise = Notification.get();
|
|
||||||
promise.then(
|
|
||||||
function onSuccess() {
|
|
||||||
ok(true, "No error when creating a notification without title");
|
|
||||||
},
|
|
||||||
function onFailure() {
|
|
||||||
ok(false, "Should not throw error when creating a notification without title");
|
|
||||||
}
|
|
||||||
).then(() => {
|
|
||||||
notification.close();
|
|
||||||
}).then(() => {
|
|
||||||
SimpleTest.finish();
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</pre>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -24,7 +24,6 @@
|
||||||
ok(Notification, "Notification constructor exists");
|
ok(Notification, "Notification constructor exists");
|
||||||
ok(Notification.permission, "Notification.permission exists");
|
ok(Notification.permission, "Notification.permission exists");
|
||||||
ok(Notification.requestPermission, "Notification.requestPermission exists");
|
ok(Notification.requestPermission, "Notification.requestPermission exists");
|
||||||
ok(Notification.get, "Notification.get exists");
|
|
||||||
},
|
},
|
||||||
|
|
||||||
function() {
|
function() {
|
||||||
|
|
|
@ -1,158 +0,0 @@
|
||||||
<!DOCTYPE HTML>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Notification Basics</title>
|
|
||||||
<script type="text/javascript" src="MockServices.js"></script>
|
|
||||||
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<script type="text/javascript" src="NotificationTest.js"></script>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<p id="display"></p>
|
|
||||||
<div id="content" style="display: none"></div>
|
|
||||||
<pre id="test"></pre>
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
SimpleTest.requestFlakyTimeout("untriaged");
|
|
||||||
|
|
||||||
function deleteAllNotifications(done) {
|
|
||||||
var promise = Notification.get();
|
|
||||||
promise.then(function(notifications) {
|
|
||||||
notifications.forEach(function(notification) {
|
|
||||||
notification.close();
|
|
||||||
});
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
var info = NotificationTest.info;
|
|
||||||
|
|
||||||
var steps = [
|
|
||||||
function(done) {
|
|
||||||
info("Test that Notifcation.get fulfills the promise");
|
|
||||||
var promise = Notification.get();
|
|
||||||
ok(promise.then, "should return a promise");
|
|
||||||
|
|
||||||
// Create a new notification to make sure
|
|
||||||
// Notification.get() works while creating
|
|
||||||
new Notification("this is a test");
|
|
||||||
|
|
||||||
promise.then(function() {
|
|
||||||
ok(true, "promise should be fulfilled");
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
deleteAllNotifications,
|
|
||||||
|
|
||||||
function(done) {
|
|
||||||
info("Test adding a notification, and making sure get returns it");
|
|
||||||
NotificationTest.allowNotifications();
|
|
||||||
var options = NotificationTest.payload;
|
|
||||||
|
|
||||||
var notification = new Notification("This is a title", options);
|
|
||||||
var promise = Notification.get();
|
|
||||||
promise.then(function(notifications) {
|
|
||||||
ok(notifications.length, "should return notifications");
|
|
||||||
for (var i = 0; i < notifications.length; i++) {
|
|
||||||
var currentNotification = notifications[i];
|
|
||||||
if (currentNotification.tag === options.tag) {
|
|
||||||
ok(true, "should contain newly created notification");
|
|
||||||
for (var key in options) {
|
|
||||||
if (key === "data") {
|
|
||||||
ok(NotificationTest.customDataMatches(currentNotification.data),
|
|
||||||
"data property should match");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
is(currentNotification[key], options[key], key + " property should match");
|
|
||||||
}
|
|
||||||
currentNotification.close();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ok(false, "should contain newly created notification");
|
|
||||||
notification.close();
|
|
||||||
});
|
|
||||||
notification.onclose = done;
|
|
||||||
},
|
|
||||||
|
|
||||||
function(done) {
|
|
||||||
info("Testing fetching notification by tag filter");
|
|
||||||
var n1 = new Notification("title1", {tag: "tag1"});
|
|
||||||
var n2 = new Notification("title2", {tag: "tag2"});
|
|
||||||
var n3 = new Notification("title3", {tag: "tag3"});
|
|
||||||
var promise = Notification.get({tag: "tag3"});
|
|
||||||
promise.then(function(notifications) {
|
|
||||||
var notification = notifications[0];
|
|
||||||
is(notifications.length, 1, "should return 1 notification");
|
|
||||||
is(notification.title, "title3", "titles should match");
|
|
||||||
is(notification.tag, "tag3", "tags should match");
|
|
||||||
var closeCount = 0;
|
|
||||||
var waitForAll = function() {
|
|
||||||
if (++closeCount >= 3) {
|
|
||||||
done();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
n1.onclose = waitForAll;
|
|
||||||
n2.onclose = waitForAll;
|
|
||||||
n3.onclose = waitForAll;
|
|
||||||
n1.close();
|
|
||||||
n2.close();
|
|
||||||
n3.close();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
deleteAllNotifications,
|
|
||||||
|
|
||||||
function(done) {
|
|
||||||
info("Testing fetching no notifications");
|
|
||||||
var promise = Notification.get();
|
|
||||||
promise.then(function(notifications) {
|
|
||||||
is(notifications.length, 0, "should return 0 notifications");
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
function(done) {
|
|
||||||
info("Testing fetching multiple notifications");
|
|
||||||
var n1 = new Notification("title1");
|
|
||||||
var n2 = new Notification("title2");
|
|
||||||
var n3 = new Notification("title3");
|
|
||||||
var promise = Notification.get();
|
|
||||||
promise.then(function(notifications) {
|
|
||||||
is(notifications.length, 3, "should return 3 notifications");
|
|
||||||
n1.close();
|
|
||||||
n2.close();
|
|
||||||
n3.close();
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
deleteAllNotifications,
|
|
||||||
|
|
||||||
function(done) {
|
|
||||||
info("Testing 'alertfinished' removes the notification from DB");
|
|
||||||
var n = new Notification("test-title" + Math.random());
|
|
||||||
n.onclose = function() {
|
|
||||||
Notification.get().then(function(notifications) {
|
|
||||||
is(notifications.length, 0, "should return 0 notifications");
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
};
|
|
||||||
info("Installing 'onshow' for " + n.title);
|
|
||||||
n.onshow = function() {
|
|
||||||
info("Triggered 'onshow' for " + n.title);
|
|
||||||
window.setTimeout(function() {
|
|
||||||
NotificationTest.fireCloseEvent(n.title);
|
|
||||||
}, 100);
|
|
||||||
};
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
MockServices.register();
|
|
||||||
NotificationTest.run(steps, function() {
|
|
||||||
MockServices.unregister();
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -23,9 +23,6 @@ interface Notification : EventTarget {
|
||||||
[NewObject, Func="mozilla::dom::Notification::RequestPermissionEnabledForScope"]
|
[NewObject, Func="mozilla::dom::Notification::RequestPermissionEnabledForScope"]
|
||||||
static Promise<NotificationPermission> requestPermission(optional NotificationPermissionCallback permissionCallback);
|
static Promise<NotificationPermission> requestPermission(optional NotificationPermissionCallback permissionCallback);
|
||||||
|
|
||||||
[NewObject, Func="mozilla::dom::Notification::IsGetEnabled"]
|
|
||||||
static Promise<sequence<Notification>> get(optional GetNotificationOptions filter = {});
|
|
||||||
|
|
||||||
attribute EventHandler onclick;
|
attribute EventHandler onclick;
|
||||||
|
|
||||||
attribute EventHandler onshow;
|
attribute EventHandler onshow;
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
[historical.any.worker.html]
|
|
||||||
expected:
|
|
||||||
if (os == "android") and fission: [OK, TIMEOUT]
|
|
||||||
|
|
||||||
[historical.any.html]
|
|
||||||
expected:
|
|
||||||
if (os == "android") and fission: [TIMEOUT, OK]
|
|
||||||
[Notification.get is obsolete]
|
|
||||||
expected: FAIL
|
|
Загрузка…
Ссылка в новой задаче