summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_bug408415.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/general/browser_bug408415.js')
-rw-r--r--browser/base/content/test/general/browser_bug408415.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/browser/base/content/test/general/browser_bug408415.js b/browser/base/content/test/general/browser_bug408415.js
new file mode 100644
index 000000000..d8f80f8be
--- /dev/null
+++ b/browser/base/content/test/general/browser_bug408415.js
@@ -0,0 +1,45 @@
+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.location.href += "#foo";
+ });
+
+ // 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);
+ });
+});
+