Backed out changeset 1c0d8a46504a (bug 1291320)
authorSebastian Hengst <archaeopteryx@coole-files.de>
Thu, 23 Mar 2017 21:48:31 +0100
changeset 349228 c62bb4dbe6046ad1e58039447ae30ee8d7531aff
parent 349227 bb4c0c59436c10f5d7cfbfea32e622b5451b465e
child 349229 0e16d2a2ce164e7c58577fd70e6053420effb5ef
push id39440
push userarchaeopteryx@coole-files.de
push dateThu, 23 Mar 2017 20:49:32 +0000
treeherderautoland@4470faf1886e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1291320
milestone55.0a1
backs out1c0d8a46504a7e3fa3ea5524eee46553554efe6f
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 1c0d8a46504a (bug 1291320)
testing/marionette/driver.js
testing/marionette/harness/marionette_harness/tests/unit/test_navigation.py
testing/marionette/listener.js
--- a/testing/marionette/driver.js
+++ b/testing/marionette/driver.js
@@ -1125,24 +1125,22 @@ GeckoDriver.prototype.goForward = functi
     this.mm.broadcastAsyncMessage(
         "Marionette:waitForPageLoaded" + this.curBrowser.curFrameId,
         parameters);
   });
 
   yield goForward;
 };
 
