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 7var binding = require('binding').Binding.create('browserAction'); 8 9var setIcon = require('setIcon').setIcon; 10var getExtensionViews = requireNative('runtime').GetExtensionViews; 11 12binding.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 35exports.binding = binding.generate(); 36