diff options
Diffstat (limited to 'toolkit/content/tests/widgets/test_popupreflows.xul')
-rw-r--r-- | toolkit/content/tests/widgets/test_popupreflows.xul | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/toolkit/content/tests/widgets/test_popupreflows.xul b/toolkit/content/tests/widgets/test_popupreflows.xul deleted file mode 100644 index 6969f77672..0000000000 --- a/toolkit/content/tests/widgets/test_popupreflows.xul +++ /dev/null @@ -1,111 +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="Popup Reflow Tests" - xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - - <panel id="testPanel" - type="arrow" - noautohide="true"> - </panel> - - <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> - -<script> -<![CDATA[ -var {classes: Cc, interfaces: Ci, utils: Cu} = Components; - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); -Cu.import("resource://gre/modules/Promise.jsm"); - -let panel, anchor, arrow; - -// A reflow observer - it just remembers the stack trace of all sync reflows -// done by the panel. -let observer = { - reflows: [], - reflow: function (start, end) { - // Ignore reflows triggered by native code - // (Reflows from native code only have an empty stack after the first frame) - var path = (new Error().stack).split("\n").slice(1).join(""); - if (path === "") { - return; - } - - this.reflows.push(new Error().stack); - }, - - reflowInterruptible: function (start, end) { - // We're not interested in interruptible reflows. Why, you ask? Because - // we've simply cargo-culted this test from browser_tabopen_reflows.js! - }, - - QueryInterface: XPCOMUtils.generateQI([Ci.nsIReflowObserver, - Ci.nsISupportsWeakReference]) -}; - -// A test utility that counts the reflows caused by a test function. If the -// count of reflows isn't what is expected, it causes a test failure and logs -// the stack trace of all seen reflows. -function countReflows(testfn, expected) { - let deferred = Promise.defer(); - observer.reflows = []; - let docShell = panel.ownerDocument.defaultView - .QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIWebNavigation) - .QueryInterface(Components.interfaces.nsIDocShell); - docShell.addWeakReflowObserver(observer); - testfn().then(() => { - docShell.removeWeakReflowObserver(observer); - SimpleTest.is(observer.reflows.length, expected, "correct number of reflows"); - if (observer.reflows.length != expected) { - SimpleTest.info("stack traces of reflows:\n" + observer.reflows.join("\n") + "\n"); - } - deferred.resolve(); - }); - return deferred.promise -} - -function openPopup() { - let deferred = Promise.defer(); - panel.addEventListener("popupshown", function popupshown() { - panel.removeEventListener("popupshown", popupshown); - deferred.resolve(); - }); - panel.openPopup(anchor, "before_start"); - return deferred.promise -} - -// ******************** -// The actual tests... -// We only have one atm - simply open a popup. -// -function testSimplePanel() { - return openPopup(); -} - -// ******************** -// The test harness... -// -SimpleTest.waitForExplicitFinish(); - -addEventListener("load", function() { - anchor = document.getElementById("anchor"); - panel = document.getElementById("testPanel"); - arrow = document.getAnonymousElementByAttribute(panel, "anonid", "arrow"); - - // Cancel the arrow panel slide-in transition (bug 767133) - we are only - // testing reflows in the core panel implementation and not reflows that may - // or may not be caused by transitioning.... - arrow.style.transition = "none"; - - // and off we go... - countReflows(testSimplePanel, 1).then(SimpleTest.finish); -}); -]]> -</script> -<body xmlns="http://www.w3.org/1999/xhtml"> - <p>The anchor --> <span id="anchor">v</span> <--</p> -</body> -</window> |