From 5396a97731e166613ced22355736c466e87484c8 Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Thu, 23 Mar 2017 21:48:31 +0100 Subject: [PATCH] Backed out changeset 1c0d8a46504a (bug 1291320) --- testing/marionette/driver.js | 8 +- .../tests/unit/test_navigation.py | 81 +++++-------------- testing/marionette/listener.js | 33 +++----- 3 files changed, 35 insertions(+), 87 deletions(-) diff --git a/testing/marionette/driver.js b/testing/marionette/driver.js index e3e0bb3875fa..54d2a658492a 100644 --- a/testing/marionette/driver.js +++ b/testing/marionette/driver.js @@ -1130,14 +1130,12 @@ GeckoDriver.prototype.goForward = function* (cmd, resp) { 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(); }; /** diff --git a/testing/marionette/harness/marionette_harness/tests/unit/test_navigation.py b/testing/marionette/harness/marionette_harness/tests/unit/test_navigation.py index bbecb388e816..ad8d3bc611e2 100644 --- a/testing/marionette/harness/marionette_harness/tests/unit/test_navigation.py +++ b/testing/marionette/harness/marionette_harness/tests/unit/test_navigation.py @@ -27,7 +27,6 @@ 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") @@ -127,14 +126,31 @@ class TestNavigate(BaseNavigationTestCase): 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") @@ -473,65 +489,6 @@ class TestBackForwardNavigation(BaseNavigationTestCase): 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} diff --git a/testing/marionette/listener.js b/testing/marionette/listener.js index dcfaa0a9c667..83c39775df89 100644 --- a/testing/marionette/listener.js +++ b/testing/marionette/listener.js @@ -1133,26 +1133,6 @@ function goForward(msg) { }, 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. */ @@ -1174,6 +1154,19 @@ 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.