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

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: fix selected folder name 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.
23 if (response) {
24 result = [];
25 for (var i = 0; i < response.length; i++) {
26 var filesystem = mediaGalleriesNatives.GetMediaFileSystemObject(
27 response[i].fsid);
28 $Array.push(result, filesystem);
29 var metadata = response[i];
30 delete metadata.fsid;
31 mediaGalleriesMetadata[filesystem.name] = metadata;
32 }
33 }
34 if (request.callback) 39 if (request.callback)
35 request.callback(result); 40 request.callback(result);
36 request.callback = null; 41 request.callback = null;
37 }); 42 });
38 43
44 // addUserSelectedFolder uses a custom callback so that it can instantiate
45 // and return an array of file system objects.
46 apiFunctions.setCustomCallback('addUserSelectedFolder',
47 function(name, request, response) {
48 var fileSystems = [];
49 var selectedFileSystemName = "";
50 if (response && 'mediaFileSystems' in response &&
51 'selectedFileSystemIndex' in response) {
52 fileSystems = createFileSystemObjectsAndUpdateMetadata(
53 response['mediaFileSystems']);
54 var selectedFileSystemIndex = response['selectedFileSystemIndex'];
55 if (selectedFileSystemIndex >= 0) {
56 selectedFileSystemName = fileSystems[selectedFileSystemIndex].name;
57 }
58 }
59 if (request.callback)
60 request.callback(fileSystems, selectedFileSystemName);
61 request.callback = null;
62 });
63
39 apiFunctions.setHandleRequest('getMediaFileSystemMetadata', 64 apiFunctions.setHandleRequest('getMediaFileSystemMetadata',
40 function(filesystem) { 65 function(filesystem) {
41 if (filesystem && filesystem.name && 66 if (filesystem && filesystem.name &&
42 mediaGalleriesMetadata[filesystem.name]) { 67 mediaGalleriesMetadata[filesystem.name]) {
43 return mediaGalleriesMetadata[filesystem.name]; 68 return mediaGalleriesMetadata[filesystem.name];
44 } 69 }
45 return {}; 70 return {};
46 }); 71 });
47 72
48 apiFunctions.setUpdateArgumentsPostValidate('getMetadata', 73 apiFunctions.setUpdateArgumentsPostValidate('getMetadata',
49 function(mediaFile, options, callback) { 74 function(mediaFile, options, callback) {
50 var blobUuid = blobNatives.GetBlobUuid(mediaFile) 75 var blobUuid = blobNatives.GetBlobUuid(mediaFile)
51 return [blobUuid, options, callback]; 76 return [blobUuid, options, callback];
52 }); 77 });
53 }); 78 });
54 79
55 exports.binding = binding.generate(); 80 exports.binding = binding.generate();
OLDNEW
« no previous file with comments | « chrome/common/extensions/api/media_galleries.idl ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698