Home | History | Annotate | Download | only in extensions
      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