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: updated git dependency Created March 23, 2018, 3 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
« no previous file with comments | « 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 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 });
OLDNEW
« no previous file with comments | « lib/notificationHelper.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld