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 324866 e274953486641dbfe3425d2a855537da6aae0304
parent 324865 9953c71eb9ba58bbfe818e2fae47ac44f9e868e2
child 324867 6c94c769aaef9042b594ebbdec5640c7582d3c17
push id24
push usermaklebus@msu.edu
push dateTue, 20 Dec 2016 03:11:33 +0000
bugs1320629
milestone53.0a1
backs outd2c1a3a02f40e4018338678889a6a66a4b6ba86f
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")