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; |