Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Unified Diff: chrome/test/data/extensions/samples/subscribe_page_action/background.html

Issue 149046: PageActions can now specify multiple icons and switch between them... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/extensions/samples/subscribe_page_action/background.html
===================================================================
--- chrome/test/data/extensions/samples/subscribe_page_action/background.html (revision 19579)
+++ chrome/test/data/extensions/samples/subscribe_page_action/background.html (working copy)
@@ -1,8 +1,13 @@
<html>
+<head>
<script>
// The Page Action ID.
var pageActionId = "RssPageAction";
+ // The icons to use. These correspond to the icons listed in the manifest.
+ var subscribeId = 0;
+ var alreadySubscribedId = 1;
+
// The window this Page Action is associated with.
var windowId = -1;
@@ -15,6 +20,32 @@
// 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;
@@ -28,17 +59,29 @@
// Let Chrome know that the PageAction needs to be enabled for this tabId
// and for the url of this page.
if (feedUrl) {
- chrome.pageActions.enableForTab(pageActionId,
- {tabId: tabId, url: pageUrl});
+ EnableIcon(false); // Not subscribed (as far as we know, might change).
+
+ // 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);
}
});
});
+ 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.windows.getCurrent(function(window) {
chrome.tabs.get(reply.data.tabId, function(tab) {
- if (window.focused) {
+ 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.
@@ -46,7 +89,6 @@
reply.data.tabUrl == pageUrl) {
// Create a new tab showing the subscription page with the right
// feed URL.
- var url = "http://www.google.com/reader/view/feed/" + feedUrl;
chrome.tabs.create({url: "subscribe.html?" + feedUrl,
windowId: windowId});
}
@@ -55,4 +97,5 @@
});
});
</script>
+</head>
</html>

Powered by Google App Engine
This is Rietveld 408576698