| 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 1e5746f9ea712ad2b1489db8d034048e2524e595..256ef33cd9ad3fd540c763425b5e0aab15466562 100644
|
| --- a/chrome/renderer/resources/extensions/send_request.js
|
| +++ b/chrome/renderer/resources/extensions/send_request.js
|
| @@ -9,21 +9,28 @@ var lastError = require('lastError');
|
| var natives = requireNative('sendRequest');
|
| var validate = require('schemaUtils').validate;
|
|
|
| +// All outstanding requests from sendRequest().
|
| +var requests = {};
|
| +
|
| // Callback handling.
|
| -var requests = [];
|
| chromeHidden.handleResponse = function(requestId, name,
|
| success, responseList, error) {
|
| + var callerChrome = null;
|
| try {
|
| var request = requests[requestId];
|
| DCHECK(request != null);
|
| - if (success) {
|
| - lastError.clear();
|
| - } else {
|
| - if (!error) {
|
| +
|
| + // lastError needs to be set on the caller's global object, which may not
|
| + // necessarily be ours.
|
| + var callerGlobal =
|
| + natives.GetGlobal(request.callback || request.customCallback || chrome);
|
| + callerChrome = callerGlobal.chrome;
|
| +
|
| + lastError.clear(callerChrome);
|
| + if (!success) {
|
| + if (!error)
|
| error = "Unknown error.";
|
| - }
|
| - console.error("Error during " + name + ": " + error);
|
| - lastError.set(error);
|
| + lastError.set(error, callerChrome);
|
| }
|
|
|
| if (request.customCallback) {
|
| @@ -53,10 +60,9 @@ chromeHidden.handleResponse = function(requestId, name,
|
| }
|
| } finally {
|
| delete requests[requestId];
|
| - lastError.clear();
|
| + if (callerChrome)
|
| + lastError.clear(callerChrome);
|
| }
|
| -
|
| - return undefined;
|
| };
|
|
|
| function prepareRequest(args, argSchemas) {
|
| @@ -111,6 +117,7 @@ function sendRequest(functionName, args, argSchemas, optArgs) {
|
| var requestId = natives.GetNextRequestId();
|
| request.id = requestId;
|
| requests[requestId] = request;
|
| +
|
| var hasCallback = request.callback || optArgs.customCallback;
|
| return nativeFunction(functionName,
|
| requestArgs,
|
|
|