mirror of
https://github.com/servo/servo.git
synced 2025-08-07 06:25:32 +01:00
feat: add Notification
Web API binding (#34842)
* feat: add Notification Web API binding Signed-off-by: Jason Tsai <git@pews.dev> * chore: update spec link Signed-off-by: Jason Tsai <git@pews.dev> * chore: fix clippy Signed-off-by: Jason Tsai <git@pews.dev> * fix: index overflow Signed-off-by: Jason Tsai <git@pews.dev> * test(tidy): add notification WebIDL standard URL Signed-off-by: Jason Tsai <git@pews.dev> * fix: allow crown::unrooted_must_root Signed-off-by: Jason Tsai <git@pews.dev> * implement GetPermission Signed-off-by: Jason Tsai <git@pews.dev> * fix silent type Signed-off-by: Jason Tsai <git@pews.dev> * add all properties Signed-off-by: Jason Tsai <git@pews.dev> * test: add Notification to global Signed-off-by: Jason Tsai <git@pews.dev> * chore: update wpt manifest and fix clippy Signed-off-by: Jason Tsai <git@pews.dev> * test: temp skip notifications Signed-off-by: Jason Tsai <git@pews.dev> * add vibration and apply suggestions Signed-off-by: Jason Tsai <git@pews.dev> * partially implement RequestPermission Signed-off-by: Jason Tsai <git@pews.dev> * call Permission request permission algorithm Signed-off-by: Jason Tsai <git@pews.dev> * chore: pub crate Notification Signed-off-by: Jason Tsai <git@pews.dev> * chore: fix clippy Signed-off-by: Jason Tsai <git@pews.dev> * chore: crown attribute Signed-off-by: Jason Tsai <git@pews.dev> * fix part of suggestions Signed-off-by: Jason Tsai <git@pews.dev> * fix: store private `Action` structure Signed-off-by: Jason Tsai <git@pews.dev> * chore: fix typo Signed-off-by: Jason Tsai <git@pews.dev> * fix: serialize images URL Signed-off-by: Jason Tsai <git@pews.dev> * fix: use globalscope as environment settings object Signed-off-by: Jason Tsai <git@pews.dev> * chore: add pref `dom_notification_enabled` and default to disabled Signed-off-by: Jason Tsai <git@pews.dev> * fix: use `descriptor_permission_state` Signed-off-by: Jason Tsai <git@pews.dev> * apply suggestions Signed-off-by: Jason Tsai <git@pews.dev> Co-authored-by: Josh Matthews <josh@joshmatthews.net> * test: remove passed meta Signed-off-by: Jason Tsai <git@pews.dev> * test: enable notification prefs in mozilla tests Signed-off-by: Jason Tsai <git@pews.dev> --------- Signed-off-by: Jason Tsai <git@pews.dev> Co-authored-by: Josh Matthews <josh@joshmatthews.net>
This commit is contained in:
parent
14d591c462
commit
22c3a63737
21 changed files with 717 additions and 370 deletions
|
@ -383,6 +383,10 @@ DOMInterfaces = {
|
|||
'canGc': ['CloneNode', 'SetTextContent'],
|
||||
},
|
||||
|
||||
'Notification': {
|
||||
'canGc': ['RequestPermission'],
|
||||
},
|
||||
|
||||
'OfflineAudioContext': {
|
||||
'inRealms': ['StartRendering'],
|
||||
'canGc': ['StartRendering'],
|
||||
|
|
113
components/script_bindings/webidls/Notification.webidl
Normal file
113
components/script_bindings/webidls/Notification.webidl
Normal file
|
@ -0,0 +1,113 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// https://notifications.spec.whatwg.org/#api
|
||||
[Exposed=(Window,Worker), Pref="dom_notification_enabled"]
|
||||
interface Notification : EventTarget {
|
||||
[Throws]
|
||||
constructor(DOMString title, optional NotificationOptions options = {});
|
||||
|
||||
[GetterThrows]
|
||||
static readonly attribute NotificationPermission permission;
|
||||
|
||||
[Exposed=Window]
|
||||
static Promise<NotificationPermission> requestPermission(optional NotificationPermissionCallback deprecatedCallback);
|
||||
|
||||
static readonly attribute unsigned long maxActions;
|
||||
|
||||
attribute EventHandler onclick;
|
||||
attribute EventHandler onshow;
|
||||
attribute EventHandler onerror;
|
||||
attribute EventHandler onclose;
|
||||
|
||||
[Pure]
|
||||
readonly attribute DOMString title;
|
||||
|
||||
[Pure]
|
||||
readonly attribute NotificationDirection dir;
|
||||
|
||||
[Pure]
|
||||
readonly attribute DOMString lang;
|
||||
|
||||
[Pure]
|
||||
readonly attribute DOMString body;
|
||||
|
||||
[Constant]
|
||||
readonly attribute DOMString tag;
|
||||
|
||||
[Pure]
|
||||
readonly attribute USVString image;
|
||||
|
||||
[Pure]
|
||||
readonly attribute USVString icon;
|
||||
|
||||
[Pure]
|
||||
readonly attribute USVString badge;
|
||||
|
||||
readonly attribute boolean renotify;
|
||||
|
||||
[Constant]
|
||||
readonly attribute boolean requireInteraction;
|
||||
|
||||
[Constant]
|
||||
readonly attribute boolean? silent;
|
||||
|
||||
// [Cached, Frozen, Pure]
|
||||
readonly attribute /*FrozenArray<<unsigned long>*/any vibrate;
|
||||
|
||||
readonly attribute EpochTimeStamp timestamp;
|
||||
|
||||
[Constant]
|
||||
readonly attribute any data;
|
||||
|
||||
// [Cached, Frozen, Pure]
|
||||
readonly attribute /*FrozenArray<NotificationAction>*/any actions;
|
||||
|
||||
undefined close();
|
||||
};
|
||||
|
||||
// <https://w3c.github.io/hr-time/#dom-epochtimestamp>
|
||||
typedef unsigned long long EpochTimeStamp;
|
||||
typedef (unsigned long or sequence<unsigned long>) VibratePattern;
|
||||
|
||||
dictionary NotificationOptions {
|
||||
NotificationDirection dir = "auto";
|
||||
DOMString lang = "";
|
||||
DOMString body = "";
|
||||
DOMString tag = "";
|
||||
USVString image;
|
||||
USVString icon;
|
||||
USVString badge;
|
||||
VibratePattern vibrate;
|
||||
EpochTimeStamp timestamp;
|
||||
boolean renotify = false;
|
||||
boolean? silent = null;
|
||||
boolean requireInteraction = false;
|
||||
any data = null;
|
||||
sequence<NotificationAction> actions = [];
|
||||
};
|
||||
|
||||
dictionary GetNotificationOptions {
|
||||
DOMString tag = "";
|
||||
};
|
||||
|
||||
enum NotificationPermission {
|
||||
"default",
|
||||
"denied",
|
||||
"granted"
|
||||
};
|
||||
|
||||
callback NotificationPermissionCallback = undefined (NotificationPermission permission);
|
||||
|
||||
enum NotificationDirection {
|
||||
"auto",
|
||||
"ltr",
|
||||
"rtl"
|
||||
};
|
||||
|
||||
dictionary NotificationAction {
|
||||
required DOMString action;
|
||||
required DOMString title;
|
||||
USVString icon;
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue