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 3 // found in the LICENSE file. 4 5 // Custom binding for the browserAction API. 6 7 var binding = require('binding').Binding.create('browserAction'); 8 9 var setIcon = require('setIcon').setIcon; 10 var getExtensionViews = requireNative('runtime').GetExtensionViews; 11 12 binding.registerCustomHook(function(bindingsAPI) { 13 var apiFunctions = bindingsAPI.apiFunctions; 14 15 apiFunctions.setHandleRequest('setIcon', function(details, callback) { 16 setIcon(details, callback, this.name, this.definition.parameters, 17 'browser action'); 18 }); 19 20 apiFunctions.setCustomCallback('openPopup', 21 function(name, request, response) { 22 if (!request.callback) 23 return; 24 25 if (chrome.runtime.lastError) { 26 request.callback(); 27 } else { 28 var views = getExtensionViews(-1, 'POPUP'); 29 request.callback(views.length > 0 ? views[0] : null); 30 } 31 request.callback = null; 32 }); 33 }); 34 35 exports.binding = binding.generate(); 36