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 /testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts | |
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 'testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts')
8 files changed, 227 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-01.html b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-01.html new file mode 100644 index 0000000000..9710d15fb2 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-01.html @@ -0,0 +1,47 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>HTML Test: the browsing contexts must be sorted in the order that their containers were inserted into the Document</title> +<link rel="author" title="Intel" href="http://www.intel.com/" /> +<link rel="help" href="https://html.spec.whatwg.org/multipage/multipage/browsers.html#accessing-other-browsing-contexts" /> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> + +var t1 = async_test("The window's length must return the number of child browsing contexts(in iframe)"); +function on_load1(fr) { + t1.step(function () { + var doc = fr.contentDocument; + var fr3 = doc.createElement("iframe"); + fr3.setAttribute("id", "fr3"); + doc.body.insertBefore(fr3, doc.getElementById("tbl")); + + assert_equals(fr.contentWindow.length, 3, "The window.length should be 3."); + assert_array_equals([fr.contentWindow[0].frameElement, fr.contentWindow[1].frameElement, fr.contentWindow[2].frameElement], + [fr.contentDocument.getElementById("fr4"), fr.contentDocument.getElementById("fr5"), fr.contentDocument.getElementById("fr3")], + "The child browsing contexts must be sorted in the order that their containers were inserted into the Document."); + }); + t1.done(); +} + +var t2 = async_test("The window's length must return zero if it has no child browsing context"); +function on_load2(fr) { + t2.step(function () { + assert_equals(fr.contentWindow.length, 0, "The window.length should be 0."); + }); + t2.done(); +} + +</script> +<iframe id="fr1" src="test1.html" style="display:none" onload="on_load1(this)"></iframe> +<iframe id="fr2" src="test2.html" style="display:none" onload="on_load2(this)"></iframe> +<script> + +test(function () { + assert_equals(window.length, 2, "The window.length should be 2."); + assert_array_equals([window[0].frameElement, window[1].frameElement], + [document.getElementById("fr1"), document.getElementById("fr2")], + "The child browsing contexts must be sorted in the tree order."); +}, "The window's length must return the number of child browsing contexts"); + +</script> diff --git a/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-02.html b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-02.html new file mode 100644 index 0000000000..d09c944fd8 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-02.html @@ -0,0 +1,62 @@ +<!DOCTYPE html> +<head> + <meta charset="utf-8"> + <title>HTML Test: the browsing contexts created by various container elements</title> + <link rel="author" title="Intel" href="http://www.intel.com/" /> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script> + + var t1 = async_test("Accessing child browsing contexts 1"); + var t2 = async_test("Accessing child browsing contexts 2"); + var t3 = async_test("Accessing child browsing contexts 3"); + function on_load() { + //Child browsing contexts created by iframe, object and embed elements. + t1.step(function () { + assert_equals(window.length, 3, "The top browsing context should have 3 child browsing contexts."); + }); + t1.step(function () { + assert_equals(window[0].name, "win1", "The browsing context name should be 'win1'."); + assert_equals(window[1].name, "win2", "The browsing context name should be 'win2'."); + assert_equals(window[2].name, "win3", "The browsing context name should be 'win3'."); + }); + t1.done(); + + //Child browsing contexts created by frame elements. + t2.step(function () { + assert_equals(document.getElementById("fr").contentWindow.length, 2, + "The child browsing context created by the iframe element should have 2 child browsing contexts."); + }); + t2.step(function () { + assert_equals(document.getElementById("fr").contentWindow[0].name, "win4", + "The browsing context name should be 'win4'."); + assert_equals(document.getElementById("fr").contentWindow[1].name, "win5", + "The browsing context name should be 'win5'."); + }); + t2.done(); + + //The child browsing context will be removed if the data attribute of the associated object element is removed. + t3.step(function () { + document.getElementById("obj").removeAttribute("type"); + assert_equals(window.length, 3, "The top browsing context should have 3 child browsing contexts."); + document.getElementById("obj").removeAttribute("data"); + assert_equals(window.length, 3, "The top browsing context should have 3 child browsing contexts."); + + setTimeout(function () { + assert_equals(window.length, 2, "The top browsing context should have 2 child browsing contexts."); + }, 1); + }); + t3.done(); + } + + </script> +</head> +<body onload="on_load()"> + <div id="log"></div> + <div style="display:none"> + <iframe id="fr" name="win1" src="test3.html"></iframe> + <object id="obj" name="win2" type="text/html" data="about:blank"></object> + <object type="image/png" src="/images/green.png"></object> + <embed id="emb" name="win3" type="image/svg+xml" src="/images/green.svg"></embed> + </div> +</body> diff --git a/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-03.html b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-03.html new file mode 100644 index 0000000000..1548891175 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/indexed-browsing-contexts-03.html @@ -0,0 +1,30 @@ +<!DOCTYPE html> +<head> + <meta charset="utf-8"> + <title>HTML Test: indexed property of a Window object</title> + <link rel="author" title="Intel" href="http://www.intel.com/" /> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script> + + var t1 = async_test("Indexed child browsing contexts"); + function on_load() { + t1.step(function () { + assert_equals(window[0], document.getElementsByTagName("object")[0].contentWindow, + "The first child browsing context's container should be the object element."); + assert_equals(window[1], document.getElementsByTagName("iframe")[0].contentWindow, + "The second child browsing context's container should be the iframe element."); + }); + t1.done(); + } + + </script> +</head> +<body onload="on_load()"> + <div id="log"></div> + <div style="display:none"> + <div id="0"></div> + <object name="0" type="text/html" data="test2.html"></object> + <iframe name="0" src="about:blank"></iframe> + </div> +</body> diff --git a/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/iterator.html b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/iterator.html new file mode 100644 index 0000000000..76dc7dbae6 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/iterator.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>window[@@iterator]</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<script> +test(function() { + assert_false(Symbol.iterator in window); +}); +</script> diff --git a/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/test1.html b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/test1.html new file mode 100644 index 0000000000..f85f90f7c6 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/test1.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>HTML Test: child browsing contexts created by iframe elements</title> +<link rel="author" title="Intel" href="http://www.intel.com/" /> +<table id="tbl"> + <tr> + <td> + <iframe id="fr4" src=""></iframe> + </td> + </tr> + <iframe id="fr5" src="about:blank"></iframe> +</table> diff --git a/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/test2.html b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/test2.html new file mode 100644 index 0000000000..d6a16647fe --- /dev/null +++ b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/test2.html @@ -0,0 +1,6 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>HTML Test: child browsing contexts created by object and embed elements</title> +<link rel="author" title="Intel" href="http://www.intel.com/" /> +<object type="image/png" src="/images/green.png"></object> +<embed type="image/png" src="/images/green.png"></embed> diff --git a/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/test3.html b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/test3.html new file mode 100644 index 0000000000..a62fdbaae7 --- /dev/null +++ b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/test3.html @@ -0,0 +1,8 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>HTML Test: child browsing contexts created by frame elements</title> +<link rel="author" title="Intel" href="http://www.intel.com/" /> +<frameset> + <frame name="win4"></frame> + <frame name="win5"></frame> +</frameset> diff --git a/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html new file mode 100644 index 0000000000..c9559b531a --- /dev/null +++ b/testing/web-platform/tests/html/browsers/the-window-object/accessing-other-browsing-contexts/window_length.html @@ -0,0 +1,51 @@ +<!doctype html> +<title>window.length</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id=log></div> +<script> +var iframe; +var subframe; +var other_window; +test(function() {assert_equals(window.length, 0)}, "No child browsing contexts"); +test(function() { + iframe = document.createElement("iframe"); + assert_equals(window.length, 0) +}, "iframe not inserted into the document"); + +test(function() { + document.body.appendChild(iframe); + assert_equals(window.length, 1) +}, "One iframe inserted into the document"); + +test(function() { + subframe = document.createElement("iframe"); + iframe.contentDocument.body.appendChild(subframe); + assert_equals(window.length, 1); +}, "Child browsing context has a child browsing context"); + +test(function() { + try { + assert_equals(iframe.contentWindow.length, 1); + } finally { + subframe.parentNode.removeChild(subframe); + } +}, "window.length in child frame"); + +test(function() { + iframe.parentNode.removeChild(iframe); + other_window = window.open(); + assert_equals(window.length, 0); + assert_equals(other_window.length, 0); +}, "Opened window") + +test(function() { + other_window.document.body.appendChild(iframe); + try { + assert_equals(other_window.length, 1); + } finally { + other_window.close(); + } +}, "Iframe in opened window") + +</script> |