summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions
diff options
context:
space:
mode:
authormpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-06 18:15:58 +0000
committermpcomplete@chromium.org <mpcomplete@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-06 18:15:58 +0000
commite4dad9fbf5a48cb65d085e49c8f7917c8f31300b (patch)
tree3df910ad37afd8d633f16cc47d0f4b46f6647fbf /chrome/browser/extensions
parent2a3e3c054891c865540524beb4af96ec68c481ba (diff)
downloadchromium_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.cc2
-rw-r--r--chrome/browser/extensions/extension_dom_ui.h2
-rw-r--r--chrome/browser/extensions/extension_function.cc15
-rw-r--r--chrome/browser/extensions/extension_function.h6
-rw-r--r--chrome/browser/extensions/extension_function_dispatcher.cc2
-rw-r--r--chrome/browser/extensions/extension_function_dispatcher.h3
-rw-r--r--chrome/browser/extensions/extension_host.cc2
-rw-r--r--chrome/browser/extensions/extension_host.h2
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,