| 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)
|
|
|