|  | <!doctype html> | 
|  | <meta charset=utf-8> | 
|  | <title>Notification interface IDL tests</title> | 
|  | <div id=log></div> | 
|  | <script src=/resources/testharness.js></script> | 
|  | <script src=/resources/testharnessreport.js></script> | 
|  | <script src=/resources/WebIDLParser.js></script> | 
|  | <script src=/resources/idlharness.js></script> | 
|  | <script type=text/plain class=untested> | 
|  | interface EventTarget { | 
|  | void addEventListener(DOMString type, EventListener? callback, optional boolean capture /* = false */); | 
|  | void removeEventListener(DOMString type, EventListener? callback, optional boolean capture /* = false */); | 
|  | boolean dispatchEvent(Event event); | 
|  | }; | 
|  | [TreatNonCallableAsNull] | 
|  | callback EventHandlerNonNull = any (Event event); | 
|  | typedef EventHandlerNonNull? EventHandler; | 
|  | </script> | 
|  | <script type=text/plain> | 
|  | [Constructor(DOMString title, optional NotificationOptions options)] | 
|  | interface Notification : EventTarget { | 
|  | static readonly attribute NotificationPermission permission; | 
|  | static void requestPermission(optional NotificationPermissionCallback callback); | 
|  |  | 
|  | attribute EventHandler onclick; | 
|  | attribute EventHandler onshow; | 
|  | attribute EventHandler onerror; | 
|  | attribute EventHandler onclose; | 
|  |  | 
|  | readonly attribute DOMString title; | 
|  | readonly attribute NotificationDirection dir; | 
|  | readonly attribute DOMString lang; | 
|  | readonly attribute DOMString body; | 
|  | readonly attribute DOMString tag; | 
|  | readonly attribute DOMString icon; | 
|  |  | 
|  | void close(); | 
|  | }; | 
|  |  | 
|  | dictionary NotificationOptions { | 
|  | NotificationDirection dir = "auto"; | 
|  | DOMString lang = ""; | 
|  | DOMString body; | 
|  | DOMString tag; | 
|  | DOMString icon; | 
|  | }; | 
|  |  | 
|  | dictionary GetNotificationsOptions { | 
|  | DOMString tag; | 
|  | }; | 
|  |  | 
|  | enum NotificationPermission { | 
|  | "default", | 
|  | "denied", | 
|  | "granted" | 
|  | }; | 
|  |  | 
|  | callback NotificationPermissionCallback = void (NotificationPermission permission); | 
|  |  | 
|  | enum NotificationDirection { | 
|  | "auto", | 
|  | "ltr", | 
|  | "rtl" | 
|  | }; | 
|  | </script> | 
|  | <script> | 
|  | "use strict"; | 
|  | var idlArray = new IdlArray(); | 
|  | [].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) { | 
|  | if (node.className == "untested") { | 
|  | idlArray.add_untested_idls(node.textContent); | 
|  | } else { | 
|  | idlArray.add_idls(node.textContent); | 
|  | } | 
|  | }); | 
|  | idlArray.add_objects({ | 
|  | Notification: ['new Notification("Running idlharness.")'], | 
|  | }); | 
|  | idlArray.test(); | 
|  | </script> |