OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 /** | 5 /** |
6 * This view displays options for importing data from a log file. | 6 * This view displays options for importing data from a log file. |
7 */ | 7 */ |
8 var ImportView = (function() { | 8 var ImportView = (function() { |
9 'use strict'; | 9 'use strict'; |
10 | 10 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 }, | 73 }, |
74 | 74 |
75 /** | 75 /** |
76 * Called when something is dragged over the drop target. | 76 * Called when something is dragged over the drop target. |
77 * | 77 * |
78 * Returns false to cancel default browser behavior when a single file is | 78 * Returns false to cancel default browser behavior when a single file is |
79 * being dragged. When this happens, we may not receive a list of files for | 79 * being dragged. When this happens, we may not receive a list of files for |
80 * security reasons, which is why we allow the |files| array to be empty. | 80 * security reasons, which is why we allow the |files| array to be empty. |
81 */ | 81 */ |
82 onDrag: function(event) { | 82 onDrag: function(event) { |
83 return !event.dataTransfer.types.contains('Files') || | 83 // NOTE: Use Array.prototype.indexOf here is necessary while WebKit |
| 84 // decides which type of data structure dataTransfer.types will be |
| 85 // (currently between DOMStringList and Array). These have different APIs |
| 86 // so assuming one type or the other was breaking things. See |
| 87 // http://crbug.com/115433. TODO(dbeam): Remove when standardized more. |
| 88 var indexOf = Array.prototype.indexOf; |
| 89 return indexOf.call(event.dataTransfer.types, 'Files') == -1 || |
84 event.dataTransfer.files.length > 1; | 90 event.dataTransfer.files.length > 1; |
85 }, | 91 }, |
86 | 92 |
87 /** | 93 /** |
88 * Called when something is dropped onto the drop target. If it's a single | 94 * Called when something is dropped onto the drop target. If it's a single |
89 * file, tries to load it as a log file. | 95 * file, tries to load it as a log file. |
90 */ | 96 */ |
91 onDrop: function(event) { | 97 onDrop: function(event) { |
92 if (!event.dataTransfer.types.contains('Files') || | 98 var indexOf = Array.prototype.indexOf; |
| 99 if (indexOf.call(event.dataTransfer.types, 'Files') == -1 || |
93 event.dataTransfer.files.length != 1) { | 100 event.dataTransfer.files.length != 1) { |
94 return; | 101 return; |
95 } | 102 } |
96 event.preventDefault(); | 103 event.preventDefault(); |
97 | 104 |
98 // Loading a log file may hide the currently active tab. Switch to the | 105 // Loading a log file may hide the currently active tab. Switch to the |
99 // import tab to prevent this. | 106 // import tab to prevent this. |
100 document.location.hash = 'import'; | 107 document.location.hash = 'import'; |
101 | 108 |
102 this.loadLogFile(event.dataTransfer.files[0]); | 109 this.loadLogFile(event.dataTransfer.files[0]); |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 this.loadedInfoOsType_.innerText = ClientInfo.os_type; | 219 this.loadedInfoOsType_.innerText = ClientInfo.os_type; |
213 this.loadedInfoCommandLine_.innerText = ClientInfo.command_line; | 220 this.loadedInfoCommandLine_.innerText = ClientInfo.command_line; |
214 | 221 |
215 // User comments will not be available when dumped from command line. | 222 // User comments will not be available when dumped from command line. |
216 this.loadedInfoUserComments_.innerText = userComments || ''; | 223 this.loadedInfoUserComments_.innerText = userComments || ''; |
217 } | 224 } |
218 }; | 225 }; |
219 | 226 |
220 return ImportView; | 227 return ImportView; |
221 })(); | 228 })(); |
OLD | NEW |