| Index: chrome/renderer/resources/extensions/send_request.js
|
| diff --git a/chrome/renderer/resources/extensions/send_request.js b/chrome/renderer/resources/extensions/send_request.js
|
| index 4f14e1259720f5bfd82da7509299ae05c2e25460..052396fba5d180c322343c24ad1341dfb30f1de7 100644
|
| --- a/chrome/renderer/resources/extensions/send_request.js
|
| +++ b/chrome/renderer/resources/extensions/send_request.js
|
| @@ -3,10 +3,10 @@
|
| // found in the LICENSE file.
|
|
|
| var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();
|
| -var DCHECK = requireNative('logging').DCHECK;
|
| var forEach = require('utils').forEach;
|
| var json = require('json');
|
| var lastError = require('lastError');
|
| +var logging = requireNative('logging');
|
| var natives = requireNative('sendRequest');
|
| var validate = require('schemaUtils').validate;
|
|
|
| @@ -18,8 +18,7 @@ var requests = {};
|
| var calledSendRequest = false;
|
|
|
| // Callback handling.
|
| -chromeHidden.handleResponse = function(requestId, name,
|
| - success, responseList, error) {
|
| +function handleResponse(requestId, name, success, responseList, error) {
|
| // The chrome objects we will set lastError on. Really we should only be
|
| // setting this on the callback's chrome object, but set on ours too since
|
| // it's conceivable that something relies on that.
|
| @@ -27,7 +26,7 @@ chromeHidden.handleResponse = function(requestId, name,
|
|
|
| try {
|
| var request = requests[requestId];
|
| - DCHECK(request != null);
|
| + logging.DCHECK(request != null);
|
|
|
| // lastError needs to be set on the caller's chrome object no matter what,
|
| // though chances are it's the same as ours (it will be different when
|
| @@ -57,7 +56,7 @@ chromeHidden.handleResponse = function(requestId, name,
|
| // caller has provided a callback. Implementations of api
|
| // calls may not return data if they observe the caller
|
| // has not provided a callback.
|
| - if (chromeHidden.validateCallbacks && !error) {
|
| + if (logging.DCHECK_IS_ON() && !error) {
|
| try {
|
| if (!request.callbackSchema.parameters) {
|
| throw new Error("No callback schemas defined");
|
| @@ -70,7 +69,14 @@ chromeHidden.handleResponse = function(requestId, name,
|
| }
|
| }
|
|
|
| - request.callback.apply(request, responseList);
|
| + try {
|
| + request.callback.apply(request, responseList);
|
| + } catch (e) {
|
| + var errorMessage = "Error in response to " + name + ": " + e;
|
| + if (request.stack && request.stack != '')
|
| + errorMessage += "\n" + request.stack;
|
| + console.error(errorMessage);
|
| + }
|
| }
|
| } finally {
|
| delete requests[requestId];
|
| @@ -167,3 +173,6 @@ function clearCalledSendRequest() {
|
| exports.sendRequest = sendRequest;
|
| exports.getCalledSendRequest = getCalledSendRequest;
|
| exports.clearCalledSendRequest = clearCalledSendRequest;
|
| +
|
| +// Called by C++.
|
| +exports.handleResponse = handleResponse;
|
|
|