-/**
- * Causes the browser to reload the page in in current top-level browsing context.
- */
-GeckoDriver.prototype.refresh = function* (cmd, resp) {
+/** Refresh the page. */
+GeckoDriver.prototype.refresh = function*(cmd, resp) {
   assert.content(this.context);
   assert.window(this.getCurrentWindow());
 
-  yield this.listener.refresh({pageTimeout: this.timeouts.pageLoad});
+  yield this.listener.refresh();
 };
 
 /**
  * Forces an update for the given browser's id.
  */
 GeckoDriver.prototype.updateIdForBrowser = function (browser, newId) {
   this._browserIds.set(browser.permanentKey, newId);
 };
--- a/testing/marionette/harness/marionette_harness/tests/unit/test_navigation.py
+++ b/testing/marionette/harness/marionette_harness/tests/unit/test_navigation.py
@@ -22,17 +22,16 @@ def inline(doc):
     return "data:text/html;charset=utf-8,%s" % urllib.quote(doc)
 
 
 class BaseNavigationTestCase(WindowManagerMixin, MarionetteTestCase):
 
     def setUp(self):
         super(BaseNavigationTestCase, self).setUp()
 
-        self.test_page_frameset = self.marionette.absolute_url("frameset.html")
         self.test_page_insecure = self.fixtures.where_is("test.html", on="https")
         self.test_page_not_remote = "about:robots"
         self.test_page_remote = self.marionette.absolute_url("test.html")
 
         if self.marionette.session_capabilities["platformName"] == "darwin":
             self.mod_key = Keys.META
         else:
             self.mod_key = Keys.CONTROL
@@ -122,24 +121,41 @@ class TestNavigate(BaseNavigationTestCas
         self.assertEqual(page_iframe, self.marionette.get_url())
 
     def test_get_current_url(self):
         self.marionette.navigate(self.test_page_remote)
         self.assertEqual(self.test_page_remote, self.marionette.get_url())
         self.marionette.navigate("about:blank")
         self.assertEqual("about:blank", self.marionette.get_url())
 
+    def test_refresh(self):
+        self.marionette.navigate(self.test_page_remote)
+        self.assertEqual("Marionette Test", self.marionette.title)
+        self.assertTrue(self.marionette.execute_script(
+            """var elem = window.document.createElement('div'); elem.id = 'someDiv';
+            window.document.body.appendChild(elem); return true;"""))
+        self.assertFalse(self.marionette.execute_script(
+            "return window.document.getElementById('someDiv') == undefined"))
+        self.marionette.refresh()
+        # TODO(ato): Bug 1291320
+        time.sleep(0.2)
+        self.assertEqual("Marionette Test", self.marionette.title)
+        self.assertTrue(self.marionette.execute_script(
+            "return window.document.getElementById('someDiv') == undefined"))
+
     def test_navigate_in_child_frame_changes_to_top(self):
-        self.marionette.navigate(self.test_page_frameset)
+        page_frameset = self.marionette.absolute_url("frameset.html")
+
+        self.marionette.navigate(page_frameset)
         frame = self.marionette.find_element(By.NAME, "third")
         self.marionette.switch_to_frame(frame)
         self.assertRaises(errors.NoSuchElementException,
                           self.marionette.find_element, By.NAME, "third")
 
-        self.marionette.navigate(self.test_page_frameset)
+        self.marionette.navigate(page_frameset)
         self.marionette.find_element(By.NAME, "third")
 
     @skip_if_mobile("Bug 1323755 - Socket timeout")
     def test_invalid_protocol(self):
         with self.assertRaises(errors.MarionetteException):
             self.marionette.navigate("thisprotocoldoesnotexist://")
 
     def test_find_element_state_complete(self):
@@ -468,75 +484,16 @@ class TestBackForwardNavigation(BaseNavi
              "error": errors.InsecureCertificateException},
             {"url": self.test_page_remote},
             {"url": self.test_page_insecure,
              "error": errors.InsecureCertificateException},
         ]
         self.run_bfcache_test(test_pages)
 
 
-class TestRefresh(BaseNavigationTestCase):
-
-    def test_basic(self):
-        self.marionette.navigate(self.test_page_remote)
-        self.assertEqual(self.test_page_remote, self.marionette.get_url())
-
-        self.marionette.execute_script("""
-          let elem = window.document.createElement('div');
-          elem.id = 'someDiv';
-          window.document.body.appendChild(elem);
-        """)
-        self.marionette.find_element(By.ID, "someDiv")
-
-        self.marionette.refresh()
-        self.assertEqual(self.test_page_remote, self.marionette.get_url())
-        with self.assertRaises(errors.NoSuchElementException):
-            self.marionette.find_element(By.ID, "someDiv")
-
-    def test_refresh_in_child_frame_navigates_to_top(self):
-        self.marionette.navigate(self.test_page_frameset)
-        self.assertEqual(self.test_page_frameset, self.marionette.get_url())
-
-        frame = self.marionette.find_element(By.NAME, "third")
-        self.marionette.switch_to_frame(frame)
-        self.assertRaises(errors.NoSuchElementException,
-                          self.marionette.find_element, By.NAME, "third")
-
-        self.marionette.refresh()
-        self.marionette.find_element(By.NAME, "third")
-
-    def test_image(self):
-        image = self.marionette.absolute_url('black.png')
-
-        self.marionette.navigate(image)
-        self.assertEqual(image, self.marionette.get_url())
-
-        self.marionette.refresh()
-        self.assertEqual(image, self.marionette.get_url())
-
-    def test_timeout_error(self):
-        slow_page = self.marionette.absolute_url("slow?delay=3")
-
-        self.marionette.navigate(slow_page)
-        self.assertEqual(slow_page, self.marionette.get_url())
-
-        self.marionette.timeout.page_load = 0.5
-        with self.assertRaises(errors.TimeoutException):
-            self.marionette.refresh()
-        self.assertEqual(slow_page, self.marionette.get_url())
-
-    def test_insecure_error(self):
-        with self.assertRaises(errors.InsecureCertificateException):
-            self.marionette.navigate(self.test_page_insecure)
-        self.assertEqual(self.test_page_insecure, self.marionette.get_url())
-
-        with self.assertRaises(errors.InsecureCertificateException):
-            self.marionette.refresh()
-
-
 class TestTLSNavigation(MarionetteTestCase):
     insecure_tls = {"acceptInsecureCerts": True}
     secure_tls = {"acceptInsecureCerts": False}
 
     def setUp(self):
         super(TestTLSNavigation, self).setUp()
 
         self.test_page_insecure = self.fixtures.where_is("test.html", on="https")
--- a/testing/marionette/listener.js
+++ b/testing/marionette/listener.js
@@ -1129,36 +1129,16 @@ function goForward(msg) {
   let {command_id, pageTimeout} = msg.json;
 
   loadListener.navigate(() => {
     curContainer.frame.history.forward();
   }, command_id, pageTimeout);
 }
 
 /**
- * Causes the browser to reload the page in in current top-level browsing context.
- *
- * @param {number} command_id
- *     ID of the currently handled message between the driver and listener.
- * @param {number} pageTimeout
- *     Timeout in milliseconds the method has to wait for the page being finished loading.
- */
-function refresh(msg) {
-  let {command_id, pageTimeout} = msg.json;
-
-  // We need to move to the top frame before navigating
-  sendSyncMessage("Marionette:switchedToFrame", {frameValue: null});
-  curContainer.frame = content;
-
-  loadListener.navigate(() => {
-    curContainer.frame.location.reload(true);
-  }, command_id, pageTimeout);
-}
-
-/**
  * Get URL of the top-level browsing context.
  */
 function getCurrentUrl() {
   return content.location.href;
 }
 
 /**
  * Get the title of the current browsing context.
@@ -1170,16 +1150,29 @@ function getTitle() {
 /**
  * Get source of the current browsing context's DOM.
  */
 function getPageSource() {
   return curContainer.frame.document.documentElement.outerHTML;
 }
 
 /**
+ * Refresh the page
+ */
+function refresh(msg) {
+  let command_id = msg.json.command_id;
+  curContainer.frame.location.reload(true);
+  let listen = function() {
+    removeEventListener("DOMContentLoaded", listen, false);
+    sendOk(command_id);
+  };
+  addEventListener("DOMContentLoaded", listen, false);
+}
+
+/**
  * Find an element in the current browsing context's document using the
  * given search strategy.
  */
 function* findElementContent(strategy, selector, opts = {}) {
   if (!SUPPORTED_STRATEGIES.has(strategy)) {
     throw new InvalidSelectorError("Strategy not supported: " + strategy);
   }