diff options
author | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-06 18:15:58 +0000 |
---|---|---|
committer | mpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-06 18:15:58 +0000 |
commit | e4dad9fbf5a48cb65d085e49c8f7917c8f31300b (patch) | |
tree | 3df910ad37afd8d633f16cc47d0f4b46f6647fbf /chrome/browser/extensions | |
parent | 2a3e3c054891c865540524beb4af96ec68c481ba (diff) | |
download | chromium_src-e4dad9fbf5a48cb65d085e49c8f7917c8f31300b.zip chromium_src-e4dad9fbf5a48cb65d085e49c8f7917c8f31300b.tar.gz chromium_src-e4dad9fbf5a48cb65d085e49c8f7917c8f31300b.tar.bz2 |
Modify extension request IPC messages to pass a ListValue instead of a string.
This allows us to pass binary values through extension requests. I use this in
my next CL to pass SkBitmaps.
BUG=23269
TEST=no
Review URL: http://codereview.chromium.org/251093
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28130 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r-- | chrome/browser/extensions/extension_dom_ui.cc | 2 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_dom_ui.h | 2 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_function.cc | 15 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_function.h | 6 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_function_dispatcher.cc | 2 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_function_dispatcher.h | 3 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_host.cc | 2 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_host.h | 2 |
8 files changed, 12 insertions, 22 deletions
diff --git a/chrome/browser/extensions/extension_dom_ui.cc b/chrome/browser/extensions/extension_dom_ui.cc index a718f5c..df4746d 100644 --- a/chrome/browser/extensions/extension_dom_ui.cc +++ b/chrome/browser/extensions/extension_dom_ui.cc @@ -54,7 +54,7 @@ void ExtensionDOMUI::RenderViewReused(RenderViewHost* render_view_host) { } void ExtensionDOMUI::ProcessDOMUIMessage(const std::string& message, - const std::string& content, + const Value* content, int request_id, bool has_callback) { extension_function_dispatcher_->HandleRequest(message, content, request_id, diff --git a/chrome/browser/extensions/extension_dom_ui.h b/chrome/browser/extensions/extension_dom_ui.h index b8ef8dc..a729167 100644 --- a/chrome/browser/extensions/extension_dom_ui.h +++ b/chrome/browser/extensions/extension_dom_ui.h @@ -29,7 +29,7 @@ class ExtensionDOMUI virtual void RenderViewCreated(RenderViewHost* render_view_host); virtual void RenderViewReused(RenderViewHost* render_view_host); virtual void ProcessDOMUIMessage(const std::string& message, - const std::string& content, + const Value* content, int request_id, bool has_callback); diff --git a/chrome/browser/extensions/extension_function.cc b/chrome/browser/extensions/extension_function.cc index 26adefb..c15c18b 100644 --- a/chrome/browser/extensions/extension_function.cc +++ b/chrome/browser/extensions/extension_function.cc @@ -4,24 +4,13 @@ #include "chrome/browser/extensions/extension_function.h" -#include "base/json_reader.h" #include "base/json_writer.h" #include "base/logging.h" #include "chrome/browser/extensions/extension_function_dispatcher.h" -void AsyncExtensionFunction::SetArgs(const std::string& args) { +void AsyncExtensionFunction::SetArgs(const Value* args) { DCHECK(!args_); // Should only be called once. - if (!args.empty()) { - JSONReader reader; - args_ = reader.JsonToValue(args, false, false); - - // Since we do the serialization in the v8 extension, we should always get - // valid JSON. - if (!args_) { - DCHECK(false); - return; - } - } + args_ = args->DeepCopy(); } const std::string AsyncExtensionFunction::GetResult() { diff --git a/chrome/browser/extensions/extension_function.h b/chrome/browser/extensions/extension_function.h index d763696..238f8e4 100644 --- a/chrome/browser/extensions/extension_function.h +++ b/chrome/browser/extensions/extension_function.h @@ -36,8 +36,8 @@ class ExtensionFunction : public base::RefCounted<ExtensionFunction> { void set_name(const std::string& name) { name_ = name; } const std::string name() { return name_; } - // Specifies the raw arguments to the function, as a JSON-encoded string. - virtual void SetArgs(const std::string& args) = 0; + // Specifies the raw arguments to the function, as a JSON value. + virtual void SetArgs(const Value* args) = 0; // Retrieves the results of the function as a JSON-encoded string (may // be empty). @@ -103,7 +103,7 @@ class AsyncExtensionFunction : public ExtensionFunction { AsyncExtensionFunction() : args_(NULL), bad_message_(false) {} virtual ~AsyncExtensionFunction() {} - virtual void SetArgs(const std::string& args); + virtual void SetArgs(const Value* args); virtual const std::string GetResult(); virtual const std::string GetError() { return error_; } virtual void Run() { diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc index eb3a92e..d17e575 100644 --- a/chrome/browser/extensions/extension_function_dispatcher.cc +++ b/chrome/browser/extensions/extension_function_dispatcher.cc @@ -279,7 +279,7 @@ Extension* ExtensionFunctionDispatcher::GetExtension() { } void ExtensionFunctionDispatcher::HandleRequest(const std::string& name, - const std::string& args, + const Value* args, int request_id, bool has_callback) { scoped_refptr<ExtensionFunction> function( diff --git a/chrome/browser/extensions/extension_function_dispatcher.h b/chrome/browser/extensions/extension_function_dispatcher.h index 492c431e..b987e0e 100644 --- a/chrome/browser/extensions/extension_function_dispatcher.h +++ b/chrome/browser/extensions/extension_function_dispatcher.h @@ -19,6 +19,7 @@ class ExtensionHost; class Profile; class RenderViewHost; class RenderViewHostDelegate; +class Value; // A factory function for creating new ExtensionFunction instances. typedef ExtensionFunction* (*ExtensionFunctionFactory)(); @@ -61,7 +62,7 @@ class ExtensionFunctionDispatcher { ~ExtensionFunctionDispatcher(); // Handle a request to execute an extension function. - void HandleRequest(const std::string& name, const std::string& args, + void HandleRequest(const std::string& name, const Value* args, int request_id, bool has_callback); // Send a response to a function. diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc index 766a12e..8bad4ce 100644 --- a/chrome/browser/extensions/extension_host.cc +++ b/chrome/browser/extensions/extension_host.cc @@ -361,7 +361,7 @@ WebPreferences ExtensionHost::GetWebkitPrefs() { } void ExtensionHost::ProcessDOMUIMessage(const std::string& message, - const std::string& content, + const Value* content, int request_id, bool has_callback) { if (extension_function_dispatcher_.get()) { diff --git a/chrome/browser/extensions/extension_host.h b/chrome/browser/extensions/extension_host.h index c5aeeba..9e54251 100644 --- a/chrome/browser/extensions/extension_host.h +++ b/chrome/browser/extensions/extension_host.h @@ -103,7 +103,7 @@ class ExtensionHost : public RenderViewHostDelegate, virtual WebPreferences GetWebkitPrefs(); virtual void ProcessDOMUIMessage(const std::string& message, - const std::string& content, + const Value* content, int request_id, bool has_callback); virtual void RunJavaScriptMessage(const std::wstring& message, |