| Index: popupBlocker.js |
| =================================================================== |
| --- a/popupBlocker.js |
| +++ b/popupBlocker.js |
| @@ -27,15 +27,12 @@ |
| if (!sourceFrame || isFrameWhitelisted(sourcePage, sourceFrame)) |
| return; |
| - var openerUrl = sourceFrame.url; |
| - if (!openerUrl) |
| - { |
| - // We don't know the opener tab |
| + var documentHost = extractHostFromFrame(sourceFrame); |
| + if (!documentHost) |
| return; |
| - } |
| - tabsLoading[details.tabId] = openerUrl; |
| - checkPotentialPopup(details.tabId, details.url, openerUrl); |
| + tabsLoading[details.tabId] = documentHost; |
| + checkPotentialPopup(details.tabId, details.url, documentHost); |
| }); |
| chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) |
| @@ -54,12 +51,15 @@ |
| }); |
| } |
| -function checkPotentialPopup(tabId, url, opener) |
| +function checkPotentialPopup(tabId, url, documentHost) |
| { |
| - var requestHost = extractHostFromURL(url); |
| - var documentHost = extractHostFromURL(opener); |
| - var thirdParty = isThirdParty(requestHost, documentHost); |
| - var filter = defaultMatcher.matchesAny(url || "about:blank", "POPUP", documentHost, thirdParty); |
| + url = new URL(url || "about:blank"); |
| + |
| + var filter = defaultMatcher.matchesAny( |
| + stringifyURL(url), "POPUP", |
| + documentHost, isThirdParty(url, documentHost) |
| + ); |
| + |
| if (filter instanceof BlockingFilter) |
| chrome.tabs.remove(tabId); |
| } |