Chromium Code Reviews| 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); | 
| 
 
not at google - send to devlin
2013/12/03 17:32:50
having checkAvailability be a separate method does
 
Sam McNally
2013/12/04 00:01:36
Done.
 
 | 
| + 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; | 
| 
 
not at google - send to devlin
2013/12/03 17:32:50
It would probably be nicer to catch this error fro
 
Sam McNally
2013/12/04 00:01:36
Done.
 
 | 
| + } | 
| +} | 
| + | 
| +function postMethod(targetName) { | 
| 
 
not at google - send to devlin
2013/12/03 17:32:50
if you kill StartPost then you'd kill this method
 
Sam McNally
2013/12/04 00:01:36
Done.
 
 | 
| + 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; |