diff options
Diffstat (limited to 'netwerk/test/browser/browser_103_user_load.js')
-rw-r--r-- | netwerk/test/browser/browser_103_user_load.js | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/netwerk/test/browser/browser_103_user_load.js b/netwerk/test/browser/browser_103_user_load.js new file mode 100644 index 0000000000..01c4b71ab2 --- /dev/null +++ b/netwerk/test/browser/browser_103_user_load.js @@ -0,0 +1,81 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +// simulate user initiated loads by entering the URL in the URL-bar code based on +// https://searchfox.org/mozilla-central/rev/5644fae86d5122519a0e34ee03117c88c6ed9b47/browser/components/urlbar/tests/browser/browser_enter.js + +const { + request_count_checking, + test_hint_preload_internal, + test_hint_preload, +} = ChromeUtils.importESModule( + "resource://testing-common/early_hint_preload_test_helper.sys.mjs" +); + +const START_VALUE = + "https://example.com/browser/netwerk/test/browser/early_hint_asset_html.sjs?as=style&hinted=1"; + +add_setup(async function () { + await SpecialPowers.pushPrefEnv({ + set: [["browser.urlbar.suggest.quickactions", false]], + }); +}); + +Services.prefs.setBoolPref("network.early-hints.enabled", true); + +// bug 1780822 +add_task(async function user_initiated_load() { + // reset the count + let headers = new Headers(); + headers.append("X-Early-Hint-Count-Start", ""); + await fetch( + "https://example.com/browser/netwerk/test/browser/early_hint_pixel_count.sjs", + { headers } + ); + + info("Simple user initiated load"); + let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser); + + // under normal test conditions using the systemPrincipal as loadingPrincipal + // doesn't elicit a crash, changing the behavior for this test: + // https://searchfox.org/mozilla-central/rev/5644fae86d5122519a0e34ee03117c88c6ed9b47/dom/security/nsContentSecurityManager.cpp#1149-1150 + Services.prefs.setBoolPref( + "security.disallow_non_local_systemprincipal_in_tests", + true + ); + + gURLBar.value = START_VALUE; + gURLBar.focus(); + EventUtils.synthesizeKey("KEY_Enter"); + await BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser); + + // reset the config option + Services.prefs.clearUserPref( + "security.disallow_non_local_systemprincipal_in_tests" + ); + + // Check url bar and selected tab. + is( + gURLBar.value, + START_VALUE, + "Urlbar should preserve the value on return keypress" + ); + is(gBrowser.selectedTab, tab, "New URL was loaded in the current tab"); + + let gotRequestCount = await fetch( + "https://example.com/browser/netwerk/test/browser/early_hint_pixel_count.sjs" + ).then(response => response.json()); + let expectedRequestCount = { hinted: 1, normal: 0 }; + + await request_count_checking( + "test_preload_user_initiated", + gotRequestCount, + expectedRequestCount + ); + + // Cleanup. + BrowserTestUtils.removeTab(gBrowser.selectedTab); +}); |