OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // Setting the src of an img to an empty string can crash the browser, so we | 5 // Setting the src of an img to an empty string can crash the browser, so we |
6 // use an empty 1x1 gif instead. | 6 // use an empty 1x1 gif instead. |
7 const EMPTY_IMAGE_URI = 'data:image/gif;base64,' | 7 const EMPTY_IMAGE_URI = 'data:image/gif;base64,' |
8 + 'R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw%3D%3D'; | 8 + 'R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw%3D%3D'; |
9 | 9 |
10 var g_slideshow_data = null; | 10 var g_slideshow_data = null; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 this.currentButter_ = null; | 49 this.currentButter_ = null; |
50 | 50 |
51 // True if we should filter out files that start with a dot. | 51 // True if we should filter out files that start with a dot. |
52 this.filterFiles_ = true; | 52 this.filterFiles_ = true; |
53 | 53 |
54 this.commands_ = {}; | 54 this.commands_ = {}; |
55 | 55 |
56 this.document_ = dialogDom.ownerDocument; | 56 this.document_ = dialogDom.ownerDocument; |
57 this.dialogType_ = this.params_.type || FileManager.DialogType.FULL_PAGE; | 57 this.dialogType_ = this.params_.type || FileManager.DialogType.FULL_PAGE; |
58 | 58 |
| 59 metrics.recordAction('Create.' + this.dialogType_); |
| 60 |
59 this.initDialogs_(); | 61 this.initDialogs_(); |
60 | 62 |
61 // TODO(dgozman): This will be changed to LocaleInfo. | 63 // TODO(dgozman): This will be changed to LocaleInfo. |
62 this.locale_ = new v8Locale(navigator.language); | 64 this.locale_ = new v8Locale(navigator.language); |
63 | 65 |
64 // TODO(rginda): 6/22/11: Remove this test when createDateTimeFormat is | 66 // TODO(rginda): 6/22/11: Remove this test when createDateTimeFormat is |
65 // available in all chrome trunk builds. | 67 // available in all chrome trunk builds. |
66 if ('createDateTimeFormat' in this.locale_) { | 68 if ('createDateTimeFormat' in this.locale_) { |
67 this.shortDateFormatter_ = | 69 this.shortDateFormatter_ = |
68 this.locale_.createDateTimeFormat({'dateType': 'medium'}); | 70 this.locale_.createDateTimeFormat({'dateType': 'medium'}); |
(...skipping 2859 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2928 * Rescans the current directory immediately, refreshing the list. Should NOT | 2930 * Rescans the current directory immediately, refreshing the list. Should NOT |
2929 * be used in most cases. Instead use rescanDirectory_. | 2931 * be used in most cases. Instead use rescanDirectory_. |
2930 * | 2932 * |
2931 * @param {function()} opt_callback Optional function to invoke when the | 2933 * @param {function()} opt_callback Optional function to invoke when the |
2932 * rescan is complete. | 2934 * rescan is complete. |
2933 */ | 2935 */ |
2934 FileManager.prototype.rescanDirectoryNow_ = function(opt_callback) { | 2936 FileManager.prototype.rescanDirectoryNow_ = function(opt_callback) { |
2935 var self = this; | 2937 var self = this; |
2936 var reader; | 2938 var reader; |
2937 | 2939 |
| 2940 metrics.startInterval('ScanDirectory'); |
| 2941 |
2938 function onReadSome(entries) { | 2942 function onReadSome(entries) { |
2939 if (entries.length == 0) { | 2943 if (entries.length == 0) { |
| 2944 metrics.recordTime('ScanDirectory'); |
2940 if (opt_callback) | 2945 if (opt_callback) |
2941 opt_callback(); | 2946 opt_callback(); |
2942 return; | 2947 return; |
2943 } | 2948 } |
2944 | 2949 |
2945 // Splice takes the to-be-spliced-in array as individual parameters, | 2950 // Splice takes the to-be-spliced-in array as individual parameters, |
2946 // rather than as an array, so we need to perform some acrobatics... | 2951 // rather than as an array, so we need to perform some acrobatics... |
2947 var spliceArgs = [].slice.call(entries); | 2952 var spliceArgs = [].slice.call(entries); |
2948 | 2953 |
2949 // Hide files that start with a dot ('.'). | 2954 // Hide files that start with a dot ('.'). |
(...skipping 30 matching lines...) Expand all Loading... |
2980 return; | 2985 return; |
2981 } | 2986 } |
2982 | 2987 |
2983 // Otherwise, use the provided list of root subdirectories, since the | 2988 // Otherwise, use the provided list of root subdirectories, since the |
2984 // real local filesystem root directory (the one we use outside the | 2989 // real local filesystem root directory (the one we use outside the |
2985 // harness) can't be enumerated yet. | 2990 // harness) can't be enumerated yet. |
2986 var spliceArgs = [].slice.call(this.rootEntries_); | 2991 var spliceArgs = [].slice.call(this.rootEntries_); |
2987 spliceArgs.unshift(0, 0); // index, deleteCount | 2992 spliceArgs.unshift(0, 0); // index, deleteCount |
2988 self.dataModel_.splice.apply(self.dataModel_, spliceArgs); | 2993 self.dataModel_.splice.apply(self.dataModel_, spliceArgs); |
2989 | 2994 |
| 2995 metrics.recordTime('ScanDirectory'); |
2990 if (opt_callback) | 2996 if (opt_callback) |
2991 opt_callback(); | 2997 opt_callback(); |
2992 }; | 2998 }; |
2993 | 2999 |
2994 FileManager.prototype.findListItem_ = function(event) { | 3000 FileManager.prototype.findListItem_ = function(event) { |
2995 var node = event.srcElement; | 3001 var node = event.srcElement; |
2996 while (node) { | 3002 while (node) { |
2997 if (node.tagName == 'LI') | 3003 if (node.tagName == 'LI') |
2998 break; | 3004 break; |
2999 node = node.parentNode; | 3005 node = node.parentNode; |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3227 } | 3233 } |
3228 | 3234 |
3229 function promptForName(suggestedName) { | 3235 function promptForName(suggestedName) { |
3230 self.prompt.show(str('NEW_FOLDER_PROMPT'), suggestedName, onNameSelected); | 3236 self.prompt.show(str('NEW_FOLDER_PROMPT'), suggestedName, onNameSelected); |
3231 } | 3237 } |
3232 | 3238 |
3233 promptForName(str('DEFAULT_NEW_FOLDER_NAME')); | 3239 promptForName(str('DEFAULT_NEW_FOLDER_NAME')); |
3234 }; | 3240 }; |
3235 | 3241 |
3236 FileManager.prototype.createNewFolder = function(name, opt_callback) { | 3242 FileManager.prototype.createNewFolder = function(name, opt_callback) { |
| 3243 metrics.recordAction('CreateNewFolder'); |
| 3244 |
3237 var self = this; | 3245 var self = this; |
3238 | 3246 |
3239 function onSuccess(dirEntry) { | 3247 function onSuccess(dirEntry) { |
3240 self.rescanDirectory_(function() { | 3248 self.rescanDirectory_(function() { |
3241 self.selectEntry(name); | 3249 self.selectEntry(name); |
3242 if (opt_callback) | 3250 if (opt_callback) |
3243 opt_callback(); | 3251 opt_callback(); |
3244 }); | 3252 }); |
3245 } | 3253 } |
3246 | 3254 |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3582 | 3590 |
3583 if (msg) { | 3591 if (msg) { |
3584 console.log('no no no'); | 3592 console.log('no no no'); |
3585 this.alert.show(msg, onAccept); | 3593 this.alert.show(msg, onAccept); |
3586 return false; | 3594 return false; |
3587 } | 3595 } |
3588 | 3596 |
3589 return true; | 3597 return true; |
3590 }; | 3598 }; |
3591 })(); | 3599 })(); |
OLD | NEW |