Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(572)

Side by Side Diff: chrome/renderer/resources/extensions/media_galleries_custom_bindings.js

Issue 93643002: Media Galleries: Add chrome.mediaGalleries.addUserSelectedFolder(). (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 // Custom binding for the Media Gallery API. 5 // Custom binding for the Media Gallery API.
6 6
7 var binding = require('binding').Binding.create('mediaGalleries'); 7 var binding = require('binding').Binding.create('mediaGalleries');
8 8
9 var mediaGalleriesNatives = requireNative('mediaGalleries'); 9 var mediaGalleriesNatives = requireNative('mediaGalleries');
10 var blobNatives = requireNative('blob_natives'); 10 var blobNatives = requireNative('blob_natives');
11 11
12 var mediaGalleriesMetadata = {}; 12 var mediaGalleriesMetadata = {};
13 13
14 function createFileSystemObjectsAndUpdateMetadata(response) {
15 var result = null;
16 mediaGalleriesMetadata = {}; // Clear any previous metadata.
17 if (response) {
18 result = [];
19 for (var i = 0; i < response.length; i++) {
20 var filesystem = mediaGalleriesNatives.GetMediaFileSystemObject(
21 response[i].fsid);
22 $Array.push(result, filesystem);
23 var metadata = response[i];
24 delete metadata.fsid;
25 mediaGalleriesMetadata[filesystem.name] = metadata;
26 }
27 }
28 return result;
29 }
30
14 binding.registerCustomHook(function(bindingsAPI, extensionId) { 31 binding.registerCustomHook(function(bindingsAPI, extensionId) {
15 var apiFunctions = bindingsAPI.apiFunctions; 32 var apiFunctions = bindingsAPI.apiFunctions;
16 33
17 // getMediaFileSystems uses a custom callback so that it can instantiate and 34 // getMediaFileSystems uses a custom callback so that it can instantiate and
18 // return an array of file system objects. 35 // return an array of file system objects.
19 apiFunctions.setCustomCallback('getMediaFileSystems', 36 apiFunctions.setCustomCallback('getMediaFileSystems',
20 function(name, request, response) { 37 function(name, request, response) {
21 var result = null; 38 var result = createFileSystemObjectsAndUpdateMetadata(response);
22 mediaGalleriesMetadata = {}; // Clear any previous metadata. 39 if (request.callback)
23 if (response) { 40 request.callback(result);
24 result = []; 41 request.callback = null;
25 for (var i = 0; i < response.length; i++) { 42 });
26 var filesystem = mediaGalleriesNatives.GetMediaFileSystemObject( 43
27 response[i].fsid); 44 // addUserSelectedFolder uses a custom callback so that it can instantiate
28 $Array.push(result, filesystem); 45 // and return an array of file system objects.
29 var metadata = response[i]; 46 apiFunctions.setCustomCallback('addUserSelectedFolder',
30 delete metadata.fsid; 47 function(name, request, response) {
31 mediaGalleriesMetadata[filesystem.name] = metadata; 48 var fileSystems = [];
32 } 49 var selectedFileSystemName = "";
50 if (response && response.length > 0) {
51 selectedFileSystemName = response.pop()
52 fileSystems = createFileSystemObjectsAndUpdateMetadata(response);
33 } 53 }
34 if (request.callback) 54 if (request.callback)
35 request.callback(result); 55 request.callback(fileSystems, selectedFileSystemName);
36 request.callback = null; 56 request.callback = null;
37 }); 57 });
38 58
39 apiFunctions.setHandleRequest('getMediaFileSystemMetadata', 59 apiFunctions.setHandleRequest('getMediaFileSystemMetadata',
40 function(filesystem) { 60 function(filesystem) {
41 if (filesystem && filesystem.name && 61 if (filesystem && filesystem.name &&
42 mediaGalleriesMetadata[filesystem.name]) { 62 mediaGalleriesMetadata[filesystem.name]) {
43 return mediaGalleriesMetadata[filesystem.name]; 63 return mediaGalleriesMetadata[filesystem.name];
44 } 64 }
45 return {}; 65 return {};
46 }); 66 });
47 67
48 apiFunctions.setUpdateArgumentsPostValidate('getMetadata', 68 apiFunctions.setUpdateArgumentsPostValidate('getMetadata',
49 function(mediaFile, options, callback) { 69 function(mediaFile, options, callback) {
50 var blobUuid = blobNatives.GetBlobUuid(mediaFile) 70 var blobUuid = blobNatives.GetBlobUuid(mediaFile)
51 return [blobUuid, options, callback]; 71 return [blobUuid, options, callback];
52 }); 72 });
53 }); 73 });
54 74
55 exports.binding = binding.generate(); 75 exports.binding = binding.generate();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698