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

Side by Side Diff: lib/devtools.js

Issue 29907589: Issue 7054 - Update the adblockpluscore dependency to 5cb695da5a40, adblockplusui to f86abf2efdfd (Closed)
Patch Set: Address PS12 Comment Created Jan. 8, 2019, 1:02 a.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 | « dependencies ('k') | lib/filterComposer.js » ('j') | 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 "use strict"; 18 "use strict";
19 19
20 const {RegExpFilter, 20 const {RegExpFilter,
21 WhitelistFilter, 21 WhitelistFilter,
22 ElemHideFilter} = require("../adblockpluscore/lib/filterClasses"); 22 ElemHideFilter} = require("../adblockpluscore/lib/filterClasses");
23 const {SpecialSubscription} = 23 const {SpecialSubscription} =
24 require("../adblockpluscore/lib/subscriptionClasses"); 24 require("../adblockpluscore/lib/subscriptionClasses");
25 const {FilterStorage} = require("../adblockpluscore/lib/filterStorage"); 25 const {filterStorage} = require("../adblockpluscore/lib/filterStorage");
26 const {defaultMatcher} = require("../adblockpluscore/lib/matcher"); 26 const {defaultMatcher} = require("../adblockpluscore/lib/matcher");
27 const {filterNotifier} = require("../adblockpluscore/lib/filterNotifier"); 27 const {filterNotifier} = require("../adblockpluscore/lib/filterNotifier");
28 const {extractHostFromFrame} = require("./url"); 28 const {extractHostFromFrame} = require("./url");
29 const {port} = require("./messaging"); 29 const {port} = require("./messaging");
30 const {HitLogger, nonRequestTypes} = require("./hitLogger"); 30 const {HitLogger, nonRequestTypes} = require("./hitLogger");
31 31
32 let panels = new Map(); 32 let panels = new Map();
33 33
34 function isActivePanel(panel) 34 function isActivePanel(panel)
35 { 35 {
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 // previous URL. 150 // previous URL.
151 if (panel && panel.reload) 151 if (panel && panel.reload)
152 { 152 {
153 browser.tabs.reload(tabId, {bypassCache: true}); 153 browser.tabs.reload(tabId, {bypassCache: true});
154 154
155 panel.reload = false; 155 panel.reload = false;
156 panel.reloading = true; 156 panel.reloading = true;
157 } 157 }
158 } 158 }
159 159
160 function updateFilters(filters, added) 160 function updateFilters(subscription, filters, added)
161 { 161 {
162 let includes = subscription ?
163 filter => filter && subscription.searchfilter(filter) != -1 :
164 filters.includes.bind(filters);
165
162 for (let panel of panels.values()) 166 for (let panel of panels.values())
163 { 167 {
164 for (let i = 0; i < panel.records.length; i++) 168 for (let i = 0; i < panel.records.length; i++)
165 { 169 {
166 let record = panel.records[i]; 170 let record = panel.records[i];
167 171
168 // If an added filter matches a request shown in the devtools panel, 172 // If an added filter matches a request shown in the devtools panel,
169 // update that record to show the new filter. Ignore filters that aren't 173 // update that record to show the new filter. Ignore filters that aren't
170 // associated with any sub-resource request. There is no record for these 174 // associated with any sub-resource request. There is no record for these
171 // if they don't already match. In particular, in case of element hiding 175 // if they don't already match. In particular, in case of element hiding
172 // filters, we also wouldn't know if any new element matches. 176 // filters, we also wouldn't know if any new element matches.
173 if (added) 177 if (added)
174 { 178 {
175 if (nonRequestTypes.includes(record.request.type)) 179 if (nonRequestTypes.includes(record.request.type))
176 continue; 180 continue;
177 181
178 let filter = matchRequest(record.request); 182 let filter = matchRequest(record.request);
179 if (!filters.includes(filter)) 183
184 if (!includes(filter))
180 continue; 185 continue;
181 186
182 record.filter = filter; 187 record.filter = filter;
183 } 188 }
184 189
185 // If a filter shown in the devtools panel got removed, update that 190 // If a filter shown in the devtools panel got removed, update that
186 // record to show the filter that matches now, or none, instead. 191 // record to show the filter that matches now, or none, instead.
187 // For filters that aren't associated with any sub-resource request, 192 // For filters that aren't associated with any sub-resource request,
188 // just remove the record. We wouldn't know whether another filter 193 // just remove the record. We wouldn't know whether another filter
189 // matches instead until the page is reloaded. 194 // matches instead until the page is reloaded.
190 else 195 else
191 { 196 {
192 if (!filters.includes(record.filter)) 197 if (!includes(record.filter))
193 continue; 198 continue;
194 199
195 if (nonRequestTypes.includes(record.request.type)) 200 if (nonRequestTypes.includes(record.request.type))
196 { 201 {
197 panel.port.postMessage({ 202 panel.port.postMessage({
198 type: "remove-record", 203 type: "remove-record",
199 index: i 204 index: i
200 }); 205 });
201 panel.records.splice(i--, 1); 206 panel.records.splice(i--, 1);
202 continue; 207 continue;
203 } 208 }
204 209
205 record.filter = matchRequest(record.request); 210 record.filter = matchRequest(record.request);
206 } 211 }
207 212
208 panel.port.postMessage({ 213 panel.port.postMessage({
209 type: "update-record", 214 type: "update-record",
210 index: i, 215 index: i,
211 request: record.request, 216 request: record.request,
212 filter: getFilterInfo(record.filter) 217 filter: getFilterInfo(record.filter)
213 }); 218 });
214 } 219 }
215 } 220 }
216 } 221 }
217 222
218 function onFilterAdded(filter) 223 function onFilterAdded(filter)
219 { 224 {
220 updateFilters([filter], true); 225 updateFilters(null, [filter], true);
221 } 226 }
222 227
223 function onFilterRemoved(filter) 228 function onFilterRemoved(filter)
224 { 229 {
225 updateFilters([filter], false); 230 updateFilters(null, [filter], false);
226 } 231 }
227 232
228 function onSubscriptionAdded(subscription) 233 function onSubscriptionAdded(subscription)
229 { 234 {
230 if (subscription instanceof SpecialSubscription) 235 if (subscription instanceof SpecialSubscription)
231 updateFilters(subscription.filters, true); 236 updateFilters(subscription, null, true);
232 } 237 }
233 238
234 browser.runtime.onConnect.addListener(newPort => 239 browser.runtime.onConnect.addListener(newPort =>
235 { 240 {
236 let match = newPort.name.match(/^devtools-(\d+)$/); 241 let match = newPort.name.match(/^devtools-(\d+)$/);
237 if (!match) 242 if (!match)
238 return; 243 return;
239 244
240 let inspectedTabId = parseInt(match[1], 10); 245 let inspectedTabId = parseInt(match[1], 10);
241 let localOnBeforeRequest = onBeforeRequest.bind(); 246 let localOnBeforeRequest = onBeforeRequest.bind();
(...skipping 28 matching lines...) Expand all
270 ext.pages.onLoading.removeListener(onLoading); 275 ext.pages.onLoading.removeListener(onLoading);
271 filterNotifier.off("filter.added", onFilterAdded); 276 filterNotifier.off("filter.added", onFilterAdded);
272 filterNotifier.off("filter.removed", onFilterRemoved); 277 filterNotifier.off("filter.removed", onFilterRemoved);
273 filterNotifier.off("subscription.added", onSubscriptionAdded); 278 filterNotifier.off("subscription.added", onSubscriptionAdded);
274 } 279 }
275 }); 280 });
276 281
277 HitLogger.addListener(inspectedTabId, hitListener); 282 HitLogger.addListener(inspectedTabId, hitListener);
278 panels.set(inspectedTabId, panel); 283 panels.set(inspectedTabId, panel);
279 }); 284 });
OLDNEW
« no previous file with comments | « dependencies ('k') | lib/filterComposer.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld