summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorrafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-18 22:59:25 +0000
committerrafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-18 22:59:25 +0000
commitce95d0324ab1b5c30ff21ff9ef21b073e0f9d030 (patch)
tree787736b269885eb0535bd30ad045d43ff8e40715 /chrome/renderer
parent86693068111d56f16fd2ceee6bb87ac72030e371 (diff)
downloadchromium_src-ce95d0324ab1b5c30ff21ff9ef21b073e0f9d030.zip
chromium_src-ce95d0324ab1b5c30ff21ff9ef21b073e0f9d030.tar.gz
chromium_src-ce95d0324ab1b5c30ff21ff9ef21b073e0f9d030.tar.bz2
Async extension callbacks now always fire and set chrome.extension.lastError on error.
Includes doc changes for extension.lastError and a browsertest. BUG=17381 Review URL: http://codereview.chromium.org/172078 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23676 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/extensions/extension_process_bindings.cc2
-rw-r--r--chrome/renderer/renderer_resources.grd2
-rw-r--r--chrome/renderer/resources/extension_process_bindings.js15
3 files changed, 13 insertions, 6 deletions
diff --git a/chrome/renderer/extensions/extension_process_bindings.cc b/chrome/renderer/extensions/extension_process_bindings.cc
index cb22bce..8d07d82 100644
--- a/chrome/renderer/extensions/extension_process_bindings.cc
+++ b/chrome/renderer/extensions/extension_process_bindings.cc
@@ -262,7 +262,7 @@ class ExtensionImpl : public ExtensionBase {
v8::Persistent<v8::Context>::New(v8::Context::GetCurrent());
DCHECK(!current_context.IsEmpty());
GetPendingRequestMap()[request_id].reset(new PendingRequest(
- current_context, *v8::String::AsciiValue(args.Data())));
+ current_context, name));
renderview->SendExtensionRequest(name, json_args, request_id, has_callback);
diff --git a/chrome/renderer/renderer_resources.grd b/chrome/renderer/renderer_resources.grd
index eb128c7..5ec2309 100644
--- a/chrome/renderer/renderer_resources.grd
+++ b/chrome/renderer/renderer_resources.grd
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This comment is only here because changes to resources are not picked up
-without changes to the corresponding grd file. aa1 -->
+without changes to the corresponding grd file. rw -->
<grit latest_public_release="0" current_release="1">
<outputs>
<output filename="grit/renderer_resources.h" type="rc_header">
diff --git a/chrome/renderer/resources/extension_process_bindings.js b/chrome/renderer/resources/extension_process_bindings.js
index f132e55..3155c05 100644
--- a/chrome/renderer/resources/extension_process_bindings.js
+++ b/chrome/renderer/resources/extension_process_bindings.js
@@ -61,11 +61,16 @@ var chrome = chrome || {};
chromeHidden.handleResponse = function(requestId, name,
success, response, error) {
try {
- if (!success) {
- if (!error)
+ if (success) {
+ delete chrome.extension.lastError;
+ } else {
+ if (!error) {
error = "Unknown error."
+ }
console.error("Error during " + name + ": " + error);
- return;
+ chrome.extension.lastError = {
+ "message": error
+ };
}
if (callbacks[requestId]) {
@@ -77,6 +82,7 @@ var chrome = chrome || {};
}
} finally {
delete callbacks[requestId];
+ delete chrome.extension.lastError;
}
};
@@ -94,8 +100,9 @@ var chrome = chrome || {};
// Calls with one argument expect singular argument. Calls with multiple
// expect a list.
- if (argCount == 1)
+ if (argCount == 1) {
request.args = args[0];
+ }
if (argCount > 1) {
request.args = [];
for (var k = 0; k < argCount; k++) {