Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(215)

Unified Diff: chrome/renderer/resources/extensions/send_request.js

Issue 12378077: Attempting to fix problems in 11571014. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..a7e59c622864f2baee6b7c4b45489e92f66e07bd 100644
--- a/chrome/renderer/resources/extensions/send_request.js
+++ b/chrome/renderer/resources/extensions/send_request.js
@@ -9,21 +9,27 @@ 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 request = requests[requestId];
Matt Perry 2013/03/05 21:51:38 Why pull all this out of the try? Might as well be
not at google - send to devlin 2013/03/05 22:05:38 I pulled this out because the finally{} block refe
+ delete requests[requestId];
+ DCHECK(request != null);
+
+ // lastError needs to be set on the caller's global object, which may not
+ // necessarily be ours.
+ var callerChrome = natives.GetGlobal(
+ request.callback || request.customCallback || chrome).chrome;
Matt Perry 2013/03/05 21:51:38 does GetGlobal() return the global object, or chro
not at google - send to devlin 2013/03/05 22:05:38 Yeah, chrome. There is a .chrome at the end of the
+
try {
- var request = requests[requestId];
- DCHECK(request != null);
- if (success) {
- lastError.clear();
- } else {
- if (!error) {
+ 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) {
@@ -52,11 +58,8 @@ chromeHidden.handleResponse = function(requestId, name,
request.callback.apply(request, responseList);
}
} finally {
- delete requests[requestId];
- lastError.clear();
+ lastError.clear(callerChrome);
}
-
- return undefined;
};
function prepareRequest(args, argSchemas) {
@@ -111,6 +114,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,

Powered by Google App Engine
This is Rietveld 408576698