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 i18n API.
      6 
      7 var binding = require('binding').Binding.create('i18n');
      8 
      9 var i18nNatives = requireNative('i18n');
     10 var GetL10nMessage = i18nNatives.GetL10nMessage;
     11 
     12 binding.registerCustomHook(function(bindingsAPI, extensionId) {
     13   var apiFunctions = bindingsAPI.apiFunctions;
     14 
     15   apiFunctions.setUpdateArgumentsPreValidate('getMessage', function() {
     16     var args = $Array.slice(arguments);
     17 
     18     // The first argument is the message, and should be a string.
     19     var message = args[0];
     20     if (typeof(message) !== 'string') {
     21       console.warn(extensionId + ': the first argument to getMessage should ' +
     22                    'be type "string", was ' + message +
     23                    ' (type "' + typeof(message) + '")');
     24       args[0] = String(message);
     25     }
     26 
     27     return args;
     28   });
     29 
     30   apiFunctions.setHandleRequest('getMessage',
     31                                 function(messageName, substitutions) {
     32     return GetL10nMessage(messageName, substitutions, extensionId);
     33   });
     34 });
     35 
     36 exports.binding = binding.generate();
     37