fune/browser/base/content/test/general/browser_bug550565.js

44 lines
1.5 KiB
JavaScript

add_task(function* test() {
let testPath = getRootDirectory(gTestPath);
yield BrowserTestUtils.withNewTab({ gBrowser, url: "about:blank" },
function* (tabBrowser) {
const URI = testPath + "file_with_favicon.html";
const expectedIcon = testPath + "file_generic_favicon.ico";
let got_favicon = Promise.defer();
let listener = {
onLinkIconAvailable(browser, iconURI) {
if (got_favicon && iconURI && browser === tabBrowser) {
got_favicon.resolve(iconURI);
got_favicon = null;
}
}
};
gBrowser.addTabsProgressListener(listener);
BrowserTestUtils.loadURI(tabBrowser, URI);
let iconURI = yield got_favicon.promise;
is(iconURI, expectedIcon, "Correct icon before pushState.");
got_favicon = Promise.defer();
got_favicon.promise.then(() => { ok(false, "shouldn't be called"); }, (e) => e);
yield ContentTask.spawn(tabBrowser, null, function() {
content.history.pushState("page2", "page2", "page2");
});
// We've navigated and shouldn't get a call to onLinkIconAvailable.
TestUtils.executeSoon(() => {
got_favicon.reject(gBrowser.getIcon(gBrowser.getTabForBrowser(tabBrowser)));
});
try {
yield got_favicon.promise;
} catch (e) {
iconURI = e;
}
is(iconURI, expectedIcon, "Correct icon after pushState.");
gBrowser.removeTabsProgressListener(listener);
});
});