| Index: chrome/test/data/extensions/samples/subscribe_page_action/background.html
|
| ===================================================================
|
| --- chrome/test/data/extensions/samples/subscribe_page_action/background.html (revision 20629)
|
| +++ chrome/test/data/extensions/samples/subscribe_page_action/background.html (working copy)
|
| @@ -4,53 +4,14 @@
|
| // The Page Action ID.
|
| var pageActionId = "RssPageAction";
|
|
|
| - // The icons to use. These correspond to the icons listed in the manifest.
|
| + // The icon to use. This corresponds to the icon listed in the manifest.
|
| var subscribeId = 0;
|
| - var alreadySubscribedId = 1;
|
|
|
| - // The window this Page Action is associated with.
|
| - var windowId = -1;
|
| + // A dictionary keyed off of tabId that keeps track of data per tab (for
|
| + // example what feedUrl was detected in the tab).
|
| + var feedData = {};
|
|
|
| - // The TabId this Page Action is associated with.
|
| - var tabId = -1;
|
| -
|
| - // The URL of the page that contains the feed.
|
| - var pageUrl = "";
|
| -
|
| - // The feed URL found on the page.
|
| - var feedUrl = "";
|
| -
|
| - // The URL to use to check if user is subscribed already.
|
| - var subscribedUrl = "http://www.google.com/reader/api/0/subscribed?s=feed%2F";
|
| -
|
| - // The XMLHttpRequest object that checks if you are already subscribed.
|
| - var req;
|
| -
|
| - // The status of whether you have already subscribed to this feed or not.
|
| - var alreadySubscribed = false;
|
| -
|
| - function EnableIcon(subscribed) {
|
| - alreadySubscribed = subscribed;
|
| - if (!alreadySubscribed) {
|
| - chrome.pageActions.enableForTab(
|
| - pageActionId, {tabId: tabId,
|
| - url: pageUrl,
|
| - title: "Click to subscribe...",
|
| - iconId: subscribeId});
|
| - } else {
|
| - chrome.pageActions.enableForTab(
|
| - pageActionId, {tabId: tabId,
|
| - url: pageUrl,
|
| - title: "You are already subscribed to this feed",
|
| - iconId: alreadySubscribedId});
|
| - }
|
| - }
|
| -
|
| chrome.self.onConnect.addListener(function(port) {
|
| - windowId = port.tab.windowId;
|
| - tabId = port.tab.id;
|
| - pageUrl = port.tab.url;
|
| -
|
| // This will get called from the content script using PostMessage.
|
| // |feedUrls| is a list of URL feeds found on the page. We only need 1 to
|
| // enable the PageAction icon in the Omnibox.
|
| @@ -59,49 +20,39 @@
|
| // Let Chrome know that the PageAction needs to be enabled for this tabId
|
| // and for the url of this page.
|
| if (feedUrl) {
|
| - EnableIcon(false); // Not subscribed (as far as we know, might change).
|
| + feedData[port.tab.id] = {pageUrl: port.tab.url,
|
| + feedUrl: feedUrl};
|
|
|
| - // But also check the server to see if we have already subscribed so
|
| - // that we can update the status.
|
| - feedUrl = encodeURIComponent(feedUrl);
|
| - req = new XMLHttpRequest();
|
| - req.onload = handleResponse;
|
| - req.open("GET", subscribedUrl + feedUrl, false);
|
| - req.send(null);
|
| + chrome.pageActions.enableForTab(
|
| + pageActionId, {tabId: port.tab.id,
|
| + url: port.tab.url,
|
| + title: "Click to subscribe...",
|
| + iconId: subscribeId});
|
| }
|
| });
|
| });
|
|
|
| - function handleResponse() {
|
| - if (req.responseText == "true")
|
| - EnableIcon(true); // true == Already suscribed.
|
| - }
|
| -
|
| // Chrome will call into us when the user clicks on the icon in the OmniBox.
|
| - chrome.pageActions.onExecute.addListener(function(reply) {
|
| + chrome.pageActions["RssPageAction"].addListener(function(reply) {
|
| chrome.windows.getCurrent(function(window) {
|
| chrome.tabs.get(reply.data.tabId, function(tab) {
|
| - if (!alreadySubscribed && window.focused) {
|
| - // We need to know if we are the active window, because the tab may
|
| - // have moved to another window and we don't want to execute this
|
| - // action multiple times.
|
| - if (reply.pageActionId == pageActionId &&
|
| - reply.data.tabUrl == pageUrl) {
|
| - // Create a new tab showing the subscription page with the right
|
| - // feed URL.
|
| - chrome.tabs.create({url: "subscribe.html?" + feedUrl,
|
| - windowId: windowId});
|
| - } else {
|
| - console.log("Ignoring execute event.");
|
| - console.log("PageActionId: " + reply.pageActionId + " == " +
|
| - pageActionId);
|
| - console.log("TabUrl : " + reply.data.tabUrl + " == " +
|
| - pageUrl);
|
| - }
|
| + // We need to know if we are the active window, because the tab may
|
| + // have moved to another window and we don't want to execute this
|
| + // action multiple times.
|
| + if (window.focused) {
|
| + // Create a new tab showing the subscription page with the right
|
| + // feed URL.
|
| + chrome.tabs.create({url: "subscribe.html?" +
|
| + feedData[reply.data.tabId].feedUrl,
|
| + windowId: window.windowId});
|
| }
|
| });
|
| });
|
| });
|
| +
|
| + chrome.tabs.onRemoved.addListener(function(reply) {
|
| + feedData[reply.tabId] = null;
|
| + });
|
| </script>
|
| </head>
|
| </html>
|
|
|