diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /browser/base/content/test/siteIdentity/browser_session_store_pageproxystate.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | browser/base/content/test/siteIdentity/browser_session_store_pageproxystate.js | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/browser/base/content/test/siteIdentity/browser_session_store_pageproxystate.js b/browser/base/content/test/siteIdentity/browser_session_store_pageproxystate.js new file mode 100644 index 0000000000..5d8c011727 --- /dev/null +++ b/browser/base/content/test/siteIdentity/browser_session_store_pageproxystate.js @@ -0,0 +1,92 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +const triggeringPrincipal_base64 = E10SUtils.SERIALIZED_SYSTEMPRINCIPAL; + +let origBrowserState = SessionStore.getBrowserState(); + +add_setup(async function () { + registerCleanupFunction(() => { + SessionStore.setBrowserState(origBrowserState); + }); +}); + +// Test that when restoring tabs via SessionStore, we directly show the correct +// security state. +add_task(async function test_session_store_security_state() { + const state = { + windows: [ + { + tabs: [ + { + entries: [ + { url: "https://example.net", triggeringPrincipal_base64 }, + ], + }, + { + entries: [ + { url: "https://example.org", triggeringPrincipal_base64 }, + ], + }, + ], + selected: 1, + }, + ], + }; + + // Create a promise that resolves when the tabs have finished restoring. + let promiseTabsRestored = Promise.all([ + TestUtils.topicObserved("sessionstore-browser-state-restored"), + BrowserTestUtils.waitForEvent(gBrowser.tabContainer, "SSTabRestored"), + ]); + + SessionStore.setBrowserState(JSON.stringify(state)); + + await promiseTabsRestored; + + is(gBrowser.selectedTab, gBrowser.tabs[0], "First tab is selected initially"); + + info("Switch to second tab which has not been loaded yet."); + BrowserTestUtils.switchTab(gBrowser, gBrowser.tabs[1]); + is( + gURLBar.textbox.getAttribute("pageproxystate"), + "invalid", + "Page proxy state is invalid after tab switch" + ); + + // Wait for valid pageproxystate. As soon as we have a valid pageproxystate, + // showing the identity box, it should indicate a secure connection. + await BrowserTestUtils.waitForMutationCondition( + gURLBar.textbox, + { + attributeFilter: ["pageproxystate"], + }, + () => gURLBar.textbox.getAttribute("pageproxystate") == "valid" + ); + + // Wait for a tick for security state to apply. + await new Promise(resolve => setTimeout(resolve, 0)); + + is( + gBrowser.currentURI.spec, + "https://example.org/", + "Should have loaded example.org" + ); + is( + gIdentityHandler._identityBox.getAttribute("pageproxystate"), + "valid", + "identityBox pageproxystate is valid" + ); + + ok( + gIdentityHandler._isSecureConnection, + "gIdentityHandler._isSecureConnection is true" + ); + is( + gIdentityHandler._identityBox.className, + "verifiedDomain", + "identityBox class signals secure connection." + ); +}); |