Bug 1130400. Add test.
authorTimothy Nikkel <tnikkel@gmail.com>
Fri, 27 Mar 2015 01:52:39 -0500
changeset 266390 1c4030c686d6cf5d143be795c6228368729581c5
parent 266389 3b30137b0f6aef6f8b17bae314a175f727a66e66
child 266391 71e33f9c871eb86bc81c1586db6c0bb7f1b7441c
push id830
push userraliiev@mozilla.com
push dateFri, 19 Jun 2015 19:24:37 +0000
treeherdermozilla-release@932614382a68 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1130400
milestone39.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 1130400. Add test.
layout/xul/test/chrome.ini
layout/xul/test/test_popupReflowPos.xul
--- a/layout/xul/test/chrome.ini
+++ b/layout/xul/test/chrome.ini
@@ -12,14 +12,15 @@ skip-if = buildapp == 'mulet'
 [test_bug398982-1.xul]
 [test_bug398982-2.xul]
 [test_bug467442.xul]
 [test_bug477754.xul]
 [test_bug703150.xul]
 skip-if = buildapp == 'mulet'
 [test_bug987230.xul]
 skip-if = os == 'linux' # No native mousedown event
+[test_popupReflowPos.xul]
 [test_popupSizeTo.xul]
 [test_popupZoom.xul]
 [test_resizer.xul]
 [test_stack.xul]
 [test_windowminmaxsize.xul]
 skip-if = buildapp == 'mulet'
new file mode 100644
--- /dev/null
+++ b/layout/xul/test/test_popupReflowPos.xul
@@ -0,0 +1,76 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
+<window title="XUL Panel reflow placement test"
+        xmlns:html="http://www.w3.org/1999/xhtml"
+        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
+  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/>
+
+  <!-- test results are displayed in the html:body -->
+  <body xmlns="http://www.w3.org/1999/xhtml">
+  </body>
+
+  <!-- test code goes here -->
+  <script type="application/javascript"><![CDATA[
+    SimpleTest.waitForExplicitFinish();
+
+    function openPopup()
+    {
+      synthesizeMouseAtCenter(document.getElementById("thebutton"), {}, window);
+    }
+
+    function popupShown(event)
+    {
+      document.getElementById("parent").className = "";
+
+      var buttonbcr = document.getElementById("thebutton").getBoundingClientRect();
+      var popupbcr = document.getElementById("thepopup").getOuterScreenRect();
+
+      ok(Math.abs(popupbcr.x - window.mozInnerScreenX - buttonbcr.x) < 3, "x pos is correct");
+      ok(Math.abs(popupbcr.y - window.mozInnerScreenY - buttonbcr.bottom) < 3, "y pos is correct");
+
+      event.target.hidePopup();
+    }
+
+    SimpleTest.waitForFocus(openPopup);
+   ]]></script>
+
+    <html:style>
+      .mbox {
+        display: inline-block;
+        width: 33%;
+        height: 50px;
+        background: green;
+        vertical-align: middle;
+      }
+      .orange {
+        background: orange;
+      }
+      .change > .mbox {
+        width: 60px;
+      }
+    </html:style>
+
+  <html:div style="width: 300px; height: 200px;">
+    <html:div id="parent" class="change" style="background: red; border: 1px solid black; width: 300px; height: 200px;">
+      <html:div class="mbox"></html:div>
+      <html:div class="mbox"></html:div>
+      <html:div class="mbox"></html:div>
+      <html:div class="mbox orange">
+
+          <button label="Show" type="menu" id="thebutton">
+            <menupopup id="thepopup" onpopupshown="popupShown(event)" onpopuphidden="SimpleTest.finish()">
+              <menuitem label="New"/>
+              <menuitem label="Open"/>
+              <menuitem label="Save"/>
+              <menuseparator/>
+              <menuitem label="Exit"/>
+            </menupopup>
+          </button>
+
+      </html:div>
+    </html:div>
+  </html:div>
+
+</window>