fune/browser/base/content/test/urlbar/browser_urlbar_stop_pending.js
Gijs Kruitbosch e4f6985644 Bug 798249 - track when we're 'inside' a loadURI call when dealing with Stop() calls resulting from the same, r=mconley
MozReview-Commit-ID: 48xQn03HtjZ

--HG--
extra : rebase_source : 29669594a65d2f8710445bb8ae9b4b92c5834c91
2016-02-16 14:08:14 +00:00

42 lines
1.5 KiB
JavaScript

"use strict";
const SLOW_PAGE = "http://www.example.com/browser/browser/base/content/test/urlbar/slow-page.sjs";
const SLOW_PAGE2 = "http://mochi.test:8888/browser/browser/base/content/test/urlbar/slow-page.sjs?faster";
/**
* Check that if we:
* 1) have a loaded page
* 2) load a separate URL
* 3) before the URL for step 2 has finished loading, load a third URL
* we don't revert to the URL from (1).
*/
add_task(function*() {
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com", true, true);
let expectedURLBarChange = SLOW_PAGE;
let sawChange = false;
let handler = e => {
sawChange = true;
is(gURLBar.value, expectedURLBarChange, "Should not change URL bar value!");
};
let obs = new MutationObserver(handler);
obs.observe(gURLBar, {attributes: true});
gURLBar.value = SLOW_PAGE;
gURLBar.handleCommand();
// If this ever starts going intermittent, we've broken this.
yield new Promise(resolve => setTimeout(resolve, 200));
expectedURLBarChange = SLOW_PAGE2;
let pageLoadPromise = BrowserTestUtils.browserLoaded(tab.linkedBrowser);
gURLBar.value = expectedURLBarChange;
gURLBar.handleCommand();
is(gURLBar.value, expectedURLBarChange, "Should not have changed URL bar value synchronously.");
yield pageLoadPromise;
ok(sawChange, "The URL bar change handler should have been called by the time the page was loaded");
obs.disconnect();
obs = null;
yield BrowserTestUtils.removeTab(tab);
});