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

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: rebase Created 7 years 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 10
11 var mediaGalleriesMetadata = {}; 11 var mediaGalleriesMetadata = {};
12 12
13 function createFileSystemObjectsAndUpdateMetadata(response) {
14 var result = null;
15 mediaGalleriesMetadata = {}; // Clear any previous metadata.
16 if (response) {
17 result = [];
18 for (var i = 0; i < response.length; i++) {
19 var filesystem = mediaGalleriesNatives.GetMediaFileSystemObject(
20 response[i].fsid);
21 $Array.push(result, filesystem);
22 var metadata = response[i];
23 delete metadata.fsid;
24 mediaGalleriesMetadata[filesystem.name] = metadata;
25 }
26 }
27 return result;
28 }
29
13 binding.registerCustomHook(function(bindingsAPI, extensionId) { 30 binding.registerCustomHook(function(bindingsAPI, extensionId) {
14 var apiFunctions = bindingsAPI.apiFunctions; 31 var apiFunctions = bindingsAPI.apiFunctions;
15 32
16 // getMediaFileSystems uses a custom callback so that it can instantiate and 33 // getMediaFileSystems uses a custom callback so that it can instantiate and
17 // return an array of file system objects. 34 // return an array of file system objects.
18 apiFunctions.setCustomCallback('getMediaFileSystems', 35 apiFunctions.setCustomCallback('getMediaFileSystems',
19 function(name, request, response) { 36 function(name, request, response) {
20 var result = null; 37 var result = createFileSystemObjectsAndUpdateMetadata(response);
21 mediaGalleriesMetadata = {}; // Clear any previous metadata. 38 if (request.callback)
22 if (response) { 39 request.callback(result);
23 result = []; 40 request.callback = null;
24 for (var i = 0; i < response.length; i++) { 41 });
25 var filesystem = mediaGalleriesNatives.GetMediaFileSystemObject( 42
26 response[i].fsid); 43 // manageMediaLocations uses a custom callback so that it can instantiate and
27 $Array.push(result, filesystem); 44 // return an array of file system objects.
28 var metadata = response[i]; 45 apiFunctions.setCustomCallback('manageMediaLocations',
29 delete metadata.fsid; 46 function(name, request, response) {
30 mediaGalleriesMetadata[filesystem.name] = metadata; 47 var result = {};
48 result['mediaFileSystems'] = null;
49
50 if (request.args[0].type == 'manage') {
51 result['mediaFileSystems'] =
52 createFileSystemObjectsAndUpdateMetadata(response);
53 } else if (request.args[0].type == 'directory_prompt') {
54 if (response && response.length > 0) {
55 var fsName = response.pop()
vandebo (ex-Chrome) 2013/12/18 20:15:53 Instead of doing this hack, probably better to jus
vandebo (ex-Chrome) 2014/01/09 00:29:16 This?
56 result['userSelectedFilesSystemName'] = fsName;
57 result['mediaFileSystems'] =
58 createFileSystemObjectsAndUpdateMetadata(response);
31 } 59 }
32 } 60 }
33 if (request.callback) 61 if (request.callback)
34 request.callback(result); 62 request.callback(result);
35 request.callback = null; 63 request.callback = null;
36 }); 64 });
37 65
38 apiFunctions.setHandleRequest('getMediaFileSystemMetadata', 66 apiFunctions.setHandleRequest('getMediaFileSystemMetadata',
39 function(filesystem) { 67 function(filesystem) {
40 if (filesystem && filesystem.name && 68 if (filesystem && filesystem.name &&
41 mediaGalleriesMetadata[filesystem.name]) { 69 mediaGalleriesMetadata[filesystem.name]) {
42 return mediaGalleriesMetadata[filesystem.name]; 70 return mediaGalleriesMetadata[filesystem.name];
43 } 71 }
44 return {}; 72 return {};
45 }); 73 });
46 }); 74 });
47 75
48 exports.binding = binding.generate(); 76 exports.binding = binding.generate();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698