forked from mirrors/gecko-dev
111 lines
3.9 KiB
JavaScript
111 lines
3.9 KiB
JavaScript
"use strict";
|
|
|
|
/**
|
|
* Check that navigating through both the URL bar and using in-page hash- or ref-
|
|
* based links and back or forward navigation updates the URL bar and identity block correctly.
|
|
*/
|
|
add_task(function* () {
|
|
let baseURL = "https://example.org/browser/browser/base/content/test/urlbar/dummy_page.html";
|
|
let url = baseURL + "#foo";
|
|
yield BrowserTestUtils.withNewTab({ gBrowser, url }, function*(browser) {
|
|
let identityBox = document.getElementById("identity-box");
|
|
let expectedURL = url;
|
|
|
|
let verifyURLBarState = testType => {
|
|
is(gURLBar.textValue, expectedURL, "URL bar visible value should be correct " + testType);
|
|
is(gURLBar.value, expectedURL, "URL bar value should be correct " + testType);
|
|
ok(identityBox.classList.contains("verifiedDomain"), "Identity box should know we're doing SSL " + testType);
|
|
is(gURLBar.getAttribute("pageproxystate"), "valid", "URL bar is in valid page proxy state");
|
|
};
|
|
|
|
verifyURLBarState("at the beginning");
|
|
|
|
let locationChangePromise;
|
|
let resolveLocationChangePromise;
|
|
let expectURL = url => {
|
|
expectedURL = url;
|
|
locationChangePromise = new Promise(r => resolveLocationChangePromise = r);
|
|
};
|
|
let wpl = {
|
|
onLocationChange(wpl, request, location, flags) {
|
|
is(location.spec, expectedURL, "Got the expected URL");
|
|
resolveLocationChangePromise();
|
|
},
|
|
};
|
|
gBrowser.addProgressListener(wpl);
|
|
|
|
expectURL(baseURL + "#foo");
|
|
gURLBar.select();
|
|
EventUtils.sendKey("return");
|
|
|
|
yield locationChangePromise;
|
|
verifyURLBarState("after hitting enter on the same URL a second time");
|
|
|
|
expectURL(baseURL + "#bar");
|
|
gURLBar.value = expectedURL;
|
|
gURLBar.select();
|
|
EventUtils.sendKey("return");
|
|
|
|
yield locationChangePromise;
|
|
verifyURLBarState("after a URL bar hash navigation");
|
|
|
|
expectURL(baseURL + "#foo");
|
|
yield ContentTask.spawn(browser, null, function() {
|
|
let a = content.document.createElement("a");
|
|
a.href = "#foo";
|
|
a.textContent = "Foo Link";
|
|
content.document.body.appendChild(a);
|
|
a.click();
|
|
});
|
|
|
|
yield locationChangePromise;
|
|
verifyURLBarState("after a page link hash navigation");
|
|
|
|
expectURL(baseURL + "#bar");
|
|
gBrowser.goBack();
|
|
|
|
yield locationChangePromise;
|
|
verifyURLBarState("after going back");
|
|
|
|
expectURL(baseURL + "#foo");
|
|
gBrowser.goForward();
|
|
|
|
yield locationChangePromise;
|
|
verifyURLBarState("after going forward");
|
|
|
|
expectURL(baseURL + "#foo");
|
|
gURLBar.select();
|
|
EventUtils.sendKey("return");
|
|
|
|
yield locationChangePromise;
|
|
verifyURLBarState("after hitting enter on the same URL");
|
|
|
|
gBrowser.removeProgressListener(wpl);
|
|
});
|
|
});
|
|
|
|
/**
|
|
* Check that initial secure loads that swap remoteness
|
|
* get the correct page icon when finished.
|
|
*/
|
|
add_task(function* () {
|
|
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "about:newtab", false);
|
|
// NB: CPOW usage because new tab pages can be preloaded, in which case no
|
|
// load events fire.
|
|
yield BrowserTestUtils.waitForCondition(() => !tab.linkedBrowser.contentDocument.hidden)
|
|
let url = "https://example.org/browser/browser/base/content/test/urlbar/dummy_page.html#foo";
|
|
gURLBar.value = url;
|
|
gURLBar.select();
|
|
EventUtils.sendKey("return");
|
|
yield BrowserTestUtils.browserLoaded(tab.linkedBrowser);
|
|
|
|
is(gURLBar.textValue, url, "URL bar visible value should be correct when the page loads from about:newtab");
|
|
is(gURLBar.value, url, "URL bar value should be correct when the page loads from about:newtab");
|
|
let identityBox = document.getElementById("identity-box");
|
|
ok(identityBox.classList.contains("verifiedDomain"),
|
|
"Identity box should know we're doing SSL when the page loads from about:newtab");
|
|
is(gURLBar.getAttribute("pageproxystate"), "valid",
|
|
"URL bar is in valid page proxy state when SSL page with hash loads from about:newtab");
|
|
yield BrowserTestUtils.removeTab(tab);
|
|
});
|
|
|