summaryrefslogtreecommitdiffstats
path: root/toolkit/content/tests/chrome/test_arrowpanel.xul
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/content/tests/chrome/test_arrowpanel.xul')
-rw-r--r--toolkit/content/tests/chrome/test_arrowpanel.xul327
1 files changed, 0 insertions, 327 deletions
diff --git a/toolkit/content/tests/chrome/test_arrowpanel.xul b/toolkit/content/tests/chrome/test_arrowpanel.xul
deleted file mode 100644
index 671c33a15..000000000
--- a/toolkit/content/tests/chrome/test_arrowpanel.xul
+++ /dev/null
@@ -1,327 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
-<?xml-stylesheet href="/tests/SimpleTest/test.css" type="text/css"?>
-
-<window title="Arrow Panels"
- style="padding: 10px;"
- 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"/>
-
-<stack flex="1">
- <label id="topleft" value="Top Left Corner" left="15" top="15"/>
- <label id="topright" value="Top Right" right="15" top="15"/>
- <label id="bottomleft" value="Bottom Left Corner" left="15" bottom="15"/>
- <label id="bottomright" value="Bottom Right" right="15" bottom="15"/>
- <!-- Our SimpleTest/TestRunner.js runs tests inside an iframe which sizes are W=500 H=300.
- 'left' and 'top' values need to be set so that the panel (popup) has enough room to display on its 4 sides. -->
- <label id="middle" value="+/- Centered" left="225" top="135"/>
- <iframe id="frame" type="content"
- src="data:text/html,&lt;input id='input'&gt;" width="100" height="100" left="225" top="120"/>
-</stack>
-
-<panel id="panel" type="arrow" animate="false"
- onpopupshown="checkPanelPosition(this)" onpopuphidden="runNextTest.next()">
- <box width="115" height="65"/>
-</panel>
-
-<panel id="bigpanel" type="arrow" animate="false"
- onpopupshown="checkBigPanel(this)" onpopuphidden="runNextTest.next()">
- <box width="125" height="3000"/>
-</panel>
-
-<panel id="animatepanel" type="arrow"
- onpopupshown="animatedPopupShown = true;"
- onpopuphidden="animatedPopupHidden = true; runNextTest.next();">
- <label value="Animate Closed" height="40"/>
-</panel>
-
-<script type="application/javascript">
-<![CDATA[
-
-SimpleTest.waitForExplicitFinish();
-
-const isOSXYosemite = navigator.userAgent.indexOf("Mac OS X 10.10") != -1;
-
-var expectedAnchor = null;
-var expectedSide = "", expectedAnchorEdge = "", expectedPack = "", expectedAlignment = "";
-var zoomFactor = 1;
-var animatedPopupShown = false;
-var animatedPopupHidden = false;
-var runNextTest;
-
-function startTest()
-{
- runNextTest = nextTest();
- runNextTest.next();
-}
-
-function nextTest()
-{
- var panel = $("panel");
-
- function openPopup(position, anchor, expected, anchorEdge, pack, alignment)
- {
- expectedAnchor = anchor instanceof Node ? anchor : $(anchor);
- expectedSide = expected;
- expectedAnchorEdge = anchorEdge;
- expectedPack = pack;
- expectedAlignment = alignment == undefined ? position : alignment;
-
- panel.removeAttribute("side");
- panel.openPopup(expectedAnchor, position, 0, 0, false, false, null);
- }
-
- for (var iter = 0; iter < 2; iter++) {
- openPopup("after_start", "topleft", "top", "left", "start");
- yield;
- openPopup("after_start", "bottomleft", "bottom", "left", "start", "before_start");
- yield;
- openPopup("before_start", "topleft", "top", "left", "start", "after_start");
- yield;
- openPopup("before_start", "bottomleft", "bottom", "left", "start");
- yield;
- openPopup("after_start", "middle", "top", "left", "start");
- yield;
- openPopup("before_start", "middle", "bottom", "left", "start");
- yield;
-
- openPopup("after_start", "topright", "top", "right", "end", "after_end");
- yield;
- openPopup("after_start", "bottomright", "bottom", "right", "end", "before_end");
- yield;
- openPopup("before_start", "topright", "top", "right", "end", "after_end");
- yield;
- openPopup("before_start", "bottomright", "bottom", "right", "end", "before_end");
- yield;
-
- openPopup("after_end", "middle", "top", "right", "end");
- yield;
- openPopup("before_end", "middle", "bottom", "right", "end");
- yield;
-
- openPopup("start_before", "topleft", "left", "top", "start", "end_before");
- yield;
- openPopup("start_before", "topright", "right", "top", "start");
- yield;
- openPopup("end_before", "topleft", "left", "top", "start");
- yield;
- openPopup("end_before", "topright", "right", "top", "start", "start_before");
- yield;
- openPopup("start_before", "middle", "right", "top", "start");
- yield;
- openPopup("end_before", "middle", "left", "top", "start");
- yield;
-
- openPopup("start_before", "bottomleft", "left", "bottom", "end", "end_after");
- yield;
- openPopup("start_before", "bottomright", "right", "bottom", "end", "start_after");
- yield;
- openPopup("end_before", "bottomleft", "left", "bottom", "end", "end_after");
- yield;
- openPopup("end_before", "bottomright", "right", "bottom", "end", "start_after");
- yield;
-
- openPopup("start_after", "middle", "right", "bottom", "end");
- yield;
- openPopup("end_after", "middle", "left", "bottom", "end");
- yield;
-
- openPopup("topcenter bottomleft", "bottomleft", "bottom", "center left", "start", "before_start");
- yield;
- openPopup("bottomcenter topleft", "topleft", "top", "center left", "start", "after_start");
- yield;
- openPopup("topcenter bottomright", "bottomright", "bottom", "center right", "end", "before_end");
- yield;
- openPopup("bottomcenter topright", "topright", "top", "center right", "end", "after_end");
- yield;
- openPopup("topcenter bottomleft", "middle", "bottom", "center left", "start", "before_start");
- yield;
- openPopup("bottomcenter topleft", "middle", "top", "center left", "start", "after_start");
- yield;
-
- openPopup("leftcenter topright", "middle", "right", "center top", "start", "start_before");
- yield;
- openPopup("rightcenter bottomleft", "middle", "left", "center bottom", "end", "end_after");
- yield;
-
-/*
- XXXndeakin disable these parts of the test which often cause problems, see bug 626563
-
- openPopup("after_start", frames[0].document.getElementById("input"), "top", "left", "start");
- yield;
-
- setScale(frames[0], 1.5);
- openPopup("after_start", frames[0].document.getElementById("input"), "top", "left", "start");
- yield;
-
- setScale(frames[0], 2.5);
- openPopup("before_start", frames[0].document.getElementById("input"), "bottom", "left", "start");
- yield;
-
- setScale(frames[0], 1);
-*/
-
- $("bigpanel").openPopup($("topleft"), "after_start", 0, 0, false, false, null, "start");
- yield;
-
- // switch to rtl mode
- document.documentElement.style.direction = "rtl";
- $("topleft").setAttribute("right", "15");
- $("topright").setAttribute("left", "15");
- $("bottomleft").setAttribute("right", "15");
- $("bottomright").setAttribute("left", "15");
- $("topleft").removeAttribute("left");
- $("topright").removeAttribute("right");
- $("bottomleft").removeAttribute("left");
- $("bottomright").removeAttribute("right");
- }
-
- // Test that a transition occurs when opening or closing the popup. The transition is
- // disabled on Linux.
- if (navigator.platform.indexOf("Linux") == -1) {
- function transitionEnded(event) {
- if ($("animatepanel").state != "open") {
- is($("animatepanel").state, "showing", "state is showing during transitionend");
- ok(!animatedPopupShown, "popupshown not fired yet")
- } else {
- is($("animatepanel").state, "open", "state is open after transitionend");
- ok(animatedPopupShown, "popupshown now fired")
- SimpleTest.executeSoon(() => runNextTest.next());
- }
- }
-
- // Check that the transition occurs for an arrow panel with animate="true"
- window.addEventListener("transitionend", transitionEnded, false);
- $("animatepanel").openPopup($("topleft"), "after_start", 0, 0, false, false, null, "start");
- is($("animatepanel").state, "showing", "state is showing");
- yield;
- window.removeEventListener("transitionend", transitionEnded, false);
-
- synthesizeKey("VK_ESCAPE", { });
- ok(!animatedPopupHidden, "animated popup not hidden yet");
- yield;
- }
-
- SimpleTest.finish()
- yield;
-}
-
-function setScale(win, scale)
-{
- var wn = win.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
- .getInterface(Components.interfaces.nsIWebNavigation);
- var shell = wn.QueryInterface(Components.interfaces.nsIDocShell);
- var docViewer = shell.contentViewer;
- docViewer.fullZoom = scale;
- zoomFactor = scale;
-}
-
-function checkPanelPosition(panel)
-{
- let anchor = panel.anchorNode;
- let adj = 0, hwinpos = 0, vwinpos = 0;
- if (anchor.ownerDocument != document) {
- var framerect = anchor.ownerDocument.defaultView.frameElement.getBoundingClientRect();
- hwinpos = framerect.left;
- vwinpos = framerect.top;
- }
-
- // Positions are reversed in rtl yet the coordinates used in the computations
- // are not, so flip the expected label side and anchor edge.
- var isRTL = (window.getComputedStyle(panel).direction == "rtl");
- if (isRTL) {
- var flipLeftRight = val => val == "left" ? "right" : "left";
- expectedAnchorEdge = expectedAnchorEdge.replace(/(left|right)/, flipLeftRight);
- expectedSide = expectedSide.replace(/(left|right)/, flipLeftRight);
- }
-
- var panelRect = panel.getBoundingClientRect();
- var anchorRect = anchor.getBoundingClientRect();
- var contentBO = panel.firstChild.boxObject;
- var contentRect = { top: contentBO.y,
- left: contentBO.x,
- bottom: contentBO.y + contentBO.height,
- right: contentBO.x + contentBO.width };
- switch (expectedSide) {
- case "top":
- ok(contentRect.top > vwinpos + anchorRect.bottom * zoomFactor + 5, "panel content is below");
- break;
- case "bottom":
- ok(contentRect.bottom < vwinpos + anchorRect.top * zoomFactor - 5, "panel content is above");
- break;
- case "left":
- ok(contentRect.left > hwinpos + anchorRect.right * zoomFactor + 5, "panel content is right");
- break;
- case "right":
- ok(contentRect.right < hwinpos + anchorRect.left * zoomFactor - 5, "panel content is left");
- break;
- }
-
- let iscentered = false;
- if (expectedAnchorEdge.indexOf("center ") == 0) {
- expectedAnchorEdge = expectedAnchorEdge.substring(7);
- iscentered = true;
- }
-
- switch (expectedAnchorEdge) {
- case "top":
- adj = vwinpos + parseInt(getComputedStyle(panel, "").marginTop);
- if (iscentered)
- adj += Math.round(anchorRect.height) / 2;
- isWithinHalfPixel(panelRect.top, anchorRect.top * zoomFactor + adj, "anchored on top");
- break;
- case "bottom":
- adj = vwinpos + parseInt(getComputedStyle(panel, "").marginBottom);
- if (iscentered)
- adj += Math.round(anchorRect.height) / 2;
- isWithinHalfPixel(panelRect.bottom, anchorRect.bottom * zoomFactor - adj, "anchored on bottom");
- break;
- case "left":
- adj = hwinpos + parseInt(getComputedStyle(panel, "").marginLeft);
- if (iscentered)
- adj += Math.round(anchorRect.width) / 2;
- isWithinHalfPixel(panelRect.left, anchorRect.left * zoomFactor + adj, "anchored on left ");
- break;
- case "right":
- adj = hwinpos + parseInt(getComputedStyle(panel, "").marginRight);
- if (iscentered)
- adj += Math.round(anchorRect.width) / 2;
- if (!isOSXYosemite)
- isWithinHalfPixel(panelRect.right, anchorRect.right * zoomFactor - adj, "anchored on right");
- break;
- }
-
- is(anchor, expectedAnchor, "anchor");
-
- var arrow = document.getAnonymousElementByAttribute(panel, "anonid", "arrow");
- is(arrow.getAttribute("side"), expectedSide, "panel arrow side");
- is(arrow.hidden, false, "panel hidden");
- is(arrow.parentNode.pack, expectedPack, "panel arrow pack");
- is(panel.alignmentPosition, expectedAlignment, "panel alignmentPosition");
-
- panel.hidePopup();
-}
-
-function isWithinHalfPixel(a, b, desc)
-{
- ok(Math.abs(a - b) <= 0.5, desc);
-}
-
-function checkBigPanel(panel)
-{
- ok(panel.firstChild.getBoundingClientRect().height < 2800, "big panel height");
- panel.hidePopup();
-}
-
-SimpleTest.waitForFocus(startTest);
-
-]]>
-</script>
-
-<body xmlns="http://www.w3.org/1999/xhtml"/>
-
-</window>