media_galleries_custom_bindings.js revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Custom binding for the Media Gallery API. 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)var binding = require('binding').Binding.create('mediaGalleries'); 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)var mediaGalleriesNatives = requireNative('mediaGalleries'); 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)var mediaGalleriesMetadata = {}; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)binding.registerCustomHook(function(bindingsAPI, extensionId) { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var apiFunctions = bindingsAPI.apiFunctions; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // getMediaFileSystems uses a custom callback so that it can instantiate and 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // return an array of file system objects. 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) apiFunctions.setCustomCallback('getMediaFileSystems', 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) function(name, request, response) { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) var result = null; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mediaGalleriesMetadata = {}; // Clear any previous metadata. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (response) { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result = []; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (var i = 0; i < response.length; i++) { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var filesystem = mediaGalleriesNatives.GetMediaFileSystemObject( 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) response[i].fsid); 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch $Array.push(result, filesystem); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var metadata = response[i]; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delete metadata.fsid; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mediaGalleriesMetadata[filesystem.name] = metadata; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (request.callback) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.callback(result); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) request.callback = null; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) apiFunctions.setHandleRequest('getMediaFileSystemMetadata', 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) function(filesystem) { 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (filesystem && filesystem.name && 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mediaGalleriesMetadata[filesystem.name]) { 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mediaGalleriesMetadata[filesystem.name]; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return {}; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}); 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)exports.binding = binding.generate(); 49