From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- dom/base/test/browser_refresh_content.js | 137 +++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 dom/base/test/browser_refresh_content.js (limited to 'dom/base/test/browser_refresh_content.js') diff --git a/dom/base/test/browser_refresh_content.js b/dom/base/test/browser_refresh_content.js new file mode 100644 index 0000000000..bd1cf8084a --- /dev/null +++ b/dom/base/test/browser_refresh_content.js @@ -0,0 +1,137 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +/* + * Ensures resources can still be fetched without validation + */ + +const CONTENT_URL = + "http://www.example.com/browser/dom/base/test/file_browser_refresh_content.html"; + +async function run_test_browser_refresh(forceRevalidate) { + let tab = await BrowserTestUtils.openNewForegroundTab({ + gBrowser, + url: CONTENT_URL, + waitForLoad: true, + /* Ensures each run is started with a fresh state */ + forceNewProcess: true, + }); + + let originalAttributes = await SpecialPowers.spawn( + tab.linkedBrowser, + [], + async () => { + let result = content.document.getElementById("result"); + await ContentTaskUtils.waitForCondition(() => { + return ( + result.getAttribute("imageDataURL") && + result.getAttribute("iframeContent") && + result.getAttribute("expiredResourceCacheControl") + ); + }); + return { + imageDataURL: result.getAttribute("imageDataURL"), + iframeContent: result.getAttribute("iframeContent"), + expiredResourceCacheControl: result.getAttribute( + "expiredResourceCacheControl" + ), + }; + } + ); + + let imageDataURL = originalAttributes.imageDataURL; + let expiredResourceCacheControl = + originalAttributes.expiredResourceCacheControl; + + is( + originalAttributes.iframeContent, + "first load", + "Iframe is loaded with the initial content" + ); + + tab.linkedBrowser.reload(); + + await BrowserTestUtils.browserLoaded(tab.linkedBrowser); + + let attributes = await SpecialPowers.spawn( + tab.linkedBrowser, + [], + async () => { + let result = content.document.getElementById("result"); + + await ContentTaskUtils.waitForCondition(() => { + return ( + result.getAttribute("imageDataURL") && + result.getAttribute("expiredResourceCacheControl") && + result.getAttribute("nonCacheableResourceCompleted") + ); + }); + + return { + iframeContent: result.getAttribute("iframeContent"), + imageDataURL: result.getAttribute("imageDataURL"), + expiredResourceCacheControl: result.getAttribute( + "expiredResourceCacheControl" + ), + nonCacheableResourceCompleted: result.getAttribute( + "nonCacheableResourceCompleted" + ), + }; + } + ); + + is( + attributes.iframeContent, + "second load", + "Iframe should always be revalidated" + ); + + if (!forceRevalidate) { + Assert.strictEqual( + attributes.imageDataURL, + imageDataURL, + "Image should use cache" + ); + } else { + Assert.notStrictEqual( + attributes.imageDataURL, + imageDataURL, + "Image should be revalidated" + ); + } + + if (!forceRevalidate) { + Assert.strictEqual( + attributes.expiredResourceCacheControl, + expiredResourceCacheControl, + "max-age shouldn't be changed after reload because it didn't revalidate" + ); + } else { + Assert.notStrictEqual( + attributes.expiredResourceCacheControl, + expiredResourceCacheControl, + "max-age should be changed after reload because it got revalidated" + ); + } + + is( + attributes.nonCacheableResourceCompleted, + "true", + "Non cacheable resource should still be loaded" + ); + + await BrowserTestUtils.removeTab(tab); +} + +add_task(async function test_browser_refresh() { + Services.prefs.setBoolPref( + "browser.soft_reload.only_force_validate_top_level_document", + true + ); + await run_test_browser_refresh(false); + Services.prefs.setBoolPref( + "browser.soft_reload.only_force_validate_top_level_document", + false + ); + await run_test_browser_refresh(true); +}); -- cgit v1.2.3