From 05f1e8b154ca64053a9a7ca0f667c17ce996adc9 Mon Sep 17 00:00:00 2001 From: Gerben Date: Thu, 23 Mar 2017 14:59:49 +0100 Subject: [PATCH] Ignore pages inside frames, refactor. --- background.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/background.js b/background.js index 68e9f45..a346c5a 100644 --- a/background.js +++ b/background.js @@ -50,21 +50,26 @@ browser.webRequest.onBeforeRequest.addListener( // Show the pageAction button if looking at a video (either with or without cruft). -browser.webNavigation.onCommitted.addListener(function (details) {maybeShowPageAction(details.tabId, details.url);}); -browser.webNavigation.onHistoryStateUpdated.addListener(function (details) {maybeShowPageAction(details.tabId, details.url);}); +browser.webNavigation.onCommitted.addListener(handleNavigation); +browser.webNavigation.onHistoryStateUpdated.addListener(handleNavigation); -function maybeShowPageAction(tabId, url) { - var matchEmbeddable = url.match(embeddableUrlPattern); - var matchCruft = url.match(cruftedUrlPattern); +function handleNavigation(details) { + // Ignore pages inside frames. + if (details.frameId !== 0) + return; + + // Check if the page is a youtube video (either with or without cruft) + var matchEmbeddable = details.url.match(embeddableUrlPattern); + var matchCruft = details.url.match(cruftedUrlPattern); if (matchEmbeddable || matchCruft) { - browser.pageAction.show(tabId); + // Show the pageAction button. + browser.pageAction.show(details.tabId); // In Chrome|ium, listeners stay across page changes, in Firefox they don't. So check first. if (!browser.pageAction.onClicked.hasListener(handlePageAction)) browser.pageAction.onClicked.addListener(handlePageAction); } } - // Enable/Disable cinema mode when the pageAction button is clicked. function handlePageAction(tab) { var matchEmbeddable = tab.url.match(embeddableUrlPattern); @@ -78,4 +83,3 @@ function handlePageAction(tab) { if (newUrl) browser.tabs.update(tab.id, {url: newUrl}); } -