LEFT | RIGHT |
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-2014 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 |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
13 * | 13 * |
(...skipping 28 matching lines...) Expand all Loading... |
42 | 42 |
43 this.browserAction = new BrowserAction(this); | 43 this.browserAction = new BrowserAction(this); |
44 }; | 44 }; |
45 Page.prototype = { | 45 Page.prototype = { |
46 get url() | 46 get url() |
47 { | 47 { |
48 return this._frames[0].url; | 48 return this._frames[0].url; |
49 }, | 49 }, |
50 activate: function() | 50 activate: function() |
51 { | 51 { |
52 pages[this._id]._tab.activate(); | 52 this._tab.activate(); |
53 }, | 53 }, |
54 sendMessage: function(message, responseCallback) | 54 sendMessage: function(message, responseCallback) |
55 { | 55 { |
56 this._messageProxy.sendMessage(message, responseCallback, {pageId: this._i
d}); | 56 this._messageProxy.sendMessage(message, responseCallback, {pageId: this._i
d}); |
57 } | 57 } |
58 }; | 58 }; |
59 | 59 |
60 var isPageActive = function(page) | 60 var isPageActive = function(page) |
61 { | 61 { |
62 return page._tab == page._tab.browserWindow.activeTab && !page._prerendered; | 62 return page._tab == page._tab.browserWindow.activeTab && !page._prerendered; |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 | 105 |
106 for (var id in pages) | 106 for (var id in pages) |
107 { | 107 { |
108 var page = pages[id]; | 108 var page = pages[id]; |
109 var win = page._tab.browserWindow; | 109 var win = page._tab.browserWindow; |
110 | 110 |
111 if ("active" in info && info.active != isPageActive(page)) | 111 if ("active" in info && info.active != isPageActive(page)) |
112 continue; | 112 continue; |
113 if ("lastFocusedWindow" in info && info.lastFocusedWindow != (win == saf
ari.application.activeBrowserWindow)) | 113 if ("lastFocusedWindow" in info && info.lastFocusedWindow != (win == saf
ari.application.activeBrowserWindow)) |
114 continue; | 114 continue; |
115 if ("visibleWindow" in info && info.visibleWindow != win.visible) | |
116 continue; | |
117 | 115 |
118 matchedPages.push(page); | 116 matchedPages.push(page); |
119 }; | 117 }; |
120 | 118 |
121 callback(matchedPages); | 119 callback(matchedPages); |
122 }, | 120 }, |
123 onLoading: new ext._EventTarget() | 121 onLoading: new ext._EventTarget() |
124 }; | 122 }; |
125 | 123 |
126 safari.application.addEventListener("close", function(event) | 124 safari.application.addEventListener("close", function(event) |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 } | 174 } |
177 }; | 175 }; |
178 | 176 |
179 var BrowserAction = function(page) | 177 var BrowserAction = function(page) |
180 { | 178 { |
181 this._page = page; | 179 this._page = page; |
182 }; | 180 }; |
183 BrowserAction.prototype = { | 181 BrowserAction.prototype = { |
184 _set: function(name, value) | 182 _set: function(name, value) |
185 { | 183 { |
186 var currentWindow = this._page._tab.browserWindow; | 184 var toolbarItem = getToolbarItemForWindow(this._page._tab.browserWindow); |
187 var toolbarItem = getToolbarItemForWindow(currentWindow); | |
188 if (!toolbarItem) | 185 if (!toolbarItem) |
189 return; | 186 return; |
190 | 187 |
191 var property = toolbarItemProperties[name]; | 188 var property = toolbarItemProperties[name]; |
192 if (!property) | 189 if (!property) |
193 property = toolbarItemProperties[name] = { | 190 property = toolbarItemProperties[name] = { |
194 pages: new ext.PageMap(), | 191 pages: new ext.PageMap(), |
195 global: toolbarItem[name] | 192 global: toolbarItem[name] |
196 }; | 193 }; |
197 | 194 |
198 property.pages.set(this._page, value); | 195 property.pages.set(this._page, value); |
199 | 196 |
200 if (this._page._tab == currentWindow.activeTab && !this._page._prerendered
) | 197 if (isPageActive(this._page)) |
201 toolbarItem[name] = value; | 198 toolbarItem[name] = value; |
202 }, | 199 }, |
203 setIcon: function(path) | 200 setIcon: function(path) |
204 { | 201 { |
205 this._set("image", safari.extension.baseURI + path); | 202 this._set("image", safari.extension.baseURI + path.replace("$size", "16"))
; |
206 }, | 203 }, |
207 setBadge: function(badge) | 204 setBadge: function(badge) |
208 { | 205 { |
209 if (!badge) | 206 if (!badge) |
210 this._set("badge", 0); | 207 this._set("badge", 0); |
211 else if ("number" in badge) | 208 else if ("number" in badge) |
212 this._set("badge", badge.number); | 209 this._set("badge", badge.number); |
213 } | 210 } |
214 }; | 211 }; |
215 | 212 |
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
654 // when a prerendered page is shown, forget the previous page | 651 // when a prerendered page is shown, forget the previous page |
655 // associated with its tab, and reset the toolbar item if necessary. | 652 // associated with its tab, and reset the toolbar item if necessary. |
656 // Note that it wouldn't be sufficient to do that when the old | 653 // Note that it wouldn't be sufficient to do that when the old |
657 // page is unloading, because Safari dispatches window.onunload | 654 // page is unloading, because Safari dispatches window.onunload |
658 // only when reloading the page or following links, but not when | 655 // only when reloading the page or following links, but not when |
659 // the current page is replaced with a prerendered page. | 656 // the current page is replaced with a prerendered page. |
660 replacePage(page); | 657 replacePage(page); |
661 break; | 658 break; |
662 } | 659 } |
663 }); | 660 }); |
| 661 |
| 662 |
| 663 /* Storage */ |
| 664 |
| 665 ext.storage = safari.extension.settings; |
664 })(); | 666 })(); |
LEFT | RIGHT |