waitForWindow()/waitForDialog() test function tweaks
- Give any window onload functions time to run before running waitForWindow() - Allow custom dialog URI in waitForDialog
This commit is contained in:
parent
3f475f25b6
commit
b602cc4bd2
1 changed files with 17 additions and 14 deletions
|
@ -74,21 +74,24 @@ function waitForWindow(uri, callback) {
|
||||||
var win = ev.target.docShell
|
var win = ev.target.docShell
|
||||||
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
||||||
.getInterface(Components.interfaces.nsIDOMWindow);
|
.getInterface(Components.interfaces.nsIDOMWindow);
|
||||||
if (callback) {
|
// Give window code time to run on load
|
||||||
try {
|
setTimeout(function () {
|
||||||
// If callback is a promise, wait for it
|
if (callback) {
|
||||||
let maybePromise = callback(win);
|
try {
|
||||||
if (maybePromise && maybePromise.then) {
|
// If callback is a promise, wait for it
|
||||||
maybePromise.then(() => deferred.resolve(win)).catch(e => deferred.reject(e));
|
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;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (e) {
|
deferred.resolve(win);
|
||||||
deferred.reject(e);
|
});
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
deferred.resolve(win);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var winobserver = {"observe":function(subject, topic, data) {
|
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')
|
* @param {String} [button='accept'] - Button in dialog to press (e.g., 'cancel', 'extra1')
|
||||||
* @return {Promise}
|
* @return {Promise}
|
||||||
*/
|
*/
|
||||||
function waitForDialog(onOpen, button='accept') {
|
function waitForDialog(onOpen, button='accept', url) {
|
||||||
return waitForWindow("chrome://global/content/commonDialog.xul", Zotero.Promise.method(function (dialog, deferred) {
|
return waitForWindow(url || "chrome://global/content/commonDialog.xul", Zotero.Promise.method(function (dialog, deferred) {
|
||||||
var failure = false;
|
var failure = false;
|
||||||
if (onOpen) {
|
if (onOpen) {
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue