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 * VolumeManager is responsible for tracking list of mounted volumes. | 6 * VolumeManager is responsible for tracking list of mounted volumes. |
7 * | 7 * |
8 * @constructor | 8 * @constructor |
9 * @extends {cr.EventTarget} | 9 * @extends {cr.EventTarget} |
10 */ | 10 */ |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 * @private | 112 * @private |
113 */ | 113 */ |
114 VolumeManager.prototype.initMountPoints_ = function() { | 114 VolumeManager.prototype.initMountPoints_ = function() { |
115 var mountedVolumes = []; | 115 var mountedVolumes = []; |
116 var self = this; | 116 var self = this; |
117 var index = 0; | 117 var index = 0; |
118 this.deferredQueue_ = []; | 118 this.deferredQueue_ = []; |
119 function step(mountPoints) { | 119 function step(mountPoints) { |
120 if (index < mountPoints.length) { | 120 if (index < mountPoints.length) { |
121 var info = mountPoints[index]; | 121 var info = mountPoints[index]; |
122 if (info.mountType == 'gdata') | 122 if (info.mountType == 'drive') |
123 console.error('GData is not expected initially mounted'); | 123 console.error('GData is not expected initially mounted'); |
124 var error = info.mountCondition ? 'error_' + info.mountCondition : ''; | 124 var error = info.mountCondition ? 'error_' + info.mountCondition : ''; |
125 function onVolumeInfo(volume) { | 125 function onVolumeInfo(volume) { |
126 mountedVolumes.push(volume); | 126 mountedVolumes.push(volume); |
127 index++; | 127 index++; |
128 step(mountPoints); | 128 step(mountPoints); |
129 } | 129 } |
130 self.makeVolumeInfo_('/' + info.mountPath, error, onVolumeInfo); | 130 self.makeVolumeInfo_('/' + info.mountPath, error, onVolumeInfo); |
131 } else { | 131 } else { |
132 for (var i = 0; i < mountedVolumes.length; i++) { | 132 for (var i = 0; i < mountedVolumes.length; i++) { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 this.dispatchEvent(e); | 190 this.dispatchEvent(e); |
191 } | 191 } |
192 this.finishRequest_(requestKey, status); | 192 this.finishRequest_(requestKey, status); |
193 | 193 |
194 if (event.status == 'success') { | 194 if (event.status == 'success') { |
195 delete this.mountedVolumes_[mountPath]; | 195 delete this.mountedVolumes_[mountPath]; |
196 cr.dispatchSimpleEvent(this, 'change'); | 196 cr.dispatchSimpleEvent(this, 'change'); |
197 } | 197 } |
198 } | 198 } |
199 | 199 |
200 if (event.mountType == 'gdata') { | 200 if (event.mountType == 'drive') { |
201 if (event.status == 'success') { | 201 if (event.status == 'success') { |
202 if (event.eventType == 'mount') { | 202 if (event.eventType == 'mount') { |
203 // If the mount is not requested, the mount status will not be changed | 203 // If the mount is not requested, the mount status will not be changed |
204 // at mountGData(). Sets it here in such a case. | 204 // at mountGData(). Sets it here in such a case. |
205 var self = this; | 205 var self = this; |
206 var timeout = setTimeout(function() { | 206 var timeout = setTimeout(function() { |
207 if (self.getGDataStatus() == VolumeManager.GDataStatus.UNMOUNTED) | 207 if (self.getGDataStatus() == VolumeManager.GDataStatus.UNMOUNTED) |
208 self.setGDataStatus_(VolumeManager.GDataStatus.MOUNTING); | 208 self.setGDataStatus_(VolumeManager.GDataStatus.MOUNTING); |
209 timeout = null; | 209 timeout = null; |
210 }, VolumeManager.MOUNTING_DELAY); | 210 }, VolumeManager.MOUNTING_DELAY); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 readonly: !!metadata && metadata.isReadOnly | 261 readonly: !!metadata && metadata.isReadOnly |
262 }); | 262 }); |
263 } | 263 } |
264 chrome.fileBrowserPrivate.getVolumeMetadata( | 264 chrome.fileBrowserPrivate.getVolumeMetadata( |
265 util.makeFilesystemUrl(mountPath), onVolumeMetadata); | 265 util.makeFilesystemUrl(mountPath), onVolumeMetadata); |
266 }; | 266 }; |
267 | 267 |
268 /** | 268 /** |
269 * Creates string to match mount events with requests. | 269 * Creates string to match mount events with requests. |
270 * @param {string} requestType 'mount' | 'unmount'. | 270 * @param {string} requestType 'mount' | 'unmount'. |
271 * @param {string} mountType 'device' | 'file' | 'network' | 'gdata'. | 271 * @param {string} mountType 'device' | 'file' | 'network' | 'drive'. |
272 * @param {string} mountOrSourcePath Source path provided by API after | 272 * @param {string} mountOrSourcePath Source path provided by API after |
273 * resolving mount request or mountPath for unmount request. | 273 * resolving mount request or mountPath for unmount request. |
274 * @return {string} Key for |this.requests_|. | 274 * @return {string} Key for |this.requests_|. |
275 * @private | 275 * @private |
276 */ | 276 */ |
277 VolumeManager.prototype.makeRequestKey_ = function(requestType, | 277 VolumeManager.prototype.makeRequestKey_ = function(requestType, |
278 mountType, | 278 mountType, |
279 mountOrSourcePath) { | 279 mountOrSourcePath) { |
280 return requestType + ':' + mountType + ':' + mountOrSourcePath; | 280 return requestType + ':' + mountType + ':' + mountOrSourcePath; |
281 }; | 281 }; |
282 | 282 |
283 | 283 |
284 /** | 284 /** |
285 * @param {Function} successCallback Success callback. | 285 * @param {Function} successCallback Success callback. |
286 * @param {Function} errorCallback Error callback. | 286 * @param {Function} errorCallback Error callback. |
287 */ | 287 */ |
288 VolumeManager.prototype.mountGData = function(successCallback, errorCallback) { | 288 VolumeManager.prototype.mountGData = function(successCallback, errorCallback) { |
289 if (this.getGDataStatus() == VolumeManager.GDataStatus.ERROR) { | 289 if (this.getGDataStatus() == VolumeManager.GDataStatus.ERROR) { |
290 this.setGDataStatus_(VolumeManager.GDataStatus.UNMOUNTED); | 290 this.setGDataStatus_(VolumeManager.GDataStatus.UNMOUNTED); |
291 } | 291 } |
292 var self = this; | 292 var self = this; |
293 this.mount_('', 'gdata', function(mountPath) { | 293 this.mount_('', 'drive', function(mountPath) { |
294 this.waitGDataLoaded_(mountPath, function(success, error) { | 294 this.waitGDataLoaded_(mountPath, function(success, error) { |
295 if (success) { | 295 if (success) { |
296 successCallback(mountPath); | 296 successCallback(mountPath); |
297 } else { | 297 } else { |
298 errorCallback(error); | 298 errorCallback(error); |
299 } | 299 } |
300 }); | 300 }); |
301 }, function(error) { | 301 }, function(error) { |
302 if (self.getGDataStatus() != VolumeManager.GDataStatus.MOUNTED) | 302 if (self.getGDataStatus() != VolumeManager.GDataStatus.MOUNTED) |
303 self.setGDataStatus_(VolumeManager.GDataStatus.ERROR); | 303 self.setGDataStatus_(VolumeManager.GDataStatus.ERROR); |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 * @return {Object} Structure created in |startRequest_|. | 384 * @return {Object} Structure created in |startRequest_|. |
385 * @private | 385 * @private |
386 */ | 386 */ |
387 VolumeManager.prototype.getVolumeInfo_ = function(mountPath) { | 387 VolumeManager.prototype.getVolumeInfo_ = function(mountPath) { |
388 this.validateMountPath_(mountPath); | 388 this.validateMountPath_(mountPath); |
389 return this.mountedVolumes_[mountPath] || {}; | 389 return this.mountedVolumes_[mountPath] || {}; |
390 }; | 390 }; |
391 | 391 |
392 /** | 392 /** |
393 * @param {string} url URL for for |fileBrowserPrivate.addMount|. | 393 * @param {string} url URL for for |fileBrowserPrivate.addMount|. |
394 * @param {'gdata'|'file'} mountType Mount type for | 394 * @param {'drive'|'file'} mountType Mount type for |
395 * |fileBrowserPrivate.addMount|. | 395 * |fileBrowserPrivate.addMount|. |
396 * @param {Function} successCallback Success callback. | 396 * @param {Function} successCallback Success callback. |
397 * @param {Function} errorCallback Error callback. | 397 * @param {Function} errorCallback Error callback. |
398 * @private | 398 * @private |
399 */ | 399 */ |
400 VolumeManager.prototype.mount_ = function(url, mountType, | 400 VolumeManager.prototype.mount_ = function(url, mountType, |
401 successCallback, errorCallback) { | 401 successCallback, errorCallback) { |
402 if (this.deferredQueue_) { | 402 if (this.deferredQueue_) { |
403 this.deferredQueue_.push(this.mount_.bind(this, | 403 this.deferredQueue_.push(this.mount_.bind(this, |
404 url, mountType, successCallback, errorCallback)); | 404 url, mountType, successCallback, errorCallback)); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
500 }; | 500 }; |
501 | 501 |
502 /** | 502 /** |
503 * @param {string} mountPath Mount path. | 503 * @param {string} mountPath Mount path. |
504 * @private | 504 * @private |
505 */ | 505 */ |
506 VolumeManager.prototype.validateMountPath_ = function(mountPath) { | 506 VolumeManager.prototype.validateMountPath_ = function(mountPath) { |
507 if (!/^\/(((archive|removable)\/[^\/]+)|drive|Downloads)$/.test(mountPath)) | 507 if (!/^\/(((archive|removable)\/[^\/]+)|drive|Downloads)$/.test(mountPath)) |
508 throw new Error('Invalid mount path: ', mountPath); | 508 throw new Error('Invalid mount path: ', mountPath); |
509 }; | 509 }; |
OLD | NEW |