X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fui%2Ffile_manager%2Ffile_manager%2Fbackground%2Fjs%2Fvolume_manager.js;h=1abcec03435b16cbda6efab9ff407e8424a2bc04;hb=4a1a0bdd01eef90b0826a0e761d3379d3715c10f;hp=48011f53190e81ed0e340124fa1cca57a0dde8ce;hpb=b1be5ca53587d23e7aeb77b26861fdc0a181ffd8;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/ui/file_manager/file_manager/background/js/volume_manager.js b/src/ui/file_manager/file_manager/background/js/volume_manager.js index 48011f5..1abcec0 100644 --- a/src/ui/file_manager/file_manager/background/js/volume_manager.js +++ b/src/ui/file_manager/file_manager/background/js/volume_manager.js @@ -150,6 +150,7 @@ VolumeInfo.prototype = { * @param {function(DirectoryEntry)} onSuccess Success callback with the * display root directory as an argument. * @param {function(FileError)} onFailure Failure callback. + * @return {Promise} */ VolumeInfo.prototype.resolveDisplayRoot = function(onSuccess, onFailure) { if (!this.displayRootPromise_) { @@ -172,7 +173,9 @@ VolumeInfo.prototype.resolveDisplayRoot = function(onSuccess, onFailure) { this.displayRoot_ = displayRoot; }.bind(this)); } - this.displayRootPromise_.then(onSuccess, onFailure); + if (onSuccess) + this.displayRootPromise_.then(onSuccess, onFailure); + return this.displayRootPromise_; }; /** @@ -496,25 +499,29 @@ VolumeManager.getInstanceQueue_ = new AsyncUtil.Queue(); VolumeManager.instance_ = null; /** + * @type {Promise} + */ +VolumeManager.instancePromise_ = null; + +/** * Returns the VolumeManager instance asynchronously. If it is not created or * under initialization, it will waits for the finish of the initialization. * @param {function(VolumeManager)} callback Called with the VolumeManager - * instance. + * instance. TODO(hirono): Remove the callback and use Promise instead. + * @return {Promise} Promise to be fulfilled with the volume manager. */ VolumeManager.getInstance = function(callback) { - VolumeManager.getInstanceQueue_.run(function(continueCallback) { - if (VolumeManager.instance_) { - callback(VolumeManager.instance_); - continueCallback(); - return; - } - + if (!VolumeManager.instancePromise_) { VolumeManager.instance_ = new VolumeManager(); - VolumeManager.instance_.initialize_(function() { - callback(VolumeManager.instance_); - continueCallback(); + VolumeManager.instancePromise_ = new Promise(function(fulfill) { + VolumeManager.instance_.initialize_(function() { + return fulfill(VolumeManager.instance_); + }); }); - }); + } + if (callback) + VolumeManager.instancePromise_.then(callback); + return VolumeManager.instancePromise_; }; /** @@ -572,8 +579,11 @@ VolumeManager.prototype.onMountCompleted_ = function(event) { 'mount', event.volumeMetadata.sourcePath); - var error = event.status === 'success' ? '' : event.status; - if (!error || event.status === 'error_unknown_filesystem') { + if (event.status === 'success' || + event.status === + VolumeManagerCommon.VolumeError.UNKNOWN_FILESYSTEM || + event.status === + VolumeManagerCommon.VolumeError.UNSUPPORTED_FILESYSTEM) { volumeManagerUtil.createVolumeInfo( event.volumeMetadata, function(volumeInfo) {