OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 cr.define('downloads', function() { | 5 cr.define('downloads', function() { |
6 var ItemView = Polymer({ | 6 var ItemView = Polymer({ |
7 is: 'item-view', | 7 is: 'downloads-item-view', |
8 | 8 |
9 /** @param {!downloads.ThrottledIconLoader} iconLoader */ | 9 /** |
10 factoryImpl: function(iconLoader) { | 10 * @param {!downloads.ThrottledIconLoader} iconLoader |
| 11 * @param {!downloads.ActionService} actionService |
| 12 */ |
| 13 factoryImpl: function(iconLoader, actionService) { |
11 /** @private {!downloads.ThrottledIconLoader} */ | 14 /** @private {!downloads.ThrottledIconLoader} */ |
12 this.iconLoader_ = iconLoader; | 15 this.iconLoader_ = iconLoader; |
| 16 |
| 17 /** @private {!downloads.ActionService} */ |
| 18 this.actionService_ = actionService; |
13 }, | 19 }, |
14 | 20 |
15 properties: { | 21 properties: { |
16 hideDate: {type: Boolean, value: false}, | 22 hideDate: {type: Boolean, value: false}, |
17 isDangerous: {type: Boolean, value: false}, | |
18 // Only use |isMalware| if |isDangerous| is true. | |
19 isMalware: Boolean, | |
20 }, | |
21 | 23 |
22 ready: function() { | 24 isDangerous_: {type: Boolean, value: false}, |
23 this.$.safe.ondragstart = this.onSafeDragstart_.bind(this); | 25 |
24 this.$['file-link'].onclick = this.onFileLinkClick_.bind(this); | 26 /** Only set when |isDangerous| is true. */ |
25 this.$.show.onclick = this.onShowClick_.bind(this); | 27 isMalware_: Boolean, |
26 this.$.pause.onclick = this.onPauseClick_.bind(this); | |
27 this.$.resume.onclick = this.onResumeClick_.bind(this); | |
28 this.$['safe-remove'].onclick = this.onSafeRemoveClick_.bind(this); | |
29 this.$.cancel.onclick = this.onCancelClick_.bind(this); | |
30 this.$.restore.onclick = this.onRestoreClick_.bind(this); | |
31 this.$.save.onclick = this.onSaveClick_.bind(this); | |
32 this.$['dangerous-remove'].onclick = this.onDangerRemoveClick_.bind(this); | |
33 this.$.discard.onclick = this.onDiscardClick_.bind(this); | |
34 }, | 28 }, |
35 | 29 |
36 /** @param {!downloads.Data} data */ | 30 /** @param {!downloads.Data} data */ |
37 update: function(data) { | 31 update: function(data) { |
38 assert(!this.id_ || data.id == this.id_); | 32 assert(!this.id_ || data.id == this.id_); |
39 this.id_ = data.id; // This is the only thing saved from |data|. | 33 this.id_ = data.id; // This is the only thing saved from |data|. |
40 | 34 |
41 this.classList.toggle('otr', data.otr); | 35 this.classList.toggle('otr', data.otr); |
42 | 36 |
43 this.ensureTextIs_(this.$.since, data.since_string); | 37 this.ensureTextIs_(this.$.since, data.since_string); |
44 this.ensureTextIs_(this.$.date, data.date_string); | 38 this.ensureTextIs_(this.$.date, data.date_string); |
45 | 39 |
46 var dangerText = this.getDangerText_(data); | 40 var dangerText = this.getDangerText_(data); |
47 this.isDangerous = !!dangerText; | 41 this.isDangerous = !!dangerText; |
48 | 42 |
49 if (dangerText) { | 43 if (dangerText) { |
50 this.ensureTextIs_(this.$.description, dangerText); | 44 this.ensureTextIs_(this.$.description, dangerText); |
51 | 45 |
52 var dangerType = data.danger_type; | 46 var dangerType = data.danger_type; |
53 var dangerousFile = dangerType == downloads.DangerType.DANGEROUS_FILE; | 47 var dangerousFile = dangerType == downloads.DangerType.DANGEROUS_FILE; |
54 this.$.description.classList.toggle('malware', !dangerousFile); | 48 this.$.description.classList.toggle('malware', !dangerousFile); |
55 | 49 |
56 var idr = dangerousFile ? 'IDR_WARNING' : 'IDR_SAFEBROWSING_WARNING'; | 50 var idr = dangerousFile ? 'IDR_WARNING' : 'IDR_SAFEBROWSING_WARNING'; |
57 var iconUrl = 'chrome://theme/' + idr; | 51 var iconUrl = 'chrome://theme/' + idr; |
58 this.iconLoader_.loadScaledIcon(this.$['dangerous-icon'], iconUrl); | 52 this.iconLoader_.loadScaledIcon(this.$['dangerous-icon'], iconUrl); |
59 | 53 |
60 this.isMalware = | 54 this.isMalware_ = |
61 dangerType == downloads.DangerType.DANGEROUS_CONTENT || | 55 dangerType == downloads.DangerType.DANGEROUS_CONTENT || |
62 dangerType == downloads.DangerType.DANGEROUS_HOST || | 56 dangerType == downloads.DangerType.DANGEROUS_HOST || |
63 dangerType == downloads.DangerType.DANGEROUS_URL || | 57 dangerType == downloads.DangerType.DANGEROUS_URL || |
64 dangerType == downloads.DangerType.POTENTIALLY_UNWANTED; | 58 dangerType == downloads.DangerType.POTENTIALLY_UNWANTED; |
65 } else { | 59 } else { |
66 var iconUrl = 'chrome://fileicon/' + encodeURIComponent(data.file_path); | 60 var iconUrl = 'chrome://fileicon/' + encodeURIComponent(data.file_path); |
67 this.iconLoader_.loadScaledIcon(this.$['safe-icon'], iconUrl); | 61 this.iconLoader_.loadScaledIcon(this.$['safe-icon'], iconUrl); |
68 | 62 |
69 /** @const */ var isInProgress = | 63 /** @const */ var isInProgress = |
70 data.state == downloads.States.IN_PROGRESS; | 64 data.state == downloads.States.IN_PROGRESS; |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 assert(typeof data.last_reason_text == 'string'); | 168 assert(typeof data.last_reason_text == 'string'); |
175 return data.last_reason_text; | 169 return data.last_reason_text; |
176 case downloads.States.COMPLETE: | 170 case downloads.States.COMPLETE: |
177 return data.file_externally_removed ? | 171 return data.file_externally_removed ? |
178 loadTimeData.getString('statusRemoved') : ''; | 172 loadTimeData.getString('statusRemoved') : ''; |
179 } | 173 } |
180 assertNotReached(); | 174 assertNotReached(); |
181 return ''; | 175 return ''; |
182 }, | 176 }, |
183 | 177 |
| 178 /** @private */ |
| 179 onCancelClick_: function() { |
| 180 this.actionService_.cancel(this.id_); |
| 181 }, |
| 182 |
| 183 /** @private */ |
| 184 onDangerousRemoveOrDiscardClick_: function() { |
| 185 this.actionService_.discardDangerous(this.id_); |
| 186 }, |
| 187 |
184 /** | 188 /** |
185 * @private | 189 * @private |
186 * @param {Event} e | 190 * @param {Event} e |
187 */ | 191 */ |
188 onSafeDragstart_: function(e) { | 192 onDragStart_: function(e) { |
189 e.preventDefault(); | 193 e.preventDefault(); |
190 chrome.send('drag', [this.id_]); | 194 this.actionService_.drag(this.id_); |
191 }, | 195 }, |
192 | 196 |
193 /** | 197 /** |
194 * @param {Event} e | 198 * @param {Event} e |
195 * @private | 199 * @private |
196 */ | 200 */ |
197 onFileLinkClick_: function(e) { | 201 onFileLinkClick_: function(e) { |
198 e.preventDefault(); | 202 e.preventDefault(); |
199 chrome.send('openFile', [this.id_]); | 203 this.actionService_.openFile(this.id_); |
| 204 }, |
| 205 |
| 206 /** @private */ |
| 207 onPauseClick_: function() { |
| 208 this.actionService_.pause(this.id_); |
| 209 }, |
| 210 |
| 211 /** @private */ |
| 212 onRemoveClick_: function() { |
| 213 this.actionService_.remove(this.id_); |
| 214 }, |
| 215 |
| 216 /** @private */ |
| 217 onRestoreOrSaveClick_: function() { |
| 218 this.actionService_.saveDangerous(this.id_); |
| 219 }, |
| 220 |
| 221 /** @private */ |
| 222 onResumeClick_: function() { |
| 223 this.actionService_.resume(this.id_); |
200 }, | 224 }, |
201 | 225 |
202 /** @private */ | 226 /** @private */ |
203 onShowClick_: function() { | 227 onShowClick_: function() { |
204 chrome.send('show', [this.id_]); | 228 this.actionService_.show(this.id_); |
205 }, | |
206 | |
207 /** @private */ | |
208 onPauseClick_: function() { | |
209 chrome.send('pause', [this.id_]); | |
210 }, | |
211 | |
212 /** @private */ | |
213 onResumeClick_: function() { | |
214 chrome.send('resume', [this.id_]); | |
215 }, | |
216 | |
217 /** @private */ | |
218 onSafeRemoveClick_: function() { | |
219 chrome.send('remove', [this.id_]); | |
220 }, | |
221 | |
222 /** @private */ | |
223 onCancelClick_: function() { | |
224 chrome.send('cancel', [this.id_]); | |
225 }, | |
226 | |
227 /** @private */ | |
228 onRestoreClick_: function() { | |
229 this.onSaveClick_(); | |
230 }, | |
231 | |
232 /** @private */ | |
233 onSaveClick_: function() { | |
234 chrome.send('saveDangerous', [this.id_]); | |
235 }, | |
236 | |
237 /** @private */ | |
238 onDangerRemoveClick_: function() { | |
239 this.onDiscardClick_(); | |
240 }, | |
241 | |
242 /** @private */ | |
243 onDiscardClick_: function() { | |
244 chrome.send('discardDangerous', [this.id_]); | |
245 }, | 229 }, |
246 }); | 230 }); |
247 | 231 |
248 return {ItemView: ItemView}; | 232 return {ItemView: ItemView}; |
249 }); | 233 }); |
OLD | NEW |