Bug 1816170 - Disable perftest-on-autoland cron. r=aglavic
[gecko.git] / dom / indexedDB / test / head.js
blob434334ff0ba736370dbd310b7d58e25f5dffe755
1 /**
2  * Any copyright is dedicated to the Public Domain.
3  * http://creativecommons.org/publicdomain/zero/1.0/
4  */
6 var gActiveListeners = {};
8 // These event (un)registration handlers only work for one window, DONOT use
9 // them with multiple windows.
10 function registerPopupEventHandler(eventName, callback, win) {
11   if (!win) {
12     win = window;
13   }
14   gActiveListeners[eventName] = function(event) {
15     if (event.target != win.PopupNotifications.panel) {
16       return;
17     }
18     win.PopupNotifications.panel.removeEventListener(
19       eventName,
20       gActiveListeners[eventName]
21     );
22     delete gActiveListeners[eventName];
24     callback.call(win.PopupNotifications.panel);
25   };
26   win.PopupNotifications.panel.addEventListener(
27     eventName,
28     gActiveListeners[eventName]
29   );
32 function unregisterPopupEventHandler(eventName, win) {
33   if (!win) {
34     win = window;
35   }
36   win.PopupNotifications.panel.removeEventListener(
37     eventName,
38     gActiveListeners[eventName]
39   );
40   delete gActiveListeners[eventName];
43 function unregisterAllPopupEventHandlers(win) {
44   if (!win) {
45     win = window;
46   }
47   for (let eventName in gActiveListeners) {
48     win.PopupNotifications.panel.removeEventListener(
49       eventName,
50       gActiveListeners[eventName]
51     );
52   }
53   gActiveListeners = {};
56 function triggerMainCommand(popup) {
57   info("triggering main command");
58   let notifications = popup.childNodes;
59   ok(notifications.length, "at least one notification displayed");
60   let notification = notifications[0];
61   info("triggering command: " + notification.getAttribute("buttonlabel"));
63   EventUtils.synthesizeMouseAtCenter(notification.button, {});
66 function triggerSecondaryCommand(popup, win) {
67   if (!win) {
68     win = window;
69   }
70   info("triggering secondary command");
71   let notifications = popup.childNodes;
72   ok(notifications.length, "at least one notification displayed");
73   let notification = notifications[0];
74   EventUtils.synthesizeMouseAtCenter(notification.secondaryButton, {}, win);
77 function dismissNotification(popup) {
78   info("dismissing notification");
79   executeSoon(function() {
80     EventUtils.synthesizeKey("KEY_Escape");
81   });
84 function waitForMessage(aMessage, browser) {
85   // We cannot capture aMessage inside the checkFn, so we override the
86   // checkFn.toSource to tunnel aMessage instead.
87   let checkFn = function() {};
88   checkFn.toSource = function() {
89     return `function checkFn(event) {
90       let message = ${aMessage.toSource()};
91       if (event.data == message) {
92         return true;
93       }
94       throw new Error(
95        \`Unexpected result: \$\{event.data\}, expected \$\{message\}\`
96       );
97     }`;
98   };
100   return BrowserTestUtils.waitForContentEvent(
101     browser.selectedBrowser,
102     "message",
103     /* capture */ true,
104     checkFn,
105     /* wantsUntrusted */ true
106   ).then(() => {
107     // An assertion in checkFn wouldn't be recorded as part of the test, so we
108     // use this assertion to confirm that we've successfully received the
109     // message (we'll only reach this point if that's the case).
110     ok(true, "Received message: " + aMessage);
111   });
114 function dispatchEvent(eventName) {
115   info("dispatching event: " + eventName);
116   let event = document.createEvent("Events");
117   event.initEvent(eventName, false, false);
118   gBrowser.selectedBrowser.contentWindow.dispatchEvent(event);
121 function setPermission(url, permission, originAttributes = {}) {
122   let uri = Services.io.newURI(url);
123   let principal = Services.scriptSecurityManager.createContentPrincipal(
124     uri,
125     originAttributes
126   );
128   Services.perms.addFromPrincipal(
129     principal,
130     permission,
131     Ci.nsIPermissionManager.ALLOW_ACTION
132   );
135 function removePermission(url, permission, originAttributes = {}) {
136   let uri = Services.io.newURI(url);
137   let principal = Services.scriptSecurityManager.createContentPrincipal(
138     uri,
139     originAttributes
140   );
142   Services.perms.removeFromPrincipal(principal, permission);
145 function getPermission(url, permission, originAttributes = {}) {
146   let uri = Services.io.newURI(url);
147   let principal = Services.scriptSecurityManager.createContentPrincipal(
148     uri,
149     originAttributes
150   );
152   return Services.perms.testPermissionFromPrincipal(principal, permission);