| Index: chrome/renderer/resources/extensions/pepper_request.js
 | 
| diff --git a/chrome/renderer/resources/extensions/pepper_request.js b/chrome/renderer/resources/extensions/pepper_request.js
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..b90b35d279d0d2bba93abee889d68818590c8de6
 | 
| --- /dev/null
 | 
| +++ b/chrome/renderer/resources/extensions/pepper_request.js
 | 
| @@ -0,0 +1,51 @@
 | 
| +// Copyright 2013 The Chromium Authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +var SendResponse = requireNative('pepper_request_natives').SendResponse;
 | 
| +var GetAvailability = requireNative('v8_context').GetAvailability;
 | 
| +
 | 
| +function checkAvailability(name) {
 | 
| +  var availability = GetAvailability(name);
 | 
| +  if (!availability.is_available)
 | 
| +    throw Error(availability.message);
 | 
| +}
 | 
| +
 | 
| +function resolveName(name) {
 | 
| +  checkAvailability(name);
 | 
| +  var item = chrome;
 | 
| +  var nameComponents = $String.split(name, '.');
 | 
| +  for (var i = 0; i < nameComponents.length; i++) {
 | 
| +    item = item[nameComponents[i]];
 | 
| +  }
 | 
| +  return item;
 | 
| +}
 | 
| +
 | 
| +function callMethod(targetName, requestId) {
 | 
| +  var args = $Array.slice(arguments, 2);
 | 
| +  args.push(function() {
 | 
| +    var error = null;
 | 
| +    if (chrome.runtime.lastError)
 | 
| +      error = chrome.runtime.lastError.message;
 | 
| +    SendResponse(requestId, $Array.slice(arguments), error);
 | 
| +  });
 | 
| +  try {
 | 
| +    var target = resolveName(targetName);
 | 
| +    $Function.apply(target, null, args);
 | 
| +  } catch (e) {
 | 
| +    return e.message;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +function postMethod(targetName) {
 | 
| +  var args = $Array.slice(arguments, 1);
 | 
| +  try {
 | 
| +    var target = resolveName(targetName);
 | 
| +    $Function.apply(target, null, args);
 | 
| +  } catch (e) {
 | 
| +    return e.message;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
| +exports.callMethod = callMethod;
 | 
| +exports.postMethod = postMethod;
 | 
| 
 |