Bug 1408993 - Allow tabs.create to create URLS in reader mode, r?mixedpuppy
MozReview-Commit-ID: B5Nk0ZVvQIC
--- a/browser/components/extensions/ext-tabs.js
+++ b/browser/components/extensions/ext-tabs.js
@@ -341,16 +341,20 @@ this.tabs = class extends ExtensionAPI {
let url;
if (createProperties.url !== null) {
url = context.uri.resolve(createProperties.url);
if (!context.checkLoadURL(url, {dontReportErrors: true})) {
return Promise.reject({message: `Illegal URL: ${url}`});
}
+
+ if (createProperties.openInReaderMode) {
+ url = `about:reader?url=${encodeURIComponent(url)}`;
+ }
}
if (createProperties.cookieStoreId && !extension.hasPermission("cookies")) {
return Promise.reject({message: `No permission for cookieStoreId: ${createProperties.cookieStoreId}`});
}
let options = {};
if (createProperties.cookieStoreId) {
--- a/browser/components/extensions/schemas/tabs.json
+++ b/browser/components/extensions/schemas/tabs.json
@@ -492,17 +492,20 @@
"minimum": 0,
"optional": true,
"description": "The ID of the tab that opened this tab. If specified, the opener tab must be in the same window as the newly created tab."
},
"cookieStoreId": {
"type": "string",
"optional": true,
"description": "The CookieStoreId for the tab that opened this tab."
- }
+ },
+ "openInReaderMode": {
+ "type": "boolean",
+ "optional": true, "description": "Whether the document in the tab should be opened in reader mode."}
}
},
{
"type": "function",
"name": "callback",
"optional": true,
"parameters": [
{
--- a/browser/components/extensions/test/browser/browser_ext_tabs_create.js
+++ b/browser/components/extensions/test/browser/browser_ext_tabs_create.js
@@ -55,16 +55,20 @@ add_task(async function test_create_opti
create: {url: "view-source:http://example.com/"},
result: {url: "view-source:http://example.com/"},
},
{
create: {url: "blank.html"},
result: {url: browser.runtime.getURL("bg/blank.html")},
},
{
+ create: {url: "http://example.com/", openInReaderMode: true},
+ result: {url: `about:reader?url=${encodeURIComponent("http://example.com/")}`},
+ },
+ {
create: {},
result: {url: "about:newtab"},
},
{
create: {active: false},
result: {active: false},
},
{