diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 09:22:09 +0000 |
commit | 43a97878ce14b72f0981164f87f2e35e14151312 (patch) | |
tree | 620249daf56c0258faa40cbdcf9cfba06de2a846 /toolkit/components/windowcreator/test/browser_persist.js | |
parent | Initial commit. (diff) | |
download | firefox-43a97878ce14b72f0981164f87f2e35e14151312.tar.xz firefox-43a97878ce14b72f0981164f87f2e35e14151312.zip |
Adding upstream version 110.0.1.upstream/110.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/windowcreator/test/browser_persist.js')
-rw-r--r-- | toolkit/components/windowcreator/test/browser_persist.js | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/toolkit/components/windowcreator/test/browser_persist.js b/toolkit/components/windowcreator/test/browser_persist.js new file mode 100644 index 0000000000..83ad2e0ac8 --- /dev/null +++ b/toolkit/components/windowcreator/test/browser_persist.js @@ -0,0 +1,104 @@ +"use strict"; // -*- js-indent-level: 2; indent-tabs-mode: nil -*- + +Services.scriptloader.loadSubScript( + "chrome://mochikit/content/tests/SimpleTest/WindowSnapshot.js", + this +); + +const contentBase = + "https://example.com/browser/toolkit/components/windowcreator/test/"; +const chromeBase = + "chrome://mochitests/content/browser/toolkit/components/windowcreator/test/"; + +// Checks that the source and target documents are the same. +const REFTESTS = [ + "file_persist_srcset.html", + "file_persist_picture_source.html", + "file_persist_svg.html", + // ... +]; + +async function persist(name, uri) { + return BrowserTestUtils.withNewTab(uri, async function(browser) { + // Snapshot the doc as loaded, this is our reference. + info("snapshotting reference"); + let reference = await snapshotWindow(browser); + + info("starting persistence"); + let doc = await new Promise(function(resolve) { + browser.frameLoader.startPersistence(null, { + onDocumentReady(d) { + resolve(d); + }, + onError(e) { + ok(false, "startPersistence failed: " + e); + }, + }); + }); + + let wbp = Cc[ + "@mozilla.org/embedding/browser/nsWebBrowserPersist;1" + ].createInstance(Ci.nsIWebBrowserPersist); + let tmp = Services.dirsvc.get("TmpD", Ci.nsIFile); + let tmpFile = tmp.clone(); + tmpFile.append(name + "_saved.html"); + let tmpDir = tmp.clone(); + tmpDir.append(name + "_files"); + + registerCleanupFunction(function cleanUp() { + if (tmpFile.exists()) { + tmpFile.remove(/* recursive = */ false); + } + if (tmpDir.exists()) { + tmpDir.remove(/* recursive = */ true); + } + }); + + info("persisting document"); + // Wait for the persisted document. + await new Promise(function(resolve) { + wbp.progressListener = { + onProgressChange() {}, + onLocationChange() {}, + onStatusChange() {}, + onSecurityChange() {}, + onContentBlockingEvent() {}, + onStateChange(_wbp, _req, state, _status) { + if (state & Ci.nsIWebProgressListener.STATE_STOP) { + resolve(); + } + }, + }; + + wbp.saveDocument(doc, tmpFile, tmpDir, null, 0, 0); + }); + + info("load done, loading persisted document"); + let fileUri = Services.io.newFileURI(tmpFile).spec; + let test = await BrowserTestUtils.withNewTab(fileUri, async function( + persistedBrowser + ) { + info("snapshotting persisted document"); + return snapshotWindow(persistedBrowser); + }); + return { test, reference }; + }); +} + +add_task(async function() { + for (let filename of REFTESTS) { + let uri = contentBase + filename; + let { test, reference } = await persist(filename, uri); + let expectEqual = true; + let [same, testUri, refUri] = compareSnapshots( + test, + reference, + expectEqual + ); + ok(same, "test and references should match"); + if (!same) { + info(testUri); + info(refUri); + } + } +}); |