Backed out changeset d2c1a3a02f40 (bug 1320629) for TestExecuteContent.test_window_set_timeout_is_not_cancelled | TypeError: until() got an unexpected keyword argument 'timeout' bustage on a CLOSED TREE.
authorRyan VanderMeulen <ryanvm@gmail.com>
Wed, 30 Nov 2016 15:17:04 -0500
changeset 324856 e274953486641dbfe3425d2a855537da6aae0304
parent 324855 9953c71eb9ba58bbfe818e2fae47ac44f9e868e2
child 324857 6c94c769aaef9042b594ebbdec5640c7582d3c17
push id84525
push userphilringnalda@gmail.com
push dateThu, 01 Dec 2016 03:22:09 +0000
treeherdermozilla-inbound@b1d875f4c673 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1320629
milestone53.0a1
backs outd2c1a3a02f40e4018338678889a6a66a4b6ba86f
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
Backed out changeset d2c1a3a02f40 (bug 1320629) for TestExecuteContent.test_window_set_timeout_is_not_cancelled | TypeError: until() got an unexpected keyword argument 'timeout' bustage on a CLOSED TREE.
testing/marionette/harness/marionette/tests/unit/test_execute_script.py
--- a/testing/marionette/harness/marionette/tests/unit/test_execute_script.py
+++ b/testing/marionette/harness/marionette/tests/unit/test_execute_script.py
@@ -1,21 +1,19 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 import os
 import time
 import urllib
 
+from marionette import MarionetteTestCase, WindowManagerMixin
 from marionette_driver import By, errors
 from marionette_driver.marionette import HTMLElement
-from marionette_driver.wait import Wait
-
-from marionette import MarionetteTestCase, WindowManagerMixin
 
 
 def inline(doc):
     return "data:text/html;charset=utf-8,{}".format(urllib.quote(doc))
 
 
 elements = inline("<p>foo</p> <p>bar</p>")
 
@@ -236,37 +234,37 @@ class TestExecuteContent(MarionetteTestC
         self.assertTrue(
             send("return typeof window.wrappedJSObject == 'undefined'"))
 
     def test_no_callback(self):
         self.assertTrue(self.marionette.execute_script(
             "return typeof arguments[0] == 'undefined'"))
 
     def test_window_set_timeout_is_not_cancelled(self):
-        def content_timeout_triggered(mn):
-            return mn.execute_script("return window.n", sandbox=None) > 0
-
-        # subsequent call to execute_script after this
-        # should not cancel the setTimeout event
         self.marionette.navigate(inline("""
             <script>
-            window.n = 0;
-            setTimeout(() => ++window.n, 4000);
+            window.contentTimeoutTriggered = 0;
+            window.contentTimeoutID = setTimeout(
+                () => window.contentTimeoutTriggered++, 1000);
             </script>"""))
 
-        # as debug builds are inherently slow,
-        # we need to assert the event did not already fire
+        # first execute script call should not cancel event
         self.assertEqual(0, self.marionette.execute_script(
-            "return window.n", sandbox=None),
-            "setTimeout already fired")
+            "return window.contentTimeoutTriggered", sandbox=None))
 
-        # if event was cancelled, this will time out
-        Wait(self.marionette).until(content_timeout_triggered,
-                                    timeout=8,
-                                    message="Scheduled setTimeout event was cancelled by call to execute_script")
+        # test that event was not cancelled
+        time.sleep(1)
+        self.assertEqual(1, self.marionette.execute_script(
+            "return window.contentTimeoutTriggered", sandbox=None))
+
+        # ../../../../evaluate.js:/scriptTimeoutID/
+        # sets the script timeout handler using the content frame script
+        # so the in-content setTimeout should always return 2
+        self.assertEqual(2, self.marionette.execute_script(
+            "return window.contentTimeoutID", sandbox=None))
 
 
 class TestExecuteChrome(WindowManagerMixin, TestExecuteContent):
 
     def setUp(self):
         super(TestExecuteChrome, self).setUp()
 
         self.marionette.set_context("chrome")