Left: | ||
Right: |
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-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 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
103 }, | 103 }, |
104 sendMessage: function(message, responseCallback) | 104 sendMessage: function(message, responseCallback) |
105 { | 105 { |
106 _sendMessage( | 106 _sendMessage( |
107 message, responseCallback, | 107 message, responseCallback, |
108 this._tab.page, this._tab | 108 this._tab.page, this._tab |
109 ); | 109 ); |
110 } | 110 } |
111 }; | 111 }; |
112 | 112 |
113 TabMap = function(deleteTabOnLoading) | 113 TabMap = function(deleteOnPageUnload) |
Wladimir Palant
2014/01/23 13:34:13
Having to change a parameter name just because the
Sebastian Noack
2014/01/23 13:51:13
Done.
| |
114 { | 114 { |
115 this._tabs = []; | |
Wladimir Palant
2014/01/23 13:34:13
This property is no longer in use.
Sebastian Noack
2014/01/23 13:51:13
Done.
| |
116 this._data = []; | 115 this._data = []; |
116 this._deleteOnPageUnload = deleteOnPageUnload; | |
117 | 117 |
118 this.delete = this.delete.bind(this); | 118 this.delete = this.delete.bind(this); |
119 this._delete = this._delete.bind(this); | 119 this._delete = this._delete.bind(this); |
120 | |
121 this._deleteTabOnLoading = deleteTabOnLoading; | |
122 }; | 120 }; |
123 TabMap.prototype = | 121 TabMap.prototype = |
124 { | 122 { |
125 _indexOf: function(tab) | 123 _indexOf: function(tab) |
126 { | 124 { |
127 for (var i = 0; i < this._data.length; i++) | 125 for (var i = 0; i < this._data.length; i++) |
128 if (this._data[i].tab._tab == tab._tab) | 126 if (this._data[i].tab._tab == tab._tab) |
129 return i; | 127 return i; |
130 | 128 |
131 return -1; | 129 return -1; |
(...skipping 15 matching lines...) Expand all Loading... | |
147 { | 145 { |
148 var idx = this._indexOf(tab); | 146 var idx = this._indexOf(tab); |
149 | 147 |
150 if (idx != -1) | 148 if (idx != -1) |
151 this._data[idx].value = value; | 149 this._data[idx].value = value; |
152 else | 150 else |
153 { | 151 { |
154 this._data.push({value: value, tab: tab}); | 152 this._data.push({value: value, tab: tab}); |
155 | 153 |
156 tab.onRemoved.addListener(this._delete); | 154 tab.onRemoved.addListener(this._delete); |
157 if (this._deleteTabOnLoading) | 155 if (this._deleteOnPageUnload) |
158 tab.onLoading.addListener(this.delete); | 156 tab.onLoading.addListener(this.delete); |
Wladimir Palant
2014/01/23 13:34:13
What if about:blank is loaded into the tab or some
Sebastian Noack
2014/01/23 13:51:13
I've just checked that. And surprisingly our conte
| |
159 } | 157 } |
160 }, | 158 }, |
161 has: function(tab) | 159 has: function(tab) |
162 { | 160 { |
163 return this._indexOf(tab) != -1; | 161 return this._indexOf(tab) != -1; |
164 }, | 162 }, |
165 clear: function() | 163 clear: function() |
166 { | 164 { |
167 while (this._data.length > 0) | 165 while (this._data.length > 0) |
168 this.delete(this._data[0].tab); | 166 this.delete(this._data[0].tab); |
169 } | 167 }, |
170 }; | 168 delete: function(tab) |
171 TabMap.prototype["delete"] = function(tab) | 169 { |
Wladimir Palant
2014/01/23 13:34:13
I am still wondering why this method isn't defined
Sebastian Noack
2014/01/23 13:51:13
It leads to a syntax error, at least in Safari and
Wladimir Palant
2014/01/23 14:44:37
No, for me it doesn't (tested in Safari 7.0 and Ch
Sebastian Noack
2014/01/23 15:27:44
You are right. I tried it in the console, and in t
| |
172 { | 170 var idx = this._indexOf(tab); |
173 var idx = this._indexOf(tab); | 171 |
174 | 172 if (idx != -1) |
175 if (idx != -1) | 173 { |
176 { | 174 tab = this._data[idx].tab; |
177 tab = this._data[idx].tab; | 175 this._data.splice(idx, 1); |
178 this._data.splice(idx, 1); | 176 |
179 | 177 tab.onRemoved.removeListener(this._delete); |
180 tab.onRemoved.removeListener(this._delete); | 178 tab.onLoading.removeListener(this.delete); |
181 tab.onLoading.removeListener(this.delete); | 179 } |
182 } | 180 } |
183 }; | 181 }; |
184 | 182 |
185 ext.tabs = { | 183 ext.tabs = { |
186 onLoading: new LoadingTabEventTarget(safari.application), | 184 onLoading: new LoadingTabEventTarget(safari.application), |
187 onCompleted: new TabEventTarget(safari.application, "navigate", true), | 185 onCompleted: new TabEventTarget(safari.application, "navigate", true), |
188 onActivated: new TabEventTarget(safari.application, "activate", true), | 186 onActivated: new TabEventTarget(safari.application, "activate", true), |
189 onRemoved: new TabEventTarget(safari.application, "close", true) | 187 onRemoved: new TabEventTarget(safari.application, "close", true) |
190 }; | 188 }; |
191 | 189 |
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
708 for (var i = 0; i < contextMenuItems.length; i++) | 706 for (var i = 0; i < contextMenuItems.length; i++) |
709 { | 707 { |
710 if (contextMenuItems[i].id == event.command) | 708 if (contextMenuItems[i].id == event.command) |
711 { | 709 { |
712 contextMenuItems[i].onclick(event.userInfo.srcUrl, new Tab(safari.applic ation.activeBrowserWindow.activeTab)); | 710 contextMenuItems[i].onclick(event.userInfo.srcUrl, new Tab(safari.applic ation.activeBrowserWindow.activeTab)); |
713 break; | 711 break; |
714 } | 712 } |
715 } | 713 } |
716 }, false); | 714 }, false); |
717 })(); | 715 })(); |
LEFT | RIGHT |