Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: chrome/ext/background.js

Issue 5099207639695360: Made browser actions per tab on Safari (Closed)
Patch Set: Rebased, addressed comment and enabled to set global browser actions Created Jan. 15, 2014, 7:19 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/ext/background.js
===================================================================
--- a/chrome/ext/background.js
+++ b/chrome/ext/background.js
@@ -191,58 +191,62 @@
};
+ /* Browser actions */
+
+ var BrowserAction = function() {};
+ BrowserAction.prototype = {
+ _prepareParams: function(params) {},
+ _apply: function(method, params)
+ {
+ this._prepareParams(params);
+ chrome.browserAction[method](params);
+ },
+ setIcon: function(path)
+ {
+ this._apply("setIcon", {path: path});
+ },
+ setTitle: function(title)
+ {
+ this._apply("setTitle", {title: title});
+ },
+ setBadge: function(badge)
+ {
+ if (badge)
+ {
+ if ("color" in badge)
+ this._apply("setBadgeBackgroundColor", {color: badge.color});
+
+ if ("number" in badge)
+ this._apply("setBadgeText", {text: badge.number.toString()});
+ }
+ else
+ this._apply("setBadgeText", {text: ""});
+ }
+ };
+
+ var TabBrowserAction = function(tabId)
+ {
+ this._tabId = tabId;
+ };
+ TabBrowserAction.prototype = {
+ __proto__: BrowserAction.prototype,
+ _prepareParams: function(params)
+ {
+ params.tabId = this._tabId;
+ }
+ };
+
+
/* Tabs */
var sendMessage = chrome.tabs.sendMessage || chrome.tabs.sendRequest;
- var BrowserAction = function(tabId)
- {
- this._tabId = tabId;
- };
- BrowserAction.prototype = {
- setIcon: function(path)
- {
- chrome.browserAction.setIcon({tabId: this._tabId, path: path});
- },
- setTitle: function(title)
- {
- chrome.browserAction.setTitle({tabId: this._tabId, title: title});
- },
- setBadge: function(badge)
- {
- if (!badge)
- {
- chrome.browserAction.setBadgeText({
- tabId: this._tabId,
- text: ""
- });
- return;
- }
-
- if ("color" in badge)
- {
- chrome.browserAction.setBadgeBackgroundColor({
- tabId: this._tabId,
- color: badge.color
- });
- }
-
- if ("number" in badge)
- {
- chrome.browserAction.setBadgeText({
- tabId: this._tabId,
- text: badge.number.toString()
- });
- }
- }
- };
-
Tab = function(tab)
{
this._id = tab.id;
this._url = tab.url;
- this.browserAction = new BrowserAction(tab.id);
+ this.browserAction = new TabBrowserAction(tab.id);
this.onBeforeNavigate = ext.tabs.onBeforeNavigate._bindToTab(this);
this.onLoading = ext.tabs.onLoading._bindToTab(this);
@@ -534,4 +538,5 @@
};
ext.onMessage = new BackgroundMessageEventTarget();
+ ext.browserAction = new BrowserAction();
Wladimir Palant 2014/01/16 09:10:05 This is unnecessary IMHO, ext.browserAction can be
Sebastian Noack 2014/01/16 12:45:02 I think it is a pretty bad idea to have different
Wladimir Palant 2014/01/16 12:55:18 It obscures the logic even more than it already is
Sebastian Noack 2014/01/16 14:01:52 I don't agree. It isn't that much code, I have add
Wladimir Palant 2014/01/17 07:54:36 Quite frankly, I disagree. IMHO the abstraction la
Sebastian Noack 2014/01/17 12:56:14 My main concern is having different behavior for S
})();

Powered by Google App Engine
This is Rietveld