OLD | NEW |
1 /* | 1 /* |
2 * This file is part of Adblock Plus <http://adblockplus.org/>, | 2 * This file is part of Adblock Plus <http://adblockplus.org/>, |
3 * Copyright (C) 2006-2013 Eyeo GmbH | 3 * Copyright (C) 2006-2013 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 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 if (option in localStorage) | 93 if (option in localStorage) |
94 delete localStorage[option]; | 94 delete localStorage[option]; |
95 }); | 95 }); |
96 } | 96 } |
97 | 97 |
98 // Remove deprecated options before we do anything else. | 98 // Remove deprecated options before we do anything else. |
99 removeDeprecatedOptions(); | 99 removeDeprecatedOptions(); |
100 | 100 |
101 var activeNotification = null; | 101 var activeNotification = null; |
102 | 102 |
103 // Adds or removes browser action icon according to options. | 103 function getTabStatus(tab) |
| 104 { |
| 105 var icon; |
| 106 var excluded = !/^https?:/.test(tab.url) || isWhitelisted(tab.url); |
| 107 |
| 108 if (require("info").platform == "safari") |
| 109 // pick an icon with approtiate size for Safari. However since |
| 110 // toolbar item icons can't use different colors, we don't have |
| 111 // different versions indicating whether adblocking is active. |
| 112 icon = "icons/abp-16" |
| 113 else |
| 114 { |
| 115 // pick an icon with the approtiate size for Chrome/Opera |
| 116 // that indicates whether adblocking is active in the tab |
| 117 if (excluded && iconAnimation.step < 10) |
| 118 icon = "icons/abp-19-whitelisted"; |
| 119 else |
| 120 icon = "icons/abp-19"; |
| 121 } |
| 122 |
| 123 // pick the current frame if the icon is currently animating |
| 124 // in order to indicate a pending notification |
| 125 if (iconAnimation.step > 0) |
| 126 { |
| 127 icon += "-notification-" |
| 128 icon += iconAnimation.severity; |
| 129 |
| 130 if (iconAnimation.step < 10) |
| 131 { |
| 132 icon += "-" |
| 133 icon += iconAnimation.step; |
| 134 } |
| 135 } |
| 136 |
| 137 icon += ".png"; |
| 138 |
| 139 return {icon: icon, excluded: excluded}; |
| 140 } |
| 141 |
104 function refreshIconAndContextMenu(tab) | 142 function refreshIconAndContextMenu(tab) |
105 { | 143 { |
106 var excluded = !/^https?:/.test(tab.url) || isWhitelisted(tab.url); | 144 var status = getTabStatus(tab); |
107 | 145 |
108 var iconFilename; | 146 // update icon indicating whether adblocking is active in the tab. |
109 if (require("info").platform == "safari") | 147 // But don't interfere the icon animation if active. In that case |
110 // There is no grayscale version of the icon for whitelisted tabs | 148 // the icon animation takes care to update the icon to its new status |
111 // when using Safari, because icons are grayscale already and icons | 149 // with its next frame. |
112 // aren't per tab in Safari. | 150 if (!iconAnimation.tabs.has(tab)) |
113 iconFilename = "icons/abp-16.png" | 151 tab.browserAction.setIcon(status.icon); |
114 else | |
115 iconFilename = excluded ? "icons/abp-19-whitelisted.png" : "icons/abp-19.png
"; | |
116 | 152 |
117 tab.browserAction.setIcon(iconFilename); | 153 // show or hide the context menu entry dependent on whether adblocking |
118 iconAnimation.registerTab(tab, iconFilename); | 154 // is active in the tab |
119 | 155 if (status.excluded) |
120 // Set context menu status according to whether current tab has whitelisted do
main | |
121 if (excluded) | |
122 ext.contextMenus.hideMenuItems(); | 156 ext.contextMenus.hideMenuItems(); |
123 else | 157 else |
124 ext.contextMenus.showMenuItems(); | 158 ext.contextMenus.showMenuItems(); |
125 } | 159 } |
126 | 160 |
127 /** | 161 /** |
128 * Old versions for Opera stored patterns.ini in the localStorage object, this | 162 * Old versions for Opera stored patterns.ini in the localStorage object, this |
129 * will import it into FilterStorage properly. | 163 * will import it into FilterStorage properly. |
130 * @return {Boolean} true if data import is in progress | 164 * @return {Boolean} true if data import is in progress |
131 */ | 165 */ |
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 tab.sendMessage({type: "clickhide-deactivate"}); | 453 tab.sendMessage({type: "clickhide-deactivate"}); |
420 refreshIconAndContextMenu(tab); | 454 refreshIconAndContextMenu(tab); |
421 }); | 455 }); |
422 | 456 |
423 setTimeout(function() | 457 setTimeout(function() |
424 { | 458 { |
425 var notificationToShow = Notification.getNextToShow(); | 459 var notificationToShow = Notification.getNextToShow(); |
426 if (notificationToShow) | 460 if (notificationToShow) |
427 showNotification(notificationToShow); | 461 showNotification(notificationToShow); |
428 }, 3 * 60 * 1000); | 462 }, 3 * 60 * 1000); |
OLD | NEW |