Index: popupBlocker.js |
=================================================================== |
--- a/popupBlocker.js |
+++ b/popupBlocker.js |
@@ -15,51 +15,16 @@ |
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
*/ |
-if (require("info").platform == "chromium") |
+ext.pages.onPopup.addListener(function(page, opener) |
{ |
- var tabsLoading = {}; |
+ if (isFrameWhitelisted(opener.page, opener.frame)) |
+ return; |
- chrome.webNavigation.onCreatedNavigationTarget.addListener(function(details) |
- { |
- var sourcePage = new ext.Page({id: details.sourceTabId}); |
- var sourceFrame = ext.getFrame(details.sourceTabId, details.sourceFrameId); |
+ var requestHost = extractHostFromURL(page.url); |
+ var documentHost = extractHostFromURL(opener.frame.url); |
+ var thirdParty = isThirdParty(requestHost, documentHost); |
+ var filter = defaultMatcher.matchesAny(page.url, "POPUP", documentHost, thirdParty); |
- if (!sourceFrame || isFrameWhitelisted(sourcePage, sourceFrame)) |
- return; |
- |
- var openerUrl = sourceFrame.url; |
- if (!openerUrl) |
- { |
- // We don't know the opener tab |
- return; |
- } |
- tabsLoading[details.tabId] = openerUrl; |
- |
- checkPotentialPopup(details.tabId, details.url, openerUrl); |
- }); |
- |
- chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) |
- { |
- if (!(tabId in tabsLoading)) |
- { |
- // Not a pop-up we've previously seen |
- return; |
- } |
- |
- if ("url" in changeInfo) |
- checkPotentialPopup(tabId, tab.url, tabsLoading[tabId]); |
- |
- if ("status" in changeInfo && changeInfo.status == "complete" && tab.url != "about:blank") |
- delete tabsLoading[tabId]; |
- }); |
-} |
- |
-function checkPotentialPopup(tabId, url, opener) |
-{ |
- var requestHost = extractHostFromURL(url); |
- var documentHost = extractHostFromURL(opener); |
- var thirdParty = isThirdParty(requestHost, documentHost); |
- var filter = defaultMatcher.matchesAny(url || "about:blank", "POPUP", documentHost, thirdParty); |
if (filter instanceof BlockingFilter) |
- chrome.tabs.remove(tabId); |
-} |
+ page.close(); |
+}); |