summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/browser/browser_hashChangeProxyState.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/urlbar/tests/browser/browser_hashChangeProxyState.js')
-rw-r--r--browser/components/urlbar/tests/browser/browser_hashChangeProxyState.js151
1 files changed, 151 insertions, 0 deletions
diff --git a/browser/components/urlbar/tests/browser/browser_hashChangeProxyState.js b/browser/components/urlbar/tests/browser/browser_hashChangeProxyState.js
new file mode 100644
index 0000000000..d0e236fe7e
--- /dev/null
+++ b/browser/components/urlbar/tests/browser/browser_hashChangeProxyState.js
@@ -0,0 +1,151 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"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(async function () {
+ await SpecialPowers.pushPrefEnv({
+ set: [["browser.navigation.requireUserInteraction", false]],
+ });
+ let baseURL = `${TEST_BASE_URL}dummy_page.html`;
+ let url = baseURL + "#foo";
+ await BrowserTestUtils.withNewTab(
+ { gBrowser, url },
+ async function (browser) {
+ let identityBox = document.getElementById("identity-box");
+ let expectedURL = url;
+
+ let verifyURLBarState = testType => {
+ is(
+ gURLBar.value,
+ expectedURL,
+ "URL bar visible value should be correct " + testType
+ );
+ is(
+ gURLBar.untrimmedValue,
+ 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 = urlTemp => {
+ expectedURL = urlTemp;
+ locationChangePromise = new Promise(
+ r => (resolveLocationChangePromise = r)
+ );
+ };
+ let wpl = {
+ onLocationChange(unused, unused2, location) {
+ is(location.spec, expectedURL, "Got the expected URL");
+ resolveLocationChangePromise();
+ },
+ };
+ gBrowser.addProgressListener(wpl);
+
+ expectURL(baseURL + "#foo");
+ gURLBar.select();
+ EventUtils.sendKey("return");
+
+ await locationChangePromise;
+ verifyURLBarState("after hitting enter on the same URL a second time");
+
+ expectURL(baseURL + "#bar");
+ gURLBar.value = expectedURL;
+ gURLBar.select();
+ EventUtils.sendKey("return");
+
+ await locationChangePromise;
+ verifyURLBarState("after a URL bar hash navigation");
+
+ expectURL(baseURL + "#foo");
+ await SpecialPowers.spawn(browser, [], function () {
+ let a = content.document.createElement("a");
+ a.href = "#foo";
+ a.textContent = "Foo Link";
+ content.document.body.appendChild(a);
+ a.click();
+ });
+
+ await locationChangePromise;
+ verifyURLBarState("after a page link hash navigation");
+
+ expectURL(baseURL + "#bar");
+ gBrowser.goBack();
+
+ await locationChangePromise;
+ verifyURLBarState("after going back");
+
+ expectURL(baseURL + "#foo");
+ gBrowser.goForward();
+
+ await locationChangePromise;
+ verifyURLBarState("after going forward");
+
+ expectURL(baseURL + "#foo");
+ gURLBar.select();
+ EventUtils.sendKey("return");
+
+ await 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(async function () {
+ // Ensure there's no preloaded newtab browser, since that'll not fire a load event.
+ NewTabPagePreloading.removePreloadedBrowser(window);
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ gBrowser,
+ "about:newtab"
+ );
+ let url = `${TEST_BASE_URL}dummy_page.html#foo`;
+ gURLBar.value = url;
+ gURLBar.select();
+ EventUtils.sendKey("return");
+ await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
+
+ is(
+ gURLBar.value,
+ url,
+ "URL bar visible value should be correct when the page loads from about:newtab"
+ );
+ is(
+ gURLBar.untrimmedValue,
+ 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"
+ );
+ BrowserTestUtils.removeTab(tab);
+});