mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 17:55:50 +00:00
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
This commit is contained in:
parent
53cf947ac6
commit
8abbab2bc7
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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",
|
||||
|
@ -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]
|
||||
|
@ -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();
|
||||
});
|
@ -53,7 +53,6 @@ let expectedBackgroundApisTargetSpecific = [
|
||||
"tabs.sendMessage",
|
||||
"tabs.setZoom",
|
||||
"tabs.setZoomSettings",
|
||||
"tabs.toggleReaderMode",
|
||||
"tabs.update",
|
||||
"windows.CreateType",
|
||||
"windows.WINDOW_ID_CURRENT",
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user