Bug 1408993 - Allow tabs.create to create URLS in reader mode, r?mixedpuppy draft
authorBob Silverberg <bsilverberg@mozilla.com>
Mon, 16 Oct 2017 10:42:45 -0400
changeset 681594 5a198361808cc1029b258711cf561f0c5dbbbb5c
parent 681450 0d9c6250f99dc4b6aa1a94f5260737d046c52b1e
child 736174 eb25658406419edf0e962c770c68502d23491c66
push id84859
push userbmo:bob.silverberg@gmail.com
push dateTue, 17 Oct 2017 12:53:14 +0000
reviewersmixedpuppy
bugs1408993
milestone58.0a1
Bug 1408993 - Allow tabs.create to create URLS in reader mode, r?mixedpuppy MozReview-Commit-ID: B5Nk0ZVvQIC
browser/components/extensions/ext-tabs.js
browser/components/extensions/schemas/tabs.json
browser/components/extensions/test/browser/browser_ext_tabs_create.js
--- 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},
             },
             {