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 var sendRequest = require('sendRequest').sendRequest;
     12 
     13 binding.registerCustomHook(function(bindingsAPI) {
     14   var apiFunctions = bindingsAPI.apiFunctions;
     15 
     16   apiFunctions.setHandleRequest('setIcon', function(details, callback) {
     17     setIcon(details, function(args) {
     18       sendRequest(this.name, [args, callback], this.definition.parameters);
     19     }.bind(this));
     20   });
     21 
     22   apiFunctions.setCustomCallback('openPopup',
     23                                  function(name, request, response) {
     24     if (!request.callback)
     25       return;
     26 
     27     if (chrome.runtime.lastError) {
     28       request.callback();
     29     } else {
     30       var views = getExtensionViews(-1, 'POPUP');
     31       request.callback(views.length > 0 ? views[0] : null);
     32     }
     33     request.callback = null;
     34   });
     35 });
     36 
     37 exports.binding = binding.generate();
     38