From 4a3ff46bd77d2e131066087332b3fc1e1778a6c0 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Sun, 19 Jun 2022 03:44:56 -0400 Subject: [PATCH] fx-compat: Fix waitForWindow()/waitForDialog() in tests --- test/content/support.js | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/test/content/support.js b/test/content/support.js index 68369513b3..1ce0d23ac7 100644 --- a/test/content/support.js +++ b/test/content/support.js @@ -136,16 +136,14 @@ function waitForWindow(uri, callback) { Zotero.debug("Window opened: " + ev.target.location.href); if (ev.target.location.href != uri) { - Zotero.debug(`Ignoring window ${uri} in waitForWindow()`); + Zotero.debug(`Ignoring window ${ev.target.location.href} in waitForWindow()`); return; } Services.ww.unregisterNotification(winobserver); - var win = ev.target.docShell - .QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIDOMWindow); + var win = ev.target.ownerGlobal; // Give window code time to run on load - win.setTimeout(function () { + win.setTimeout(function () { if (callback) { try { // If callback returns a promise, wait for it @@ -167,8 +165,7 @@ function waitForWindow(uri, callback) { }; var winobserver = {"observe":function(subject, topic, data) { if(topic != "domwindowopened") return; - var win = subject.QueryInterface(Components.interfaces.nsIDOMWindow); - win.addEventListener("load", loadobserver, false); + subject.addEventListener("load", loadobserver, false); }}; Services.ww.registerNotification(winobserver); return deferred.promise; @@ -184,11 +181,11 @@ function waitForWindow(uri, callback) { * @return {Promise} */ function waitForDialog(onOpen, button='accept', url) { - return waitForWindow(url || "chrome://global/content/commonDialog.xul", Zotero.Promise.method(function (dialog) { + return waitForWindow(url || "chrome://global/content/commonDialog.xhtml", Zotero.Promise.method(function (win) { var failure = false; if (onOpen) { try { - onOpen(dialog); + onOpen(win); } catch (e) { failure = e; @@ -203,13 +200,13 @@ function waitForDialog(onOpen, button='accept', url) { let deferred = Zotero.Promise.defer(); function acceptWhenEnabled() { // Handle delayed buttons - if (dialog.document.documentElement.getButton(button).disabled) { - dialog.setTimeout(function () { + if (win.document.querySelector('dialog').getButton(button).disabled) { + win.setTimeout(function () { acceptWhenEnabled(); }, 250); } else { - dialog.document.documentElement.getButton(button).click(); + win.document.querySelector('dialog').getButton(button).click(); if (failure) { deferred.reject(failure); } @@ -222,7 +219,7 @@ function waitForDialog(onOpen, button='accept', url) { return deferred.promise; } else { - dialog.document.documentElement.getButton(button).click(); + win.document.querySelector('dialog').getButton(button).click(); if (failure) { throw failure; }