Index: chrome/renderer/resources/extensions/media_galleries_custom_bindings.js |
=================================================================== |
--- chrome/renderer/resources/extensions/media_galleries_custom_bindings.js (revision 237402) |
+++ chrome/renderer/resources/extensions/media_galleries_custom_bindings.js (working copy) |
@@ -10,6 +10,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; |
@@ -17,17 +34,37 @@ |
// 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; |
+ }); |
+ |
+ // manageMediaLocations uses a custom callback so that it can instantiate and |
+ // return an array of file system objects. |
+ apiFunctions.setCustomCallback('manageMediaLocations', |
+ function(name, request, response) { |
+ var result = {}; |
+ result['media_file_systems'] = null; |
+ |
+ if (request.args[0].type == 'manage') { |
+ result['media_file_systems'] = |
+ createFileSystemObjectsAndUpdateMetadata(response); |
+ } else if (request.args[0].type == 'directory_prompt') { |
+ if (response) { |
+ if (response.length == 0) { |
+ result['media_file_systems'] = []; |
+ } else if (response.length == 1) { |
+ var galleries = []; |
+ var filesystem = mediaGalleriesNatives.GetMediaFileSystemObject( |
+ response[0].fsid); |
+ $Array.push(galleries, filesystem); |
+ var metadata = response[0]; |
+ delete metadata.fsid; |
+ mediaGalleriesMetadata[filesystem.name] = metadata; |
+ |
+ result['media_file_systems'] = galleries; |
+ } |
} |
} |
if (request.callback) |