summaryrefslogtreecommitdiffstats
path: root/dom/base/test/browser_multiple_popups.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/base/test/browser_multiple_popups.html')
-rw-r--r--dom/base/test/browser_multiple_popups.html63
1 files changed, 63 insertions, 0 deletions
diff --git a/dom/base/test/browser_multiple_popups.html b/dom/base/test/browser_multiple_popups.html
new file mode 100644
index 0000000000..6e0b85ea06
--- /dev/null
+++ b/dom/base/test/browser_multiple_popups.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html>
+<body>
+ <button onclick="openPopups();" id="openPopups">open popups</button>
+ <button onclick="openNestedPopups();" id="openNestedPopups">open tested popups</button>
+ <button onclick="openPopupAndClick();" id="openPopupAndClick">open popups and click</button>
+ <button onclick="closeAllWindows();" id="closeAllWindows">close all windows</button>
+ <button onclick="openPopupInFrame();" id="openPopupInFrame">open popup in frame</button>
+ <input type="text" id="input" />
+ <script>
+let windows = [];
+
+function openPopups() {
+ windows.push(window.open('empty.html', '_blank', 'width=100,height=100'));
+ windows.push(window.open('empty.html', '_blank', 'width=100,height=100'));
+}
+
+function openNestedPopups() {
+ var w = window.open('empty.html', '_blank', 'width=100,height=100');
+ windows.push(w);
+ windows.push(w.open('empty.html', '_blank', 'width=100,height=100'));
+}
+
+var recursion = false;
+function openPopupAndClick() {
+ windows.push(window.open('empty.html', '_blank', 'width=100,height=100'));
+ if (!recursion) {
+ recursion = true;
+ document.getElementById("openPopupAndClick").click();
+ }
+}
+
+function openPopupInFrame() {
+ let iframe = document.createElement("iframe");
+ iframe.style.display = "none";
+ document.body.appendChild(iframe);
+ windows.push(iframe.contentWindow.open('empty.html', '_blank', 'width=100,height=100'));
+ iframe.remove();
+}
+
+function closeAllWindows() {
+ windows.forEach(w => {
+ try {
+ w.close();
+ } catch(e) {}
+ });
+}
+
+if (location.search.includes("openPopups")) {
+ let id = setInterval(() => {
+ if (document.getElementById('start')) {
+ clearInterval(id);
+ openPopups();
+ }
+ }, 500);
+}
+
+document.getElementById("input").onmouseup = _ => {
+ openPopups();
+}
+ </script>
+</body>
+</html>