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

Side by Side Diff: lib/options.js

Issue 29730656: Issue 6476 - Update adblockplusui dependencies to ead38c2013b5 (Closed)
Patch Set: Created March 22, 2018, 8:45 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« dependencies ('K') | « lib/notificationHelper.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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("info"); 24 const info = require("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 }
118 } 116 }
119 117
120 port.on("app.listen", onMessage); 118 function onConnect(port)
119 {
120 let {name, sender} = port;
Sebastian Noack 2018/03/23 00:01:48 Nit: I wouldn't care to destructure the port here,
saroyanm 2018/03/23 12:03:18 Done.
121 if (name != "ui" || !sender || sender.tab.id != tab.id)
Sebastian Noack 2018/03/23 00:01:48 Under which circumstances do we need to check for
saroyanm 2018/03/23 11:26:47 I assume because this is optional, but according t
saroyanm 2018/03/23 12:03:17 Done.
122 return;
123
124 browser.runtime.onConnect.removeListener(onConnect);
125 port.onMessage.addListener(onMessage);
126 }
127
128 browser.runtime.onConnect.addListener(onConnect);
121 }); 129 });
122 } 130 }
123 } 131 }
124 132
125 let showOptions = 133 let showOptions =
126 /** 134 /**
127 * Opens the options page. 135 * Opens the options page.
128 * 136 *
129 * @param {function} callback 137 * @param {function} callback
130 */ 138 */
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 } 198 }
191 199
192 // On Firefox for Android, open the options page directly when the browser 200 // On Firefox for Android, open the options page directly when the browser
193 // action is clicked. 201 // action is clicked.
194 browser.browserAction.onClicked.addListener(() => 202 browser.browserAction.onClicked.addListener(() =>
195 { 203 {
196 browser.tabs.query({active: true, lastFocusedWindow: true}, ([tab]) => 204 browser.tabs.query({active: true, lastFocusedWindow: true}, ([tab]) =>
197 { 205 {
198 let currentPage = new ext.Page(tab); 206 let currentPage = new ext.Page(tab);
199 207
200 showOptions(optionsPage => 208 showOptions((optionsPage, port) =>
201 { 209 {
202 if (!/^https?:$/.test(currentPage.url.protocol)) 210 if (!/^https?:$/.test(currentPage.url.protocol))
203 return; 211 return;
204 212
205 optionsPage.sendMessage({ 213 port.postMessage({
Sebastian Noack 2018/03/23 00:01:48 Nit: The indentation is off here.
saroyanm 2018/03/23 12:03:18 Done.
206 type: "app.respond", 214 type: "app.respond",
207 action: "showPageOptions", 215 action: "showPageOptions",
208 args: [ 216 args: [
209 { 217 {
210 host: getDecodedHostname(currentPage.url).replace(/^www\./, ""), 218 host: getDecodedHostname(currentPage.url).replace(/^www\./, ""),
211 whitelisted: !!checkWhitelisted(currentPage) 219 whitelisted: !!checkWhitelisted(currentPage)
212 } 220 }
213 ] 221 ]
214 }); 222 });
215 }); 223 });
216 }); 224 });
217 }); 225 });
OLDNEW
« dependencies ('K') | « lib/notificationHelper.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld