diff options
author | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-18 22:59:25 +0000 |
---|---|---|
committer | rafaelw@chromium.org <rafaelw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-18 22:59:25 +0000 |
commit | ce95d0324ab1b5c30ff21ff9ef21b073e0f9d030 (patch) | |
tree | 787736b269885eb0535bd30ad045d43ff8e40715 /chrome/renderer | |
parent | 86693068111d56f16fd2ceee6bb87ac72030e371 (diff) | |
download | chromium_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.cc | 2 | ||||
-rw-r--r-- | chrome/renderer/renderer_resources.grd | 2 | ||||
-rw-r--r-- | chrome/renderer/resources/extension_process_bindings.js | 15 |
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++) { |