| Index: extensions/renderer/resources/utils.js
|
| diff --git a/extensions/renderer/resources/utils.js b/extensions/renderer/resources/utils.js
|
| index 3b5a68d6145b1d258f325772ca2f919140e5f37c..0ec387be5ab2bd4fbe043c90101002da9e53c820 100644
|
| --- a/extensions/renderer/resources/utils.js
|
| +++ b/extensions/renderer/resources/utils.js
|
| @@ -4,6 +4,22 @@
|
|
|
| var nativeDeepCopy = requireNative('utils').deepCopy;
|
| var DCHECK = requireNative('logging').DCHECK;
|
| +var WARNING = requireNative('logging').WARNING;
|
| +var logActivity = requireNative('activityLogger');
|
| +var exceptionHandler = require('uncaught_exception_handler');
|
| +
|
| +var runCallbackWithLastError;
|
| +if (bindingUtil) {
|
| + runCallbackWithLastError = function(name, message, stack, callback, args) {
|
| + bindingUtil.runCallbackWithLastError(message, function() {
|
| + $Function.apply(callback, null, args);
|
| + });
|
| + }
|
| +} else {
|
| + var lastError = require('lastError');
|
| + if (lastError) // lastError can be undefined in unittests.
|
| + runCallbackWithLastError = lastError.run;
|
| +}
|
|
|
| /**
|
| * An object forEach. Calls |f| with each (key, value) pair of |obj|, using
|
| @@ -206,9 +222,43 @@ function promise(func) {
|
| });
|
| }
|
|
|
| +// DO NOT USE. This causes problems with safe builtins, and makes migration to
|
| +// native bindings more difficult.
|
| +function handleRequestWithPromiseDoNotUse(
|
| + binding, apiName, methodName, customizedFunction) {
|
| + var fullName = apiName + '.' + methodName;
|
| + var extensionId = requireNative('process').GetExtensionId();
|
| + binding.setHandleRequest(methodName, function() {
|
| + logActivity.LogAPICall(extensionId, fullName, $Array.slice(arguments));
|
| + var stack = exceptionHandler.getExtensionStackTrace();
|
| + var callback = arguments[arguments.length - 1];
|
| + var args = $Array.slice(arguments, 0, arguments.length - 1);
|
| + var keepAlivePromise = requireAsync('keep_alive').then(function(module) {
|
| + return module.createKeepAlive();
|
| + });
|
| + $Function.apply(customizedFunction, this, args).then(function(result) {
|
| + if (callback) {
|
| + exceptionHandler.safeCallbackApply(
|
| + fullName, {__proto__: null, stack: stack}, callback, [result]);
|
| + }
|
| + }).catch(function(error) {
|
| + if (callback) {
|
| + var message = exceptionHandler.safeErrorToString(error, true);
|
| + runCallbackWithLastError(fullName, message, stack, callback);
|
| + }
|
| + }).then(function() {
|
| + keepAlivePromise.then(function(keepAlive) {
|
| + keepAlive.close();
|
| + });
|
| + });
|
| + });
|
| +};
|
| +
|
| exports.$set('forEach', forEach);
|
| exports.$set('lookup', lookup);
|
| exports.$set('defineProperty', defineProperty);
|
| exports.$set('expose', expose);
|
| exports.$set('deepCopy', deepCopy);
|
| exports.$set('promise', promise);
|
| +exports.$set('handleRequestWithPromiseDoNotUse',
|
| + handleRequestWithPromiseDoNotUse);
|
|
|