Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: lib/options.js

Issue 29713631: Issue 5760 - Use relative require paths (Closed)
Left Patch Set: Address PS2 comments, rebase Created March 30, 2018, 3:09 a.m.
Right Patch Set: Address PS4 comments, rebase Created April 5, 2018, 11:09 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « lib/notificationHelper.js ('k') | lib/popupBlocker.js » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 /* 1 /*
2 * This file is part of Adblock Plus <https://adblockplus.org/>, 2 * This file is part of Adblock Plus <https://adblockplus.org/>,
3 * Copyright (C) 2006-present eyeo GmbH 3 * Copyright (C) 2006-present eyeo GmbH
4 * 4 *
5 * Adblock Plus is free software: you can redistribute it and/or modify 5 * Adblock Plus is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 3 as 6 * it under the terms of the GNU General Public License version 3 as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
8 * 8 *
9 * Adblock Plus is distributed in the hope that it will be useful, 9 * Adblock Plus is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details. 12 * GNU General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU General Public License 14 * You should have received a copy of the GNU General Public License
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
16 */ 16 */
17 17
18 /** @module options */ 18 /** @module options */
19 19
20 "use strict"; 20 "use strict";
21 21
22 const {getDecodedHostname} = require("./url"); 22 const {getDecodedHostname} = require("./url");
23 const {checkWhitelisted} = require("./whitelisting"); 23 const {checkWhitelisted} = require("./whitelisting");
24 const {port} = require("./messaging");
25 const info = require("../buildtools/info"); 24 const info = require("../buildtools/info");
26 25
27 const optionsUrl = "options.html"; 26 const optionsUrl = "options.html";
28 27
29 function findOptionsTab(callback) 28 function findOptionsTab(callback)
30 { 29 {
31 browser.tabs.query({}, tabs => 30 browser.tabs.query({}, tabs =>
32 { 31 {
33 // We find a tab ourselves because Edge has a bug when quering tabs with 32 // We find a tab ourselves because Edge has a bug when quering tabs with
34 // extension URL protocol: 33 // extension URL protocol:
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 else 99 else
101 { 100 {
102 // If we don't already have an options page, it means we've just opened 101 // If we don't already have an options page, it means we've just opened
103 // one, in which case we must find the tab, wait for it to be ready, and 102 // one, in which case we must find the tab, wait for it to be ready, and
104 // then return the call. 103 // then return the call.
105 findOptionsTab(tab => 104 findOptionsTab(tab =>
106 { 105 {
107 if (!tab) 106 if (!tab)
108 return; 107 return;
109 108
110 function onMessage(message, sender) 109 function onMessage(message, port)
111 { 110 {
112 if (message.type == "app.listen" && 111 if (message.type != "app.listen")
113 sender.page && sender.page.id == tab.id) 112 return;
114 { 113
115 port.off("app.listen", onMessage); 114 port.onMessage.removeListener(onMessage);
116 callback(new ext.Page(tab)); 115 callback(new ext.Page(tab), port);
117 } 116 }
118 } 117
119 118 function onConnect(port)
120 port.on("app.listen", onMessage); 119 {
120 if (port.name != "ui" || port.sender.tab.id != tab.id)
121 return;
122
123 browser.runtime.onConnect.removeListener(onConnect);
124 port.onMessage.addListener(onMessage);
125 }
126
127 browser.runtime.onConnect.addListener(onConnect);
121 }); 128 });
122 } 129 }
123 } 130 }
124 131
125 let showOptions = 132 let showOptions =
126 /** 133 /**
127 * Opens the options page. 134 * Opens the options page.
128 * 135 *
129 * @param {function} callback 136 * @param {function} callback
130 */ 137 */
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 } 197 }
191 198
192 // On Firefox for Android, open the options page directly when the browser 199 // On Firefox for Android, open the options page directly when the browser
193 // action is clicked. 200 // action is clicked.
194 browser.browserAction.onClicked.addListener(() => 201 browser.browserAction.onClicked.addListener(() =>
195 { 202 {
196 browser.tabs.query({active: true, lastFocusedWindow: true}, ([tab]) => 203 browser.tabs.query({active: true, lastFocusedWindow: true}, ([tab]) =>
197 { 204 {
198 let currentPage = new ext.Page(tab); 205 let currentPage = new ext.Page(tab);
199 206
200 showOptions(optionsPage => 207 showOptions((optionsPage, port) =>
201 { 208 {
202 if (!/^https?:$/.test(currentPage.url.protocol)) 209 if (!/^https?:$/.test(currentPage.url.protocol))
203 return; 210 return;
204 211
205 optionsPage.sendMessage({ 212 port.postMessage({
206 type: "app.respond", 213 type: "app.respond",
207 action: "showPageOptions", 214 action: "showPageOptions",
208 args: [ 215 args: [
209 { 216 {
210 host: getDecodedHostname(currentPage.url).replace(/^www\./, ""), 217 host: getDecodedHostname(currentPage.url).replace(/^www\./, ""),
211 whitelisted: !!checkWhitelisted(currentPage) 218 whitelisted: !!checkWhitelisted(currentPage)
212 } 219 }
213 ] 220 ]
214 }); 221 });
215 }); 222 });
216 }); 223 });
217 }); 224 });
LEFTRIGHT

Powered by Google App Engine
This is Rietveld