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 341038 c60082ec436a31a40cc03cb99191e0f715592eef
parent 341037 0ac161595496d7605cf4aae0282c1451484fea91
child 341039 14e071360b24812c8a9107ae7adbba47e75f28b4
push id1183
push userraliiev@mozilla.com
push dateMon, 05 Sep 2016 20:01:49 +0000
treeherdermozilla-release@3148731bed45 [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