| OLD | NEW | 
|---|
| 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 | 
| 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 popupBlocker */ | 18 /** @module popupBlocker */ | 
| 19 | 19 | 
| 20 "use strict"; | 20 "use strict"; | 
| 21 | 21 | 
| 22 const {defaultMatcher} = require("matcher"); | 22 const {defaultMatcher} = require("matcher"); | 
| 23 const {BlockingFilter} = require("filterClasses"); | 23 const {BlockingFilter, RegExpFilter} = require("filterClasses"); | 
| 24 const {stringifyURL, isThirdParty, extractHostFromFrame} = require("url"); | 24 const {stringifyURL, isThirdParty, extractHostFromFrame} = require("url"); | 
| 25 const {checkWhitelisted} = require("whitelisting"); | 25 const {checkWhitelisted} = require("whitelisting"); | 
| 26 const {logRequest} = require("devtools"); | 26 const {logRequest} = require("devtools"); | 
| 27 | 27 | 
| 28 let loadingPopups = Object.create(null); | 28 let loadingPopups = Object.create(null); | 
| 29 | 29 | 
| 30 function hasLoadingPopups() | 30 function hasLoadingPopups() | 
| 31 { | 31 { | 
| 32   return Object.keys(loadingPopups).length > 0; | 32   return Object.keys(loadingPopups).length > 0; | 
| 33 } | 33 } | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 93     forgetPopup(details.tabId); | 93     forgetPopup(details.tabId); | 
| 94 } | 94 } | 
| 95 | 95 | 
| 96 chrome.webNavigation.onCreatedNavigationTarget.addListener(details => | 96 chrome.webNavigation.onCreatedNavigationTarget.addListener(details => | 
| 97 { | 97 { | 
| 98   if (!hasLoadingPopups()) | 98   if (!hasLoadingPopups()) | 
| 99   { | 99   { | 
| 100     chrome.webRequest.onBeforeRequest.addListener( | 100     chrome.webRequest.onBeforeRequest.addListener( | 
| 101       onPopupURLChanged, | 101       onPopupURLChanged, | 
| 102       { | 102       { | 
| 103         urls:  ["<all_urls>"], | 103         urls: ["<all_urls>"], | 
| 104         types: ["main_frame"] | 104         types: ["main_frame"] | 
| 105       } | 105       } | 
| 106     ); | 106     ); | 
| 107     chrome.webNavigation.onCommitted.addListener(onPopupURLChanged); | 107     chrome.webNavigation.onCommitted.addListener(onPopupURLChanged); | 
| 108     chrome.webNavigation.onCompleted.addListener(onCompleted); | 108     chrome.webNavigation.onCompleted.addListener(onCompleted); | 
| 109     chrome.tabs.onRemoved.addListener(forgetPopup); | 109     chrome.tabs.onRemoved.addListener(forgetPopup); | 
| 110   } | 110   } | 
| 111 | 111 | 
| 112   let tabId = details.tabId; | 112   let {tabId} = details; | 
| 113   let popup = loadingPopups[tabId] = { | 113   let popup = loadingPopups[tabId] = { | 
| 114     url: details.url, | 114     url: details.url, | 
| 115     sourcePage: new ext.Page({id: details.sourceTabId}), | 115     sourcePage: new ext.Page({id: details.sourceTabId}), | 
| 116     sourceFrame: null | 116     sourceFrame: null | 
| 117   }; | 117   }; | 
| 118   let frame = ext.getFrame(details.sourceTabId, details.sourceFrameId); | 118   let frame = ext.getFrame(details.sourceTabId, details.sourceFrameId); | 
| 119 | 119 | 
| 120   if (checkWhitelisted(popup.sourcePage, frame)) | 120   if (checkWhitelisted(popup.sourcePage, frame)) | 
| 121   { | 121   { | 
| 122     forgetPopup(tabId); | 122     forgetPopup(tabId); | 
| 123   } | 123   } | 
| 124   else | 124   else | 
| 125   { | 125   { | 
| 126     popup.sourceFrame = frame; | 126     popup.sourceFrame = frame; | 
| 127     checkPotentialPopup(tabId, popup); | 127     checkPotentialPopup(tabId, popup); | 
| 128   } | 128   } | 
| 129 }); | 129 }); | 
| OLD | NEW | 
|---|