commit b602cc4bd243404711028125133d178d08d1d1a8
parent 3f475f25b67d931b82cb4e31a71238b9dc36bdb7
Author: Dan Stillman <dstillman@zotero.org>
Date: Tue, 23 Jun 2015 04:21:54 -0400
waitForWindow()/waitForDialog() test function tweaks
- Give any window onload functions time to run before running
waitForWindow()
- Allow custom dialog URI in waitForDialog
Diffstat:
1 file changed, 17 insertions(+), 14 deletions(-)
diff --git a/test/content/support.js b/test/content/support.js
@@ -74,21 +74,24 @@ function waitForWindow(uri, callback) {
var win = ev.target.docShell
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindow);
- if (callback) {
- try {
- // If callback is a promise, wait for it
- let maybePromise = callback(win);
- if (maybePromise && maybePromise.then) {
- maybePromise.then(() => deferred.resolve(win)).catch(e => deferred.reject(e));
+ // Give window code time to run on load
+ setTimeout(function () {
+ if (callback) {
+ try {
+ // If callback is a promise, wait for it
+ let maybePromise = callback(win);
+ if (maybePromise && maybePromise.then) {
+ maybePromise.then(() => deferred.resolve(win)).catch(e => deferred.reject(e));
+ return;
+ }
+ }
+ catch (e) {
+ deferred.reject(e);
return;
}
}
- catch (e) {
- deferred.reject(e);
- return;
- }
- }
- deferred.resolve(win);
+ deferred.resolve(win);
+ });
}
};
var winobserver = {"observe":function(subject, topic, data) {
@@ -109,8 +112,8 @@ function waitForWindow(uri, callback) {
* @param {String} [button='accept'] - Button in dialog to press (e.g., 'cancel', 'extra1')
* @return {Promise}
*/
-function waitForDialog(onOpen, button='accept') {
- return waitForWindow("chrome://global/content/commonDialog.xul", Zotero.Promise.method(function (dialog, deferred) {
+function waitForDialog(onOpen, button='accept', url) {
+ return waitForWindow(url || "chrome://global/content/commonDialog.xul", Zotero.Promise.method(function (dialog, deferred) {
var failure = false;
if (onOpen) {
try {