| 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-2016 Eyeo GmbH | 3  * Copyright (C) 2006-2016 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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 89     forgetPopup(details.tabId); | 89     forgetPopup(details.tabId); | 
| 90 } | 90 } | 
| 91 | 91 | 
| 92 chrome.webNavigation.onCreatedNavigationTarget.addListener(details => | 92 chrome.webNavigation.onCreatedNavigationTarget.addListener(details => | 
| 93 { | 93 { | 
| 94   if (!hasLoadingPopups()) | 94   if (!hasLoadingPopups()) | 
| 95   { | 95   { | 
| 96     chrome.webRequest.onBeforeRequest.addListener( | 96     chrome.webRequest.onBeforeRequest.addListener( | 
| 97       onPopupURLChanged, | 97       onPopupURLChanged, | 
| 98       { | 98       { | 
| 99         urls:  ["<all_urls>"], | 99         urls: ["<all_urls>"], | 
| 100         types: ["main_frame"] | 100         types: ["main_frame"] | 
| 101       } | 101       } | 
| 102     ); | 102     ); | 
| 103     chrome.webNavigation.onCommitted.addListener(onPopupURLChanged); | 103     chrome.webNavigation.onCommitted.addListener(onPopupURLChanged); | 
| 104     chrome.webNavigation.onCompleted.addListener(onCompleted); | 104     chrome.webNavigation.onCompleted.addListener(onCompleted); | 
| 105     chrome.tabs.onRemoved.addListener(forgetPopup); | 105     chrome.tabs.onRemoved.addListener(forgetPopup); | 
| 106   } | 106   } | 
| 107 | 107 | 
| 108   let tabId = details.tabId; | 108   let {tabId} = details; | 
| 109   let popup = loadingPopups[tabId] = { | 109   let popup = loadingPopups[tabId] = { | 
| 110     url: details.url, | 110     url: details.url, | 
| 111     sourcePage: new ext.Page({id: details.sourceTabId}), | 111     sourcePage: new ext.Page({id: details.sourceTabId}), | 
| 112     sourceFrame: null | 112     sourceFrame: null | 
| 113   }; | 113   }; | 
| 114   let frame = ext.getFrame(details.sourceTabId, details.sourceFrameId); | 114   let frame = ext.getFrame(details.sourceTabId, details.sourceFrameId); | 
| 115 | 115 | 
| 116   if (checkWhitelisted(popup.sourcePage, frame)) | 116   if (checkWhitelisted(popup.sourcePage, frame)) | 
| 117   { |  | 
| 118     forgetPopup(tabId); | 117     forgetPopup(tabId); | 
| 119   } |  | 
| 120   else | 118   else | 
| 121   { | 119   { | 
| 122     popup.sourceFrame = frame; | 120     popup.sourceFrame = frame; | 
| 123     checkPotentialPopup(tabId, popup); | 121     checkPotentialPopup(tabId, popup); | 
| 124   } | 122   } | 
| 125 }); | 123 }); | 
| OLD | NEW | 
|---|