Left: | ||
Right: |
LEFT | RIGHT |
---|---|
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-2017 eyeo GmbH | 3 * Copyright (C) 2006-2017 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 |
(...skipping 15 matching lines...) Expand all Loading... | |
26 const {FilterNotifier} = require("filterNotifier"); | 26 const {FilterNotifier} = require("filterNotifier"); |
27 const {extractHostFromFrame} = require("url"); | 27 const {extractHostFromFrame} = require("url"); |
28 const {port} = require("messaging"); | 28 const {port} = require("messaging"); |
29 | 29 |
30 const nonRequestTypes = ["DOCUMENT", "ELEMHIDE", "GENERICBLOCK", "GENERICHIDE"]; | 30 const nonRequestTypes = ["DOCUMENT", "ELEMHIDE", "GENERICBLOCK", "GENERICHIDE"]; |
31 | 31 |
32 // Mapping of inspected tabs to their devpanel page | 32 // Mapping of inspected tabs to their devpanel page |
33 // and recorded items. We can't use a PageMap here, | 33 // and recorded items. We can't use a PageMap here, |
34 // because data must persist after navigation/reload. | 34 // because data must persist after navigation/reload. |
35 let panels = new Map(); | 35 let panels = new Map(); |
36 | |
37 function hasPanels() | |
38 { | |
39 return panels.size > 0; | |
Sebastian Noack
2017/04/29 22:46:32
Now where this check is less obscure, there isn't
Manish Jethani
2017/05/04 14:47:34
Changed here and in popupBlocker.
| |
40 } | |
41 | 36 |
42 function getActivePanel(page) | 37 function getActivePanel(page) |
43 { | 38 { |
44 let panel = panels.get(page.id); | 39 let panel = panels.get(page.id); |
45 if (panel && !panel.reload && !panel.reloading) | 40 if (panel && !panel.reload && !panel.reloading) |
46 return panel; | 41 return panel; |
47 return null; | 42 return null; |
48 } | 43 } |
49 | 44 |
50 function getFilterInfo(filter) | 45 function getFilterInfo(filter) |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
337 let match = newPort.name.match(/^devtools-(\d+)$/); | 332 let match = newPort.name.match(/^devtools-(\d+)$/); |
338 if (!match) | 333 if (!match) |
339 return; | 334 return; |
340 | 335 |
341 let inspectedTabId = parseInt(match[1], 10); | 336 let inspectedTabId = parseInt(match[1], 10); |
342 let localOnBeforeRequest = onBeforeRequest.bind(); | 337 let localOnBeforeRequest = onBeforeRequest.bind(); |
343 | 338 |
344 chrome.webRequest.onBeforeRequest.addListener( | 339 chrome.webRequest.onBeforeRequest.addListener( |
345 localOnBeforeRequest, | 340 localOnBeforeRequest, |
346 { | 341 { |
347 urls: ["<all_urls>"], | 342 urls: ["http://*/*", "https://*/*"], |
348 types: ["main_frame"], | 343 types: ["main_frame"], |
349 tabId: inspectedTabId | 344 tabId: inspectedTabId |
350 } | 345 } |
351 ); | 346 ); |
352 | 347 |
353 if (!hasPanels()) | 348 if (panels.size == 0) |
354 { | 349 { |
355 ext.pages.onLoading.addListener(onLoading); | 350 ext.pages.onLoading.addListener(onLoading); |
356 FilterNotifier.on("filter.added", onFilterAdded); | 351 FilterNotifier.on("filter.added", onFilterAdded); |
357 FilterNotifier.on("filter.removed", onFilterRemoved); | 352 FilterNotifier.on("filter.removed", onFilterRemoved); |
358 FilterNotifier.on("subscription.added", onSubscriptionAdded); | 353 FilterNotifier.on("subscription.added", onSubscriptionAdded); |
359 } | 354 } |
360 | 355 |
361 newPort.onDisconnect.addListener(() => | 356 newPort.onDisconnect.addListener(() => |
362 { | 357 { |
363 panels.delete(inspectedTabId); | 358 panels.delete(inspectedTabId); |
364 chrome.webRequest.onBeforeRequest.removeListener(localOnBeforeRequest); | 359 chrome.webRequest.onBeforeRequest.removeListener(localOnBeforeRequest); |
365 | 360 |
366 if (!hasPanels()) | 361 if (panels.size == 0) |
367 { | 362 { |
368 ext.pages.onLoading.removeListener(onLoading); | 363 ext.pages.onLoading.removeListener(onLoading); |
369 FilterNotifier.off("filter.added", onFilterAdded); | 364 FilterNotifier.off("filter.added", onFilterAdded); |
370 FilterNotifier.off("filter.removed", onFilterRemoved); | 365 FilterNotifier.off("filter.removed", onFilterRemoved); |
371 FilterNotifier.off("subscription.added", onSubscriptionAdded); | 366 FilterNotifier.off("subscription.added", onSubscriptionAdded); |
372 } | 367 } |
373 }); | 368 }); |
374 | 369 |
375 panels.set(inspectedTabId, {port: newPort, records: []}); | 370 panels.set(inspectedTabId, {port: newPort, records: []}); |
376 }); | 371 }); |
377 | 372 |
378 port.on("devtools.traceElemHide", (message, sender) => | 373 port.on("devtools.traceElemHide", (message, sender) => |
379 { | 374 { |
380 logHiddenElements( | 375 logHiddenElements( |
381 sender.page, message.selectors, message.filters, | 376 sender.page, message.selectors, message.filters, |
382 extractHostFromFrame(sender.frame) | 377 extractHostFromFrame(sender.frame) |
383 ); | 378 ); |
384 }); | 379 }); |
LEFT | RIGHT |