Use proper on-detect handler rather than pageshow in browser tests
Otherwise the test could run scrapeThisPage() before translators were ready. It would be good to make scrapeThisPage wait for detection to complete so that an early press still uses a translator for saving, but this way tests can also test for the proper icon (though they don't now).
This commit is contained in:
parent
b650263d66
commit
1c19fe8d81
2 changed files with 26 additions and 11 deletions
|
@ -54,6 +54,7 @@ var Zotero_Browser = new function() {
|
|||
|
||||
var _browserData = new WeakMap();
|
||||
var _attachmentsMap = new WeakMap();
|
||||
var _detectCallbacks = [];
|
||||
|
||||
var _blacklist = [
|
||||
"googlesyndication.com",
|
||||
|
@ -484,6 +485,20 @@ var Zotero_Browser = new function() {
|
|||
}
|
||||
});
|
||||
|
||||
this.addDetectCallback = function (func) {
|
||||
_detectCallbacks.push(func);
|
||||
};
|
||||
|
||||
this.resolveDetectCallbacks = Zotero.Promise.coroutine(function* () {
|
||||
while (_detectCallbacks.length) {
|
||||
let cb = _detectCallbacks.shift();
|
||||
var res = cb();
|
||||
if (res && res.then) {
|
||||
yield res.then;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function getSaveButtons() {
|
||||
Components.utils.import("resource:///modules/CustomizableUI.jsm");
|
||||
var buttons = [];
|
||||
|
@ -957,7 +972,7 @@ Zotero_Browser.Tab.prototype._selectItems = function(obj, itemList, callback) {
|
|||
/*
|
||||
* called when translators are available
|
||||
*/
|
||||
Zotero_Browser.Tab.prototype._translatorsAvailable = function(translate, translators) {
|
||||
Zotero_Browser.Tab.prototype._translatorsAvailable = Zotero.Promise.coroutine(function* (translate, translators) {
|
||||
var page = this.getPageObject();
|
||||
page.saveEnabled = true;
|
||||
|
||||
|
@ -1004,8 +1019,8 @@ Zotero_Browser.Tab.prototype._translatorsAvailable = function(translate, transla
|
|||
|
||||
if(!translators || !translators.length) Zotero.debug("Translate: No translators found");
|
||||
|
||||
// Note: async
|
||||
Zotero_Browser.updateStatus();
|
||||
}
|
||||
yield Zotero_Browser.updateStatus();
|
||||
yield Zotero_Browser.resolveDetectCallbacks();
|
||||
});
|
||||
|
||||
Zotero_Browser.init();
|
|
@ -18,7 +18,7 @@ describe("Zotero_Browser", function () {
|
|||
it("should save webpage to current collection", function* () {
|
||||
var uri = OS.Path.join(getTestDataDirectory().path, "snapshot", "index.html");
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.addEventListener('pageshow', () => deferred.resolve());
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
|
@ -39,7 +39,7 @@ describe("Zotero_Browser", function () {
|
|||
getTestDataDirectory().path, "metadata", "journalArticle-single.html"
|
||||
);
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.addEventListener('pageshow', () => deferred.resolve());
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
|
@ -60,7 +60,7 @@ describe("Zotero_Browser", function () {
|
|||
getTestDataDirectory().path, "book_and_child_note.ris"
|
||||
);
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.addEventListener('pageshow', () => deferred.resolve());
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
|
@ -81,7 +81,7 @@ describe("Zotero_Browser", function () {
|
|||
it("should save PDF to library root", function* () {
|
||||
var uri = OS.Path.join(getTestDataDirectory().path, "test.pdf");
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.addEventListener('pageshow', () => deferred.resolve());
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
|
@ -101,7 +101,7 @@ describe("Zotero_Browser", function () {
|
|||
it("should save PDF to current collection", function* () {
|
||||
var uri = OS.Path.join(getTestDataDirectory().path, "test.pdf");
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.addEventListener('pageshow', () => deferred.resolve());
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
|
@ -120,7 +120,7 @@ describe("Zotero_Browser", function () {
|
|||
it("shouldn't save webpage to My Publications", function* () {
|
||||
var uri = OS.Path.join(getTestDataDirectory().path, "snapshot", "index.html");
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.addEventListener('pageshow', () => deferred.resolve());
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
|
@ -142,7 +142,7 @@ describe("Zotero_Browser", function () {
|
|||
getTestDataDirectory().path, "metadata", "journalArticle-single.html"
|
||||
);
|
||||
var deferred = Zotero.Promise.defer();
|
||||
win.addEventListener('pageshow', () => deferred.resolve());
|
||||
win.Zotero_Browser.addDetectCallback(() => deferred.resolve());
|
||||
win.loadURI(uri);
|
||||
yield deferred.promise;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue