| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2015 Eyeo GmbH | 3 * Copyright (C) 2006-2015 Eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 }); | 147 }); |
| 148 | 148 |
| 149 chrome.tabs.onRemoved.addListener(forgetTab); | 149 chrome.tabs.onRemoved.addListener(forgetTab); |
| 150 | 150 |
| 151 | 151 |
| 152 /* Browser actions */ | 152 /* Browser actions */ |
| 153 | 153 |
| 154 var BrowserAction = function(tabId) | 154 var BrowserAction = function(tabId) |
| 155 { | 155 { |
| 156 this._tabId = tabId; | 156 this._tabId = tabId; |
| 157 this._changes = null; | 157 this._changes = {}; |
| 158 }; | 158 }; |
| 159 BrowserAction.prototype = { | 159 BrowserAction.prototype = { |
| 160 _applyChanges: function() | 160 _applyChanges: function() |
| 161 { | 161 { |
| 162 if ("iconPath" in this._changes) | 162 if ("iconPath" in this._changes) |
| 163 { | 163 { |
| 164 chrome.browserAction.setIcon({ | 164 chrome.browserAction.setIcon({ |
| 165 tabId: this._tabId, | 165 tabId: this._tabId, |
| 166 path: { | 166 path: { |
| 167 19: this._changes.iconPath.replace("$size", "19"), | 167 19: this._changes.iconPath.replace("$size", "19"), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 179 } | 179 } |
| 180 | 180 |
| 181 if ("badgeColor" in this._changes) | 181 if ("badgeColor" in this._changes) |
| 182 { | 182 { |
| 183 chrome.browserAction.setBadgeBackgroundColor({ | 183 chrome.browserAction.setBadgeBackgroundColor({ |
| 184 tabId: this._tabId, | 184 tabId: this._tabId, |
| 185 color: this._changes.badgeColor | 185 color: this._changes.badgeColor |
| 186 }); | 186 }); |
| 187 } | 187 } |
| 188 | 188 |
| 189 this._changes = null; | 189 this._changes = {}; |
| 190 }, | 190 }, |
| 191 _queueChanges: function() | 191 _queueChanges: function() |
| 192 { | 192 { |
| 193 chrome.tabs.get(this._tabId, function() | 193 chrome.tabs.get(this._tabId, function() |
| 194 { | 194 { |
| 195 // If the tab is prerendered, chrome.tabs.get() sets | 195 // If the tab is prerendered, chrome.tabs.get() sets |
| 196 // chrome.runtime.lastError and we have to delay our changes | 196 // chrome.runtime.lastError and we have to delay our changes |
| 197 // until the currently visible tab is replaced with the | 197 // until the currently visible tab is replaced with the |
| 198 // prerendered tab. Otherwise chrome.browserAction.set* fails. | 198 // prerendered tab. Otherwise chrome.browserAction.set* fails. |
| 199 if (chrome.runtime.lastError) | 199 if (chrome.runtime.lastError) |
| 200 { | 200 { |
| 201 var onReplaced = function(addedTabId, removedTabId) | 201 var onReplaced = function(addedTabId, removedTabId) |
| 202 { | 202 { |
| 203 if (addedTabId == this._tabId) | 203 if (addedTabId == this._tabId) |
| 204 { | 204 { |
| 205 chrome.tabs.onReplaced.removeListener(onReplaced); | 205 chrome.tabs.onReplaced.removeListener(onReplaced); |
| 206 this._applyChanges(); | 206 this._applyChanges(); |
| 207 } | 207 } |
| 208 }.bind(this); | 208 }.bind(this); |
| 209 chrome.tabs.onReplaced.addListener(onReplaced); | 209 chrome.tabs.onReplaced.addListener(onReplaced); |
| 210 } | 210 } |
| 211 else | 211 else |
| 212 { | 212 { |
| 213 this._applyChanges(); | 213 this._applyChanges(); |
| 214 } | 214 } |
| 215 }.bind(this)); | 215 }.bind(this)); |
| 216 }, | 216 }, |
| 217 _addChange: function(name, value) | 217 _addChange: function(name, value) |
| 218 { | 218 { |
| 219 if (!this._changes) | |
| 220 { | |
| 221 this._changes = {}; | |
| 222 this._queueChanges(); | |
| 223 } | |
| 224 | |
| 225 this._changes[name] = value; | 219 this._changes[name] = value; |
| 220 this._queueChanges(); |
| 226 }, | 221 }, |
| 227 setIcon: function(path) | 222 setIcon: function(path) |
| 228 { | 223 { |
| 229 this._addChange("iconPath", path); | 224 this._addChange("iconPath", path); |
| 230 }, | 225 }, |
| 231 setBadge: function(badge) | 226 setBadge: function(badge) |
| 232 { | 227 { |
| 233 if (!badge) | 228 if (!badge) |
| 234 { | 229 { |
| 235 this._addChange("badgeText", ""); | 230 this._addChange("badgeText", ""); |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 644 callback(new Page(tab)); | 639 callback(new Page(tab)); |
| 645 } | 640 } |
| 646 else | 641 else |
| 647 { | 642 { |
| 648 ext.pages.open(optionsUrl, callback); | 643 ext.pages.open(optionsUrl, callback); |
| 649 } | 644 } |
| 650 }); | 645 }); |
| 651 }); | 646 }); |
| 652 }; | 647 }; |
| 653 })(); | 648 })(); |
| OLD | NEW |