From 8011a32eb6ad1d44b45b88c0ce9dbc849cb7cc91 Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Sat, 5 Nov 2016 13:54:35 +0100 Subject: [PATCH] Backed out changeset 1cb8dac3eb40 (bug 1189491) for failing browser_readerMode.js. r=backout --HG-- rename : toolkit/components/reader/test/browser_bug1124271_readerModePinnedTab.js => browser/base/content/test/general/browser_bug1124271_readerModePinnedTab.js rename : toolkit/components/reader/test/browser_readerMode.js => browser/base/content/test/general/browser_readerMode.js rename : toolkit/components/reader/test/browser_readerMode_hidden_nodes.js => browser/base/content/test/general/browser_readerMode_hidden_nodes.js rename : toolkit/components/reader/test/readerModeArticle.html => browser/base/content/test/general/readerModeArticle.html rename : toolkit/components/reader/test/readerModeArticleHiddenNodes.html => browser/base/content/test/general/readerModeArticleHiddenNodes.html --- browser/base/content/test/general/browser.ini | 10 ++ .../browser_bug1124271_readerModePinnedTab.js | 6 +- .../test/general}/browser_readerMode.js | 2 +- .../browser_readerMode_hidden_nodes.js | 2 +- .../test/general}/readerModeArticle.html | 6 - .../readerModeArticleHiddenNodes.html | 0 toolkit/components/reader/AboutReader.jsm | 11 -- toolkit/components/reader/ReaderMode.jsm | 21 +-- toolkit/components/reader/moz.build | 4 - toolkit/components/reader/test/browser.ini | 15 --- .../test/browser_readerMode_with_anchor.js | 21 --- toolkit/components/reader/test/head.js | 126 ------------------ 12 files changed, 21 insertions(+), 203 deletions(-) rename {toolkit/components/reader/test => browser/base/content/test/general}/browser_bug1124271_readerModePinnedTab.js (86%) rename {toolkit/components/reader/test => browser/base/content/test/general}/browser_readerMode.js (98%) rename {toolkit/components/reader/test => browser/base/content/test/general}/browser_readerMode_hidden_nodes.js (94%) rename {toolkit/components/reader/test => browser/base/content/test/general}/readerModeArticle.html (51%) rename {toolkit/components/reader/test => browser/base/content/test/general}/readerModeArticleHiddenNodes.html (100%) delete mode 100644 toolkit/components/reader/test/browser.ini delete mode 100644 toolkit/components/reader/test/browser_readerMode_with_anchor.js delete mode 100644 toolkit/components/reader/test/head.js diff --git a/browser/base/content/test/general/browser.ini b/browser/base/content/test/general/browser.ini index 063db8d3f06c..53827083e39d 100644 --- a/browser/base/content/test/general/browser.ini +++ b/browser/base/content/test/general/browser.ini @@ -507,6 +507,16 @@ tags = mcb [browser_windowactivation.js] [browser_contextmenu_childprocess.js] [browser_bug963945.js] +[browser_readerMode.js] +support-files = + readerModeArticle.html + readerModeArticleHiddenNodes.html +[browser_readerMode_hidden_nodes.js] +support-files = + readerModeArticleHiddenNodes.html +[browser_bug1124271_readerModePinnedTab.js] +support-files = + readerModeArticle.html [browser_domFullscreen_fullscreenMode.js] tags = fullscreen [browser_menuButtonBadgeManager.js] diff --git a/toolkit/components/reader/test/browser_bug1124271_readerModePinnedTab.js b/browser/base/content/test/general/browser_bug1124271_readerModePinnedTab.js similarity index 86% rename from toolkit/components/reader/test/browser_bug1124271_readerModePinnedTab.js rename to browser/base/content/test/general/browser_bug1124271_readerModePinnedTab.js index 39913aa3edeb..98925caf3101 100644 --- a/toolkit/components/reader/test/browser_bug1124271_readerModePinnedTab.js +++ b/browser/base/content/test/general/browser_bug1124271_readerModePinnedTab.js @@ -6,7 +6,7 @@ const PREF = "reader.parse-on-load.enabled"; -const TEST_PATH = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "http://example.com"); +const TEST_PATH = "http://example.com/browser/browser/base/content/test/general/"; var readerButton = document.getElementById("reader-mode-button"); @@ -37,9 +37,9 @@ add_task(function* () { // Ensure no new tabs are opened when exiting reader mode in a pinned tab is(gBrowser.tabs.length, initialTabsCount, "No additional tabs were opened."); - let pageShownPromise = BrowserTestUtils.waitForContentEvent(tab.linkedBrowser, "pageshow"); readerButton.click(); - yield pageShownPromise; + yield BrowserTestUtils.waitForContentEvent(tab.linkedBrowser, "pageshow"); + // Ensure no new tabs are opened when exiting reader mode in a pinned tab is(gBrowser.tabs.length, initialTabsCount, "No additional tabs were opened."); diff --git a/toolkit/components/reader/test/browser_readerMode.js b/browser/base/content/test/general/browser_readerMode.js similarity index 98% rename from toolkit/components/reader/test/browser_readerMode.js rename to browser/base/content/test/general/browser_readerMode.js index 72ac4cfd5324..a38302a61308 100644 --- a/toolkit/components/reader/test/browser_readerMode.js +++ b/browser/base/content/test/general/browser_readerMode.js @@ -10,7 +10,7 @@ const TEST_PREFS = [ ["reader.parse-on-load.enabled", true], ]; -const TEST_PATH = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "http://example.com"); +const TEST_PATH = "http://example.com/browser/browser/base/content/test/general/"; var readerButton = document.getElementById("reader-mode-button"); diff --git a/toolkit/components/reader/test/browser_readerMode_hidden_nodes.js b/browser/base/content/test/general/browser_readerMode_hidden_nodes.js similarity index 94% rename from toolkit/components/reader/test/browser_readerMode_hidden_nodes.js rename to browser/base/content/test/general/browser_readerMode_hidden_nodes.js index b73eab58defa..ad4baa875315 100644 --- a/toolkit/components/reader/test/browser_readerMode_hidden_nodes.js +++ b/browser/base/content/test/general/browser_readerMode_hidden_nodes.js @@ -11,7 +11,7 @@ const TEST_PREFS = [ ["browser.reader.detectedFirstArticle", false], ]; -const TEST_PATH = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "http://example.com"); +const TEST_PATH = "http://example.com/browser/browser/base/content/test/general/"; var readerButton = document.getElementById("reader-mode-button"); diff --git a/toolkit/components/reader/test/readerModeArticle.html b/browser/base/content/test/general/readerModeArticle.html similarity index 51% rename from toolkit/components/reader/test/readerModeArticle.html rename to browser/base/content/test/general/readerModeArticle.html index 7c5033d5b7a8..b533423ad66f 100644 --- a/toolkit/components/reader/test/readerModeArticle.html +++ b/browser/base/content/test/general/readerModeArticle.html @@ -14,12 +14,6 @@

Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.

Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.

Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.

-
by John Doe
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor. Pellentesque auctor nisi id magna consequat sagittis. Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nisl imperdiet. Ut convallis libero in urna ultrices accumsan. Donec sed odio eros. Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est.

-

Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.

-

Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.

-

Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.

-

Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.

diff --git a/toolkit/components/reader/test/readerModeArticleHiddenNodes.html b/browser/base/content/test/general/readerModeArticleHiddenNodes.html similarity index 100% rename from toolkit/components/reader/test/readerModeArticleHiddenNodes.html rename to browser/base/content/test/general/readerModeArticleHiddenNodes.html diff --git a/toolkit/components/reader/AboutReader.jsm b/toolkit/components/reader/AboutReader.jsm index 1fb9db1233c4..6805163ab012 100644 --- a/toolkit/components/reader/AboutReader.jsm +++ b/toolkit/components/reader/AboutReader.jsm @@ -796,8 +796,6 @@ AboutReader.prototype = { this._requestFavicon(); this._doc.body.classList.add("loaded"); - this._goToReference(articleUri.ref); - Services.obs.notifyObservers(this._win, "AboutReader:Ready", ""); this._doc.dispatchEvent( @@ -984,14 +982,5 @@ AboutReader.prototype = { if (openDropdowns.length) { this._mm.sendAsyncMessage("Reader:DropdownClosed", this.viewId); } - }, - - /* - * Scroll reader view to a reference - */ - _goToReference(ref) { - if (ref) { - this._win.location.hash = ref; - } } }; diff --git a/toolkit/components/reader/ReaderMode.jsm b/toolkit/components/reader/ReaderMode.jsm index 50fd538f583e..9e4d1e017ecb 100644 --- a/toolkit/components/reader/ReaderMode.jsm +++ b/toolkit/components/reader/ReaderMode.jsm @@ -141,26 +141,17 @@ this.ReaderMode = { return null; } - let outerHash = ""; - try { - let uriObj = Services.io.newURI(url, null, null); - url = uriObj.specIgnoringRef; - outerHash = uriObj.ref; - } catch (ex) { /* ignore, use the raw string */ } - let searchParams = new URLSearchParams(url.substring("about:reader?".length)); if (!searchParams.has("url")) { return null; } - let originalUrl = searchParams.get("url"); - if (outerHash) { - try { - let uriObj = Services.io.newURI(originalUrl, null, null); - uriObj = Services.io.newURI('#' + outerHash, null, uriObj); - originalUrl = uriObj.spec; - } catch (ex) {} + let encodedURL = searchParams.get("url"); + try { + return decodeURIComponent(encodedURL); + } catch (e) { + Cu.reportError("Error decoding original URL: " + e); + return encodedURL; } - return originalUrl; }, /** diff --git a/toolkit/components/reader/moz.build b/toolkit/components/reader/moz.build index 6863d6542747..18a9595a4ab5 100644 --- a/toolkit/components/reader/moz.build +++ b/toolkit/components/reader/moz.build @@ -18,9 +18,5 @@ EXTRA_JS_MODULES.reader = [ 'ReaderWorker.jsm' ] -BROWSER_CHROME_MANIFESTS += [ - 'test/browser.ini' -] - with Files('**'): BUG_COMPONENT = ('Toolkit', 'Reader Mode') diff --git a/toolkit/components/reader/test/browser.ini b/toolkit/components/reader/test/browser.ini deleted file mode 100644 index 4f9df23b377a..000000000000 --- a/toolkit/components/reader/test/browser.ini +++ /dev/null @@ -1,15 +0,0 @@ -[DEFAULT] -support-files = head.js -[browser_readerMode.js] -support-files = - readerModeArticle.html - readerModeArticleHiddenNodes.html -[browser_readerMode_hidden_nodes.js] -support-files = - readerModeArticleHiddenNodes.html -[browser_readerMode_with_anchor.js] -support-files = - readerModeArticle.html -[browser_bug1124271_readerModePinnedTab.js] -support-files = - readerModeArticle.html diff --git a/toolkit/components/reader/test/browser_readerMode_with_anchor.js b/toolkit/components/reader/test/browser_readerMode_with_anchor.js deleted file mode 100644 index 24c23c49f019..000000000000 --- a/toolkit/components/reader/test/browser_readerMode_with_anchor.js +++ /dev/null @@ -1,21 +0,0 @@ -/* 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/. */ - -"use strict"; - -const TEST_PATH = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "http://example.com"); - -add_task(function* () { - yield BrowserTestUtils.withNewTab(TEST_PATH + "readerModeArticle.html#foo", function* (browser) { - let pageShownPromise = BrowserTestUtils.waitForContentEvent(browser, "AboutReaderContentReady"); - let readerButton = document.getElementById("reader-mode-button"); - readerButton.click(); - yield pageShownPromise; - yield ContentTask.spawn(browser, null, function* () { - // Check if offset != 0 - ok(content.document.getElementById("foo") !== null, "foo element should be in document"); - ok(content.pageYOffset != 0, "pageYOffset should be > 0"); - }); - }); -}); diff --git a/toolkit/components/reader/test/head.js b/toolkit/components/reader/test/head.js deleted file mode 100644 index 3d8d989bc059..000000000000 --- a/toolkit/components/reader/test/head.js +++ /dev/null @@ -1,126 +0,0 @@ -XPCOMUtils.defineLazyModuleGetter(this, "Promise", - "resource://gre/modules/Promise.jsm"); - -/* exported promiseTabLoadEvent, promiseWaitForCondition, is_element_visible, is_element_hidden */ - -/** - * Waits for a load (or custom) event to finish in a given tab. If provided - * load an uri into the tab. - * - * @param tab - * The tab to load into. - * @param [optional] url - * The url to load, or the current url. - * @return {Promise} resolved when the event is handled. - * @resolves to the received event - * @rejects if a valid load event is not received within a meaningful interval - */ -function promiseTabLoadEvent(tab, url) { - let deferred = Promise.defer(); - info("Wait tab event: load"); - - function handle(loadedUrl) { - if (loadedUrl === "about:blank" || (url && loadedUrl !== url)) { - info(`Skipping spurious load event for ${loadedUrl}`); - return false; - } - - info("Tab event received: load"); - return true; - } - - // Create two promises: one resolved from the content process when the page - // loads and one that is rejected if we take too long to load the url. - let loaded = BrowserTestUtils.browserLoaded(tab.linkedBrowser, false, handle); - - let timeout = setTimeout(() => { - deferred.reject(new Error("Timed out while waiting for a 'load' event")); - }, 30000); - - loaded.then(() => { - clearTimeout(timeout); - deferred.resolve(); - }); - - if (url) - BrowserTestUtils.loadURI(tab.linkedBrowser, url); - - // Promise.all rejects if either promise rejects (i.e. if we time out) and - // if our loaded promise resolves before the timeout, then we resolve the - // timeout promise as well, causing the all promise to resolve. - return Promise.all([deferred.promise, loaded]); -} - -function waitForCondition(condition, nextTest, errorMsg, retryTimes) { - retryTimes = typeof retryTimes !== 'undefined' ? retryTimes : 30; - var tries = 0; - var interval = setInterval(function() { - if (tries >= retryTimes) { - ok(false, errorMsg); - moveOn(); - } - var conditionPassed; - try { - conditionPassed = condition(); - } catch (e) { - ok(false, e + "\n" + e.stack); - conditionPassed = false; - } - if (conditionPassed) { - moveOn(); - } - tries++; - }, 100); - var moveOn = function() { - clearInterval(interval); - nextTest(); - }; -} - -function promiseWaitForCondition(aConditionFn) { - let deferred = Promise.defer(); - waitForCondition(aConditionFn, deferred.resolve, "Condition didn't pass."); - return deferred.promise; -} - -function is_element_visible(element, msg) { - isnot(element, null, "Element should not be null, when checking visibility"); - ok(is_visible(element), msg || "Element should be visible"); - -} -function is_element_hidden(element, msg) { - isnot(element, null, "Element should not be null, when checking visibility"); - ok(is_hidden(element), msg || "Element should be hidden"); -} - -function is_visible(element) { - var style = element.ownerGlobal.getComputedStyle(element); - if (style.display == "none") - return false; - if (style.visibility != "visible") - return false; - if (style.display == "-moz-popup" && element.state != "open") - return false; - - // Hiding a parent element will hide all its children - if (element.parentNode != element.ownerDocument) - return is_visible(element.parentNode); - - return true; -} - -function is_hidden(element) { - var style = element.ownerGlobal.getComputedStyle(element); - if (style.display == "none") - return true; - if (style.visibility != "visible") - return true; - if (style.display == "-moz-popup") - return ["hiding", "closed"].indexOf(element.state) != -1; - - // Hiding a parent element will hide all its children - if (element.parentNode != element.ownerDocument) - return is_hidden(element.parentNode); - - return false; -}