Bug 1276738 - Test that modal windows can be opened from the parent process. r=Gijs
☠☠ backed out by 966f2b633ac5 ☠ ☠
authorMike Conley <mconley@mozilla.com>
Tue, 03 May 2016 11:42:34 -0400
changeset 339025 c60082ec436a31a40cc03cb99191e0f715592eef
parent 339024 0ac161595496d7605cf4aae0282c1451484fea91
child 339026 14e071360b24812c8a9107ae7adbba47e75f28b4
push id6249
push userjlund@mozilla.com
push dateMon, 01 Aug 2016 13:59:36 +0000
treeherdermozilla-beta@bad9d4f5bf7e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersGijs
bugs1276738
milestone49.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1276738 - Test that modal windows can be opened from the parent process. r=Gijs MozReview-Commit-ID: 8PWxf9E6ZMv
embedding/components/windowwatcher/test/chrome.ini
embedding/components/windowwatcher/test/moz.build
embedding/components/windowwatcher/test/test_modal_windows.html
new file mode 100644
--- /dev/null
+++ b/embedding/components/windowwatcher/test/chrome.ini
@@ -0,0 +1,5 @@
+[DEFAULT]
+tags = openwindow
+
+[test_modal_windows.html]
+
--- a/embedding/components/windowwatcher/test/moz.build
+++ b/embedding/components/windowwatcher/test/moz.build
@@ -5,9 +5,14 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 BROWSER_CHROME_MANIFESTS += [
     'browser.ini',
 ]
 
 MOCHITEST_MANIFESTS += [
     'mochitest.ini',
-]
\ No newline at end of file
+]
+
+MOCHITEST_CHROME_MANIFESTS += [
+    'chrome.ini',
+]
+
new file mode 100644
--- /dev/null
+++ b/embedding/components/windowwatcher/test/test_modal_windows.html
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+Test that the parent can open modal windows, and that the modal window
+that is opened reports itself as being modal.
+-->
+<head>
+  <meta charset="utf-8">
+  <title>Test a modal window</title>
+
+  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+  <script src="chrome://mochikit/content/tests/SimpleTest/SpawnTask.js"></script>
+  <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
+
+  <script type="application/javascript;version=1.8">
+  const {utils: Cu, interfaces: Ci} = Components;
+
+  Cu.import("resource://gre/modules/Services.jsm");
+  Cu.import("resource://testing-common/BrowserTestUtils.jsm");
+
+  add_task(function*() {
+    BrowserTestUtils.domWindowOpened().then((win) => {
+      let treeOwner = win.QueryInterface(Ci.nsIInterfaceRequestor)
+                         .getInterface(Ci.nsIWebNavigation)
+                         .QueryInterface(Ci.nsIDocShellTreeItem)
+                         .treeOwner
+      let chromeFlags = treeOwner.QueryInterface(Ci.nsIInterfaceRequestor)
+                                 .getInterface(Ci.nsIXULWindow)
+                                 .chromeFlags;
+      ok(chromeFlags & Ci.nsIWebBrowserChrome.CHROME_MODAL,
+         "Should have the modal chrome flag");
+
+      let wbc = treeOwner.QueryInterface(Ci.nsIInterfaceRequestor)
+                         .getInterface(Ci.nsIWebBrowserChrome);
+      ok(wbc.isWindowModal(), "Should report as modal");
+
+      win.close();
+    });
+
+    let modal = window.openDialog("data:text/html,<p>This is a modal window for test_modal_windows.html</p>",
+                                  "_blank", "modal", null);
+    // Since the modal runs a nested event loop, just to be on the safe side,
+    // we'll wait a tick of the main event loop before resolving the task.
+    yield new Promise(resolve => setTimeout(resolve, 0));
+  });
+
+  </script>
+</head>
+<body>
+<p id="display"></p>
+<div id="content" style="display: none">
+</div>
+<pre id="test">
+</pre>
+</body>
+</html>
\ No newline at end of file