Index: chrome/renderer/resources/extensions/media_galleries_custom_bindings.js |
=================================================================== |
--- chrome/renderer/resources/extensions/media_galleries_custom_bindings.js (revision 243958) |
+++ chrome/renderer/resources/extensions/media_galleries_custom_bindings.js (working copy) |
@@ -11,6 +11,23 @@ |
var mediaGalleriesMetadata = {}; |
+function createFileSystemObjectsAndUpdateMetadata(response) { |
+ var result = null; |
+ mediaGalleriesMetadata = {}; // Clear any previous metadata. |
+ if (response) { |
+ result = []; |
+ for (var i = 0; i < response.length; i++) { |
+ var filesystem = mediaGalleriesNatives.GetMediaFileSystemObject( |
+ response[i].fsid); |
+ $Array.push(result, filesystem); |
+ var metadata = response[i]; |
+ delete metadata.fsid; |
+ mediaGalleriesMetadata[filesystem.name] = metadata; |
+ } |
+ } |
+ return result; |
+} |
+ |
binding.registerCustomHook(function(bindingsAPI, extensionId) { |
var apiFunctions = bindingsAPI.apiFunctions; |
@@ -18,21 +35,29 @@ |
// return an array of file system objects. |
apiFunctions.setCustomCallback('getMediaFileSystems', |
function(name, request, response) { |
- var result = null; |
- mediaGalleriesMetadata = {}; // Clear any previous metadata. |
- if (response) { |
- result = []; |
- for (var i = 0; i < response.length; i++) { |
- var filesystem = mediaGalleriesNatives.GetMediaFileSystemObject( |
- response[i].fsid); |
- $Array.push(result, filesystem); |
- var metadata = response[i]; |
- delete metadata.fsid; |
- mediaGalleriesMetadata[filesystem.name] = metadata; |
+ var result = createFileSystemObjectsAndUpdateMetadata(response); |
+ if (request.callback) |
+ request.callback(result); |
+ request.callback = null; |
+ }); |
+ |
+ // addUserSelectedFolder uses a custom callback so that it can instantiate |
+ // and return an array of file system objects. |
+ apiFunctions.setCustomCallback('addUserSelectedFolder', |
+ function(name, request, response) { |
+ var fileSystems = []; |
+ var selectedFileSystemName = ""; |
+ if (response && 'mediaFileSystems' in response && |
+ 'selectedFileSystemIndex' in response) { |
+ fileSystems = createFileSystemObjectsAndUpdateMetadata( |
+ response['mediaFileSystems']); |
+ var selectedFileSystemIndex = response['selectedFileSystemIndex']; |
+ if (selectedFileSystemIndex >= 0) { |
+ selectedFileSystemName = fileSystems[selectedFileSystemIndex].name; |
} |
} |
if (request.callback) |
- request.callback(result); |
+ request.callback(fileSystems, selectedFileSystemName); |
request.callback = null; |
}); |