| Index: background.js |
| =================================================================== |
| --- a/background.js |
| +++ b/background.js |
| @@ -85,27 +85,27 @@ |
| var activeNotification = null; |
| // Adds or removes browser action icon according to options. |
| -function refreshIconAndContextMenu(tab) |
| +function refreshIconAndContextMenu(page) |
| { |
| - if(!/^https?:/.test(tab.url)) |
| + if(!/^https?:/.test(page.url)) |
| return; |
| var iconFilename; |
| if (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-16.png" |
| else |
| { |
| - var excluded = isWhitelisted(tab.url); |
| + var excluded = isWhitelisted(page.url); |
| iconFilename = excluded ? "icons/abp-19-whitelisted.png" : "icons/abp-19.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 |
| + // Set context menu status according to whether the page has a whitelisted domain |
| if (excluded) |
| ext.contextMenus.hideMenuItems(); |
| else |
| @@ -194,10 +194,7 @@ |
| function notifyUser() |
| { |
| - ext.windows.getLastFocused(function(win) |
| - { |
| - win.openTab(ext.getURL("firstRun.html")); |
| - }); |
| + ext.pages.open(ext.getURL("firstRun.html")); |
| } |
| if (addSubscription) |
| @@ -232,10 +229,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 |
| @@ -250,34 +247,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) |
|
Wladimir Palant
2014/04/04 14:00:35
The compat info for Chrome needs to be changed - l
Sebastian Noack
2014/04/07 13:15:25
Done.
|
| { |
| - 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); |
|
Wladimir Palant
2014/04/04 14:00:35
Won't this break abp: links? The add-subscription
Sebastian Noack
2014/04/07 13:15:25
It was wishful thinking, that the callback passed
|
| }); |
| } |
| @@ -314,8 +306,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); |
| @@ -341,7 +333,7 @@ |
| sendResponse(selectors); |
| break; |
| case "should-collapse": |
| - if (isFrameWhitelisted(sender.tab, sender.frame, "DOCUMENT")) |
| + if (isFrameWhitelisted(sender.page, sender.frame, "DOCUMENT")) |
| { |
| sendResponse(false); |
| break; |
| @@ -364,9 +356,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; |
| @@ -378,18 +370,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; |
| @@ -401,23 +393,17 @@ |
| } |
| }); |
| -// Show icon as browser action for all tabs that already exist |
| -ext.windows.getAll(function(windows) |
| +// Show icon as browser action for all pages that already exist |
| +ext.pages.query({}, function(pages) |
| { |
| - for (var i = 0; i < windows.length; i++) |
| - { |
| - windows[i].getAllTabs(function(tabs) |
| - { |
| - tabs.forEach(refreshIconAndContextMenu); |
| - }); |
| - } |
| + pages.forEach(refreshIconAndContextMenu); |
| }); |
| -// Update icon if a tab changes location |
| -ext.tabs.onLoading.addListener(function(tab) |
| +// Update icon for new loaded pages |
| +ext.pages.onLoading.addListener(function(page) |
| { |
| - tab.sendMessage({type: "clickhide-deactivate"}); |
| - refreshIconAndContextMenu(tab); |
| + page.sendMessage({type: "clickhide-deactivate"}); |
| + refreshIconAndContextMenu(page); |
| }); |
| setTimeout(function() |