Bug 1461695 change tabs.onUpdated filter name to isArticle, r?aswan
MozReview-Commit-ID: Ha0nJPMTYkJ
--- a/browser/components/extensions/parent/ext-tabs.js
+++ b/browser/components/extensions/parent/ext-tabs.js
@@ -119,17 +119,17 @@ let tabListener = {
};
const allAttrs = new Set(["audible", "favIconUrl", "mutedInfo", "sharingState", "title"]);
const allProperties = new Set([
"audible",
"discarded",
"favIconUrl",
"hidden",
- "isarticle",
+ "isArticle",
"mutedInfo",
"pinned",
"sharingState",
"status",
"title",
]);
const restricted = new Set(["url", "favIconUrl", "title"]);
@@ -143,16 +143,22 @@ class TabsUpdateFilterEventManager exten
if (filter.urls) {
filter.urls = new MatchPatternSet(filter.urls);
}
let needsModified = true;
if (filter.properties) {
// Default is to listen for all events.
needsModified = filter.properties.some(p => allAttrs.has(p));
filter.properties = new Set(filter.properties);
+ // TODO Bug 1465520 remove warning when ready.
+ if (filter.properties.has("isarticle")) {
+ extension.logger.warn("The isarticle filter name is deprecated, use isArticle.");
+ filter.properties.delete("isarticle");
+ filter.properties.add("isArticle");
+ }
} else {
filter.properties = allProperties;
}
function sanitize(extension, changeInfo) {
let result = {};
let nonempty = false;
let hasTabs = extension.hasPermission("tabs");
@@ -290,26 +296,26 @@ class TabsUpdateFilterEventManager exten
listeners.set("TabShow", listener);
listeners.set("TabHide", listener);
}
for (let [name, listener] of listeners) {
windowTracker.addListener(name, listener);
}
- if (filter.properties.has("isarticle")) {
+ if (filter.properties.has("isArticle")) {
tabTracker.on("tab-isarticle", isArticleChangeListener);
}
return () => {
for (let [name, listener] of listeners) {
windowTracker.removeListener(name, listener);
}
- if (filter.properties.has("isarticle")) {
+ if (filter.properties.has("isArticle")) {
tabTracker.off("tab-isarticle", isArticleChangeListener);
}
};
};
super({
context,
name: "tabs.onUpdated",
--- a/browser/components/extensions/schemas/tabs.json
+++ b/browser/components/extensions/schemas/tabs.json
@@ -293,16 +293,17 @@
"id": "UpdatePropertyName",
"type": "string",
"enum": [
"audible",
"discarded",
"favIconUrl",
"hidden",
"isarticle",
+ "isArticle",
"mutedInfo",
"pinned",
"sharingState",
"status",
"title"
],
"description": "Event names supported in onUpdated."
},
--- a/browser/components/extensions/test/browser/browser_ext_tabs_onUpdated_filter.js
+++ b/browser/components/extensions/test/browser/browser_ext_tabs_onUpdated_filter.js
@@ -194,29 +194,82 @@ add_task(async function test_filter_wind
await ext_ok.unload();
await ext_ok2.unload();
await ext_fail.unload();
await BrowserTestUtils.removeTab(tab);
});
+// TODO Bug 1465520 test should be removed when filter name is.
+add_task(async function test_filter_isarticle_deprecated() {
+ let extension = ExtensionTestUtils.loadExtension({
+ manifest: {
+ permissions: ["tabs"],
+ },
+ background() {
+ // We expect only status updates, anything else is a failure.
+ browser.tabs.onUpdated.addListener((tabId, changeInfo) => {
+ browser.test.log(`got onUpdated ${JSON.stringify(changeInfo)}`);
+ if ("isArticle" in changeInfo) {
+ browser.test.notifyPass("isarticle");
+ }
+ }, {properties: ["isarticle"]});
+ },
+ });
+ await extension.startup();
+ let ok = extension.awaitFinish("isarticle");
+
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://mochi.test:8888/");
+ await ok;
+
+ await extension.unload();
+
+ await BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_filter_isArticle() {
+ let extension = ExtensionTestUtils.loadExtension({
+ manifest: {
+ permissions: ["tabs"],
+ },
+ background() {
+ // We expect only status updates, anything else is a failure.
+ browser.tabs.onUpdated.addListener((tabId, changeInfo) => {
+ browser.test.log(`got onUpdated ${JSON.stringify(changeInfo)}`);
+ if ("isArticle" in changeInfo) {
+ browser.test.notifyPass("isArticle");
+ }
+ }, {properties: ["isArticle"]});
+ },
+ });
+ await extension.startup();
+ let ok = extension.awaitFinish("isArticle");
+
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://mochi.test:8888/");
+ await ok;
+
+ await extension.unload();
+
+ await BrowserTestUtils.removeTab(tab);
+});
+
add_task(async function test_filter_property() {
let extension = ExtensionTestUtils.loadExtension({
manifest: {
permissions: ["tabs"],
},
background() {
// We expect only status updates, anything else is a failure.
let properties = new Set([
"audible",
"discarded",
"favIconUrl",
"hidden",
- "isarticle",
+ "isArticle",
"mutedInfo",
"pinned",
"sharingState",
"title",
]);
browser.tabs.onUpdated.addListener((tabId, changeInfo) => {
browser.test.log(`got onUpdated ${JSON.stringify(changeInfo)}`);
browser.test.assertTrue(!!changeInfo.status, "changeInfo has status");