summaryrefslogtreecommitdiffstats
path: root/layout/base/tests/test_bug114649.html
diff options
context:
space:
mode:
Diffstat (limited to 'layout/base/tests/test_bug114649.html')
-rw-r--r--layout/base/tests/test_bug114649.html78
1 files changed, 78 insertions, 0 deletions
diff --git a/layout/base/tests/test_bug114649.html b/layout/base/tests/test_bug114649.html
new file mode 100644
index 0000000000..765a3b069e
--- /dev/null
+++ b/layout/base/tests/test_bug114649.html
@@ -0,0 +1,78 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=114649
+-->
+<head>
+ <title>Test for Bug 114649</title>
+ <script src="/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body onload="run()">
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=114649">Mozilla Bug 114649</a>
+<iframe id="display" style="width: 500px; height: 500px;"></iframe>
+<pre id="test">
+<script type="application/javascript">
+
+/** Test for Bug 114649 **/
+
+var gIFrame;
+var gCurrentWidth = 500;
+var gGotEventsAt = [];
+var gInterval;
+var gFinished = false;
+
+function run() {
+ SimpleTest.waitForExplicitFinish();
+ SimpleTest.requestFlakyTimeout("Simulating dragging to resize a window");
+
+ gIFrame = document.getElementById("display");
+
+ var subdoc = gIFrame.contentDocument;
+ subdoc.open();
+ subdoc.write("<body onresize='window.parent.handle_resize_event()'>");
+ subdoc.close();
+
+ setTimeout(do_a_resize, 50);
+}
+
+function do_a_resize()
+{
+ // decrease the width by 10 until we hit 400, then stop
+ gCurrentWidth -= 10;
+ gIFrame.style.width = gCurrentWidth + "px";
+
+ if (gCurrentWidth > 400) {
+ setTimeout(do_a_resize, 50);
+ }
+}
+
+function handle_resize_event()
+{
+ gGotEventsAt.push(gCurrentWidth);
+
+ if (gCurrentWidth == 400) {
+ check_resize_events();
+ }
+}
+
+function check_resize_events()
+{
+ if (gFinished) {
+ // We can get here when the browser can't process the resizes and
+ // dispatch resize events as fast as we're doing the resizing. We can
+ // then end up with multiple resize events queued up after we set our
+ // final size. This return makes sure that in that case we avoid
+ // calling SimpleTest.finish() more than once.
+ return;
+ }
+ gFinished = true;
+ ok(gGotEventsAt.length >= 2, "We should get more than one event");
+ isnot(gGotEventsAt[0], 400, "The first event shouldn't be for the final size");
+ SimpleTest.finish();
+}
+
+</script>
+</pre>
+</body>
+</html>