diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /testing/web-platform/tests/measure-memory/detached.https.window.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/measure-memory/detached.https.window.js')
-rw-r--r-- | testing/web-platform/tests/measure-memory/detached.https.window.js | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/testing/web-platform/tests/measure-memory/detached.https.window.js b/testing/web-platform/tests/measure-memory/detached.https.window.js new file mode 100644 index 0000000000..1fcedef54c --- /dev/null +++ b/testing/web-platform/tests/measure-memory/detached.https.window.js @@ -0,0 +1,198 @@ +// META: script=/common/get-host-info.sub.js +// META: script=./resources/checker.js +// META: script=./resources/common.js +// META: timeout=long +'use strict'; + + +promise_test(async testCase => { + assert_true(self.crossOriginIsolated); + + const {iframes, windows} = await build([ + { + id: 'cross-site-1', + children: [ + { + id: 'same-origin-2', + }, + { + id: 'same-origin-11', + window_open: true, + }, + ], + }, + { + id: 'same-origin-3', + children: [ + { + id: 'same-origin-4', + }, + { + id: 'same-origin-12', + window_open: true, + }, + ], + }, + { + id: 'cross-origin-5', + children: [ + { + id: 'same-origin-6', + }, + { + id: 'same-origin-13', + window_open: true, + }, + ], + }, + { + id: 'same-origin-7', + window_open: true, + children: [ + { + id: 'same-origin-8', + } + ], + }, + { + id: 'cross-origin-9', + window_open: true, + children: [ + { + id: 'same-origin-10', + } + ], + }, + ]); + const expected = [ + { + url: window.location.href, + scope: 'Window', + container: null, + }, + { + url: 'cross-origin-url', + scope: 'cross-origin-aggregated', + container: { + id: 'cross-site-1', + src: iframes['cross-site-1'].src, + }, + }, + { + url: windows['same-origin-2'].location.href, + scope: 'Window', + container: { + id: 'cross-site-1', + src: iframes['cross-site-1'].src, + }, + }, + { + url: windows['same-origin-3'].location.href, + scope: 'Window', + container: { + id: 'same-origin-3', + src: iframes['same-origin-3'].src, + }, + }, + { + url: windows['same-origin-4'].location.href, + scope: 'Window', + container: { + id: 'same-origin-4', + src: iframes['same-origin-4'].src, + }, + }, + { + url: 'cross-origin-url', + scope: 'cross-origin-aggregated', + container: { + id: 'cross-origin-5', + src: iframes['cross-origin-5'].src, + }, + }, + { + url: windows['same-origin-6'].location.href, + scope: 'Window', + container: { + id: 'cross-origin-5', + src: iframes['cross-origin-5'].src, + }, + }, + { + url: windows['same-origin-8'].location.href, + scope: 'Window', + container: { + id: 'same-origin-8', + src: iframes['same-origin-8'].src, + }, + }, + { + url: windows['same-origin-7'].location.href, + scope: 'Window', + container: null, + }, + { + url: windows['same-origin-11'].location.href, + scope: 'Window', + container: null, + }, + { + url: windows['same-origin-12'].location.href, + scope: 'Window', + container: null, + }, + { + url: windows['same-origin-13'].location.href, + scope: 'Window', + container: null, + }, + ]; + const keep = sameOriginContexts(frames).concat(sameOriginContexts(windows)); + // Detach iframes: + // 1) By setting src attribute: + iframes['cross-site-1'].src = + iframes['cross-site-1'].src.replace('iframe.sub', 'iframe.secret.sub'); + // 2) By setting location attribute: + let url = iframes['same-origin-3'].contentWindow.location.href; + url = url.replace('iframe.sub', 'iframe.secret.sub'); + iframes['same-origin-3'].contentWindow.location.href = url; + // 3) By removing from the DOM tree: + iframes['cross-origin-5'].parentNode.removeChild(iframes['cross-origin-5']); + + // Detach windows: + // 1) By setting document.location attribute: + url = windows['same-origin-7'].location.href; + url = url.replace('window.sub', 'window.secret.sub'); + windows['same-origin-7'].location.href = url; + // 2) By closing the window: + windows['same-origin-10'].parent.close(); + + await waitForMessage('cross-site-1'); + await waitForMessage('same-origin-3'); + await waitForMessage('same-origin-7'); + + expected.push({ + url: 'cross-origin-url', + scope: 'cross-origin-aggregated', + container: { + id: 'cross-site-1', + src: iframes['cross-site-1'].src, + }, + }); + + expected.push({ + url: windows['same-origin-3'].location.href, + scope: 'Window', + container: { + id: 'same-origin-3', + src: iframes['same-origin-3'].src, + }, + }); + expected.push({ + url: windows['same-origin-7'].location.href, + scope: 'Window', + container: null, + }); + const result = await performance.measureUserAgentSpecificMemory(); + checkMeasureMemory(result, expected); +}, 'performance.measureUserAgentSpecificMemory URLs within a cross-site iframe.'); |