| Index: background.js |
| =================================================================== |
| --- a/background.js |
| +++ b/background.js |
| @@ -79,15 +79,9 @@ |
| // due to loading filters or saving filter changes |
| if (action == "load" || action == "save") |
| { |
| - ext.windows.getAll(function(windows) |
| + ext.pages.query({}, function(pages) |
| { |
| - for (var i = 0; i < windows.length; i++) |
| - { |
| - windows[i].getAllTabs(function(tabs) |
| - { |
| - tabs.forEach(refreshIconAndContextMenu); |
| - }); |
| - } |
| + pages.forEach(refreshIconAndContextMenu); |
| }); |
| } |
| }); |
| @@ -112,24 +106,25 @@ |
| var activeNotification = null; |
| // Adds or removes browser action icon according to options. |
| -function refreshIconAndContextMenu(tab) |
| +function refreshIconAndContextMenu(page) |
| { |
| - var whitelisted = isWhitelisted(tab.url); |
| + var whitelisted = isWhitelisted(page.url); |
| var iconFilename; |
| if (whitelisted && require("info").platform != "safari") |
| - // There is no grayscale version of the icon for whitelisted tabs |
| + // There is no grayscale version of the icon for whitelisted pages |
| // when using Safari, because icons are grayscale already and icons |
| - // aren't per tab in Safari. |
| + // aren't per page in Safari. |
| iconFilename = "icons/abp-$size-whitelisted.png"; |
| else |
| iconFilename = "icons/abp-$size.png"; |
| - tab.browserAction.setIcon(iconFilename); |
| - iconAnimation.registerTab(tab, iconFilename); |
| + page.browserAction.setIcon(iconFilename); |
| + iconAnimation.registerPage(page, iconFilename); |
| - // Set context menu status according to whether current tab has whitelisted domain |
| - if (whitelisted || !/^https?:/.test(tab.url)) |
| + // show or hide the context menu entry dependent on whether |
| + // adblocking is active on that page |
| + if (whitelisted || !/^https?:/.test(page.url)) |
| ext.contextMenus.hideMenuItems(); |
| else |
| ext.contextMenus.showMenuItems(); |
| @@ -227,10 +222,7 @@ |
| function notifyUser() |
| { |
| - ext.windows.getLastFocused(function(win) |
| - { |
| - win.openTab(ext.getURL("firstRun.html")); |
| - }); |
| + ext.pages.open(ext.getURL("firstRun.html")); |
| } |
| if (addSubscription) |
| @@ -265,10 +257,10 @@ |
| if (Prefs.shouldShowBlockElementMenu) |
| { |
| // Register context menu item |
| - ext.contextMenus.addMenuItem(ext.i18n.getMessage("block_element"), ["image", "video", "audio"], function(srcUrl, tab) |
| + ext.contextMenus.addMenuItem(ext.i18n.getMessage("block_element"), ["image", "video", "audio"], function(srcUrl, page) |
| { |
| if (srcUrl) |
| - tab.sendMessage({type: "clickhide-new-filter", filter: srcUrl}); |
| + page.sendMessage({type: "clickhide-new-filter", filter: srcUrl}); |
| }); |
| } |
| else |
| @@ -283,34 +275,29 @@ |
| setContextMenu(); |
| /** |
| - * Opens options tab or focuses an existing one, within the last focused window. |
| + * Opens options page or focuses an existing one, within the last focused window. |
| * @param {Function} callback function to be called with the |
| - Tab object of the options tab |
| + Page object of the options page |
| */ |
| function openOptions(callback) |
| { |
| - ext.windows.getLastFocused(function(win) |
| + ext.pages.query({lastFocusedWindow: true}, function(pages) |
| { |
| - win.getAllTabs(function(tabs) |
| + var optionsUrl = ext.getURL("options.html"); |
| + |
| + for (var i = 0; i < pages.length; i++) |
| { |
| - var optionsUrl = ext.getURL("options.html"); |
| + var page = pages[i]; |
| + if (page.url == optionsUrl) |
| + { |
| + page.activate(); |
| + if (callback) |
| + callback(page); |
| + return; |
| + } |
| + } |
| - for (var i = 0; i < tabs.length; i++) |
| - { |
| - if (tabs[i].url == optionsUrl) |
| - { |
| - tabs[i].activate(); |
| - if (callback) |
| - callback(tabs[i]); |
| - return; |
| - } |
| - } |
| - |
| - win.openTab(optionsUrl, callback && function(tab) |
| - { |
| - tab.onCompleted.addListener(callback); |
| - }); |
| - }); |
| + ext.pages.open(optionsUrl, callback); |
| }); |
| } |
| @@ -491,8 +478,8 @@ |
| case "get-selectors": |
| var selectors = null; |
| - if (!isFrameWhitelisted(sender.tab, sender.frame, "DOCUMENT") && |
| - !isFrameWhitelisted(sender.tab, sender.frame, "ELEMHIDE")) |
| + if (!isFrameWhitelisted(sender.page, sender.frame, "DOCUMENT") && |
| + !isFrameWhitelisted(sender.page, sender.frame, "ELEMHIDE")) |
| { |
| var noStyleRules = false; |
| var host = extractHostFromURL(sender.frame.url); |
| @@ -518,7 +505,7 @@ |
| sendResponse(selectors); |
| break; |
| case "should-collapse": |
| - if (isFrameWhitelisted(sender.tab, sender.frame, "DOCUMENT")) |
| + if (isFrameWhitelisted(sender.page, sender.frame, "DOCUMENT")) |
| { |
| sendResponse(false); |
| break; |
| @@ -541,9 +528,9 @@ |
| case "get-domain-enabled-state": |
| // Returns whether this domain is in the exclusion list. |
| // The browser action popup asks us this. |
| - if(sender.tab) |
| + if(sender.page) |
| { |
| - sendResponse({enabled: !isWhitelisted(sender.tab.url)}); |
| + sendResponse({enabled: !isWhitelisted(sender.page.url)}); |
| return; |
| } |
| break; |
| @@ -555,18 +542,18 @@ |
| } |
| break; |
| case "add-subscription": |
| - openOptions(function(tab) |
| + openOptions(function(page) |
| { |
| - tab.sendMessage(msg); |
| + page.sendMessage(msg); |
| }); |
| break; |
| case "add-key-exception": |
| - processKeyException(msg.token, sender.tab, sender.frame); |
| + processKeyException(msg.token, sender.page, sender.frame); |
| break; |
| case "forward": |
| - if (sender.tab) |
| + if (sender.page) |
| { |
| - sender.tab.sendMessage(msg.payload, sendResponse); |
| + sender.page.sendMessage(msg.payload, sendResponse); |
| // Return true to indicate that we want to call |
| // sendResponse asynchronously |
| return true; |
| @@ -578,11 +565,11 @@ |
| } |
| }); |
| -// Update icon if a tab changes location |
| -ext.tabs.onLoading.addListener(function(tab) |
| +// update icon when page changes location |
| +ext.pages.onLoading.addListener(function(page) |
| { |
| - tab.sendMessage({type: "clickhide-deactivate"}); |
| - refreshIconAndContextMenu(tab); |
| + page.sendMessage({type: "clickhide-deactivate"}); |
| + refreshIconAndContextMenu(page); |
| }); |
| setTimeout(function() |