OLD | NEW |
---|---|
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(); |
OLD | NEW |