/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* 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 http://mozilla.org/MPL/2.0/. * * The origin of this IDL file is * http://notifications.spec.whatwg.org/ * * Copyright: * To the extent possible under law, the editors have waived all copyright and * related or neighboring rights to this work. */ [Constructor(DOMString title, optional NotificationOptions options), Exposed=(Window,Worker), Func="mozilla::dom::Notification::PrefEnabled", UnsafeInPrerendering] interface Notification : EventTarget { [GetterThrows] static readonly attribute NotificationPermission permission; [Throws, Func="mozilla::dom::Notification::RequestPermissionEnabledForScope"] static Promise<NotificationPermission> requestPermission(optional NotificationPermissionCallback permissionCallback); [Throws, Func="mozilla::dom::Notification::IsGetEnabled"] static Promise<sequence<Notification>> get(optional GetNotificationOptions filter); 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 DOMString? icon; [Constant, Func="mozilla::dom::Notification::RequireInteractionEnabled"] readonly attribute boolean requireInteraction; [Constant] readonly attribute any data; void close(); }; dictionary NotificationOptions { NotificationDirection dir = "auto"; DOMString lang = ""; DOMString body = ""; DOMString tag = ""; DOMString icon = ""; boolean requireInteraction = false; any data = null; NotificationBehavior mozbehavior = null; }; dictionary GetNotificationOptions { DOMString tag = ""; }; dictionary NotificationBehavior { boolean noscreen = false; boolean noclear = false; boolean showOnlyOnce = false; DOMString soundFile = ""; sequence<unsigned long> vibrationPattern; }; enum NotificationPermission { "default", "denied", "granted" }; callback NotificationPermissionCallback = void (NotificationPermission permission); enum NotificationDirection { "auto", "ltr", "rtl" }; partial interface ServiceWorkerRegistration { [Throws, Func="mozilla::dom::ServiceWorkerRegistration::NotificationAPIVisible"] Promise<void> showNotification(DOMString title, optional NotificationOptions options); [Throws, Func="mozilla::dom::ServiceWorkerRegistration::NotificationAPIVisible"] Promise<sequence<Notification>> getNotifications(optional GetNotificationOptions filter); };