From 8abbab2bc7ae88c50abc38c9666e2cb5c4dee99e Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Mon, 25 Sep 2017 18:28:58 +0200 Subject: [PATCH] Backed out changeset 4e174306e0b0 (bug 1381992) for e.g. failing chrome's mobile/android/components/extensions/test/mochitest/test_ext_activeTab_permission.html on Android. r=backout --- browser/components/extensions/ext-browser.js | 27 ----- browser/components/extensions/ext-tabs.js | 25 ----- .../components/extensions/schemas/tabs.json | 19 +--- .../test/browser/browser-common.ini | 3 - .../browser/browser_ext_tabs_readerMode.js | 103 ------------------ .../test/mochitest/test_ext_all_apis.html | 1 - .../components/extensions/ext-tabs-base.js | 24 ---- 7 files changed, 1 insertion(+), 201 deletions(-) delete mode 100644 browser/components/extensions/test/browser/browser_ext_tabs_readerMode.js diff --git a/browser/components/extensions/ext-browser.js b/browser/components/extensions/ext-browser.js index 2499bbd5698a..482ae622b3af 100644 --- a/browser/components/extensions/ext-browser.js +++ b/browser/components/extensions/ext-browser.js @@ -20,8 +20,6 @@ var { defineLazyGetter, } = ExtensionUtils; -const READER_MODE_PREFIX = "about:reader"; - let tabTracker; let windowTracker; @@ -230,8 +228,6 @@ class TabTracker extends TabTrackerBase { windowTracker.addOpenListener(this._handleWindowOpen); windowTracker.addCloseListener(this._handleWindowClose); - Services.mm.addMessageListener("Reader:UpdateReaderButton", this); - /* eslint-disable mozilla/balanced-listeners */ this.on("tab-detached", this._handleTabDestroyed); this.on("tab-removed", this._handleTabDestroyed); @@ -366,21 +362,6 @@ class TabTracker extends TabTrackerBase { } } - /** - * @param {Object} message - * The message to handle. - * @private - */ - receiveMessage(message) { - switch (message.name) { - case "Reader:UpdateReaderButton": - if (message.data && message.data.isArticle !== undefined) { - this.emit("tab-isarticle", message); - } - break; - } - } - /** * A private method which is called whenever a new browser window is opened, * and dispatches the necessary events for it. @@ -654,14 +635,6 @@ class Tab extends TabBase { return windowTracker.getId(this.window); } - get isArticle() { - return this.nativeTab.linkedBrowser.isArticle; - } - - get isInReaderMode() { - return this.url && this.url.startsWith(READER_MODE_PREFIX); - } - /** * Converts session store data to an object compatible with the return value * of the convert() method, representing that data. diff --git a/browser/components/extensions/ext-tabs.js b/browser/components/extensions/ext-tabs.js index 2e06593a08f6..b0963433fc20 100644 --- a/browser/components/extensions/ext-tabs.js +++ b/browser/components/extensions/ext-tabs.js @@ -17,10 +17,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "PromiseUtils", XPCOMUtils.defineLazyModuleGetter(this, "Services", "resource://gre/modules/Services.jsm"); -var { - ExtensionError, -} = ExtensionUtils; - let tabListener = { tabReadyInitialized: false, tabReadyPromises: new WeakMap(), @@ -293,29 +289,18 @@ this.tabs = class extends ExtensionAPI { } }; - let isArticleChangeListener = (eventName, event) => { - let {gBrowser} = event.target.ownerGlobal; - let tab = tabManager.getWrapper( - gBrowser.getTabForBrowser(event.target)); - - fireForTab(tab, {isArticle: event.data.isArticle}); - }; - windowTracker.addListener("status", statusListener); windowTracker.addListener("TabAttrModified", listener); windowTracker.addListener("TabPinned", listener); windowTracker.addListener("TabUnpinned", listener); windowTracker.addListener("TabBrowserInserted", listener); - tabTracker.on("tab-isarticle", isArticleChangeListener); - return () => { windowTracker.removeListener("status", statusListener); windowTracker.removeListener("TabAttrModified", listener); windowTracker.removeListener("TabPinned", listener); windowTracker.removeListener("TabUnpinned", listener); windowTracker.removeListener("TabBrowserInserted", listener); - tabTracker.off("tab-isarticle", isArticleChangeListener); }; }).api(), @@ -928,16 +913,6 @@ this.tabs = class extends ExtensionAPI { }); }); }, - - async toggleReaderMode(tabId) { - let tab = await promiseTabWhenReady(tabId); - if (!tab.isInReaderMode && !tab.isArticle) { - throw new ExtensionError("The specified tab cannot be placed into reader mode."); - } - tab = getTabOrActive(tabId); - - tab.linkedBrowser.messageManager.sendAsyncMessage("Reader:ToggleReaderMode"); - }, }, }; return self; diff --git a/browser/components/extensions/schemas/tabs.json b/browser/components/extensions/schemas/tabs.json index f236b2c101c9..dbcdccf3d095 100644 --- a/browser/components/extensions/schemas/tabs.json +++ b/browser/components/extensions/schemas/tabs.json @@ -76,9 +76,7 @@ "width": {"type": "integer", "optional": true, "description": "The width of the tab in pixels."}, "height": {"type": "integer", "optional": true, "description": "The height of the tab in pixels."}, "sessionId": {"type": "string", "optional": true, "description": "The session ID used to uniquely identify a Tab obtained from the $(ref:sessions) API."}, - "cookieStoreId": {"type": "string", "optional": true, "description": "The CookieStoreId used for the tab."}, - "isArticle": {"type": "boolean", "optional": true, "description": "Whether the document in the tab can be rendered in reader mode."}, - "isInReaderMode": {"type": "boolean", "optional": true, "description": "Whether the document in the tab is being rendered in reader mode."} + "cookieStoreId": {"type": "string", "optional": true, "description": "The CookieStoreId used for the tab."} } }, { @@ -902,21 +900,6 @@ } ] }, - { - "name": "toggleReaderMode", - "type": "function", - "description": "Toggles reader mode for the document in the tab.", - "async": true, - "parameters": [ - { - "type": "integer", - "name": "tabId", - "minimum": 0, - "optional": true, - "description": "Defaults to the active tab of the $(topic:current-window)[current window]." - } - ] - }, { "name": "captureVisibleTab", "type": "function", diff --git a/browser/components/extensions/test/browser/browser-common.ini b/browser/components/extensions/test/browser/browser-common.ini index f526c9249bbf..2c3d43b20a53 100644 --- a/browser/components/extensions/test/browser/browser-common.ini +++ b/browser/components/extensions/test/browser/browser-common.ini @@ -32,8 +32,6 @@ support-files = searchSuggestionEngine.xml searchSuggestionEngine.sjs ../../../../../toolkit/components/extensions/test/mochitest/head_webrequest.js - ../../../../../toolkit/components/reader/test/readerModeNonArticle.html - ../../../../../toolkit/components/reader/test/readerModeArticle.html [browser_ext_browserAction_area.js] [browser_ext_browserAction_context.js] @@ -155,7 +153,6 @@ skip-if = os == "win" # Bug 1398514 [browser_ext_tabs_opener.js] [browser_ext_tabs_printPreview.js] [browser_ext_tabs_query.js] -[browser_ext_tabs_readerMode.js] [browser_ext_tabs_reload.js] [browser_ext_tabs_reload_bypass_cache.js] [browser_ext_tabs_sendMessage.js] diff --git a/browser/components/extensions/test/browser/browser_ext_tabs_readerMode.js b/browser/components/extensions/test/browser/browser_ext_tabs_readerMode.js deleted file mode 100644 index 730c7d0937bb..000000000000 --- a/browser/components/extensions/test/browser/browser_ext_tabs_readerMode.js +++ /dev/null @@ -1,103 +0,0 @@ -/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ -/* vim: set sts=2 sw=2 et tw=80: */ -"use strict"; - -add_task(async function test_reader_mode() { - let extension = ExtensionTestUtils.loadExtension({ - manifest: { - "permissions": ["tabs"], - }, - - async background() { - let tab; - let tabId; - let expected = {isInReaderMode: false}; - let testState = {}; - browser.test.onMessage.addListener(async (msg, ...args) => { - switch (msg) { - case "updateUrl": - expected.isArticle = args[0]; - expected.url = args[1]; - tab = await browser.tabs.update({url: expected.url}); - tabId = tab.id; - break; - case "enterReaderMode": - expected.isArticle = !args[0]; - expected.isInReaderMode = true; - tab = await browser.tabs.get(tabId); - browser.test.assertEq(false, tab.isInReaderMode, "The tab is not in reader mode."); - if (args[0]) { - browser.tabs.toggleReaderMode(tabId); - } else { - await browser.test.assertRejects( - browser.tabs.toggleReaderMode(tabId), - /The specified tab cannot be placed into reader mode/, - "Toggle fails with an unreaderable document."); - browser.test.assertEq(false, tab.isInReaderMode, "The tab is still not in reader mode."); - browser.test.sendMessage("enterFailed"); - } - break; - case "leaveReaderMode": - expected.isInReaderMode = false; - tab = await browser.tabs.get(tabId); - browser.test.assertTrue(tab.isInReaderMode, "The tab is in reader mode."); - browser.tabs.toggleReaderMode(tabId); - break; - } - }); - - browser.tabs.onUpdated.addListener(async (tabId, changeInfo, tab) => { - if (tab.url !== "about:blank") { - if (changeInfo.status === "complete") { - testState.url = tab.url; - let urlOk = expected.isInReaderMode - ? testState.url.startsWith("about:reader") - : expected.url == testState.url; - if (urlOk && expected.isArticle == testState.isArticle) { - browser.test.sendMessage("tabUpdated", tab); - } - return; - } - if (changeInfo.isArticle == expected.isArticle - && changeInfo.isArticle != testState.isArticle) { - testState.isArticle = changeInfo.isArticle; - let urlOk = expected.isInReaderMode - ? testState.url.startsWith("about:reader") - : expected.url == testState.url; - if (urlOk && expected.isArticle == testState.isArticle) { - browser.test.sendMessage("isArticle", tab); - } - } - } - }); - }, - }); - - const TEST_PATH = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "http://example.com"); - const READER_MODE_PREFIX = "about:reader"; - - await extension.startup(); - extension.sendMessage("updateUrl", true, `${TEST_PATH}readerModeArticle.html`); - let tab = await extension.awaitMessage("isArticle"); - - ok(!tab.url.startsWith(READER_MODE_PREFIX), "Tab url does not indicate reader mode."); - ok(tab.isArticle, "Tab is readerable."); - - extension.sendMessage("enterReaderMode", true); - tab = await extension.awaitMessage("tabUpdated"); - ok(tab.url.startsWith(READER_MODE_PREFIX), "Tab url indicates reader mode."); - - extension.sendMessage("leaveReaderMode"); - tab = await extension.awaitMessage("tabUpdated"); - ok(!tab.url.startsWith(READER_MODE_PREFIX), "Tab url does not indicate reader mode."); - - extension.sendMessage("updateUrl", false, `${TEST_PATH}readerModeNonArticle.html`); - tab = await extension.awaitMessage("tabUpdated"); - ok(!tab.url.startsWith(READER_MODE_PREFIX), "Tab url does not indicate reader mode."); - ok(!tab.isArticle, "Tab is not readerable."); - - extension.sendMessage("enterReaderMode", false); - await extension.awaitMessage("enterFailed"); - - await extension.unload(); -}); diff --git a/browser/components/extensions/test/mochitest/test_ext_all_apis.html b/browser/components/extensions/test/mochitest/test_ext_all_apis.html index 7ff86efb3bbb..5ceddbf8d8cc 100644 --- a/browser/components/extensions/test/mochitest/test_ext_all_apis.html +++ b/browser/components/extensions/test/mochitest/test_ext_all_apis.html @@ -53,7 +53,6 @@ let expectedBackgroundApisTargetSpecific = [ "tabs.sendMessage", "tabs.setZoom", "tabs.setZoomSettings", - "tabs.toggleReaderMode", "tabs.update", "windows.CreateType", "windows.WINDOW_ID_CURRENT", diff --git a/toolkit/components/extensions/ext-tabs-base.js b/toolkit/components/extensions/ext-tabs-base.js index dad5a1a9f404..59739090571f 100644 --- a/toolkit/components/extensions/ext-tabs-base.js +++ b/toolkit/components/extensions/ext-tabs-base.js @@ -419,28 +419,6 @@ class TabBase { throw new Error("Not implemented"); } - /** - * @property {boolean} isArticle - * Returns true if the document in the tab can be rendered in reader - * mode. - * @readonly - * @abstract - */ - get isArticle() { - throw new Error("Not implemented"); - } - - /** - * @property {boolean} isInReaderMode - * Returns true if the document in the tab is being rendered in reader - * mode. - * @readonly - * @abstract - */ - get isInReaderMode() { - throw new Error("Not implemented"); - } - /** * Returns true if this tab matches the the given query info object. Omitted * or null have no effect on the match. @@ -520,8 +498,6 @@ class TabBase { lastAccessed: this.lastAccessed, audible: this.audible, mutedInfo: this.mutedInfo, - isArticle: this.isArticle, - isInReaderMode: this.isInReaderMode, }; // If the tab has not been fully layed-out yet, fallback to the geometry