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

Unified Diff: chrome/browser/renderer_host/render_view_host.cc

Issue 251093: Modify extension request IPC messages to pass a ListValue instead of a string. (Closed)
Patch Set: notreached messages Created 11 years, 2 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/browser/renderer_host/render_view_host.cc
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 9d693df04da6be8c482244d147dbd3c5f62f98d4..4a3f216c3998923a4189a4dccee0d20a0527be7b 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -10,6 +10,7 @@
#include "app/l10n_util.h"
#include "app/resource_bundle.h"
#include "base/gfx/native_widget_types.h"
+#include "base/json_reader.h"
#include "base/string_util.h"
#include "base/time.h"
#include "base/waitable_event.h"
@@ -1217,8 +1218,19 @@ void RenderViewHost::OnMsgDOMUISend(
// values here.
const int kRequestId = -1;
const bool kHasCallback = false;
+ scoped_ptr<Value> value;
+ if (!content.empty()) {
+ value.reset(JSONReader::Read(content, false));
+ if (!value.get()) {
+ // The page sent us something that we didn't understand.
+ // This probably indicates a programming error.
+ NOTREACHED() << "Invalid JSON argument in OnMsgDOMUISend.";
+ return;
+ }
+ }
- delegate_->ProcessDOMUIMessage(message, content, kRequestId, kHasCallback);
+ delegate_->ProcessDOMUIMessage(message, value.get(),
+ kRequestId, kHasCallback);
}
void RenderViewHost::OnMsgForwardMessageToExternalHost(
@@ -1631,7 +1643,7 @@ void RenderViewHost::ForwardMessageFromExternalHost(const std::string& message,
}
void RenderViewHost::OnExtensionRequest(const std::string& name,
- const std::string& args,
+ const ListValue& args_holder,
int request_id,
bool has_callback) {
if (!ChildProcessSecurityPolicy::GetInstance()->
@@ -1642,6 +1654,15 @@ void RenderViewHost::OnExtensionRequest(const std::string& name,
return;
}
+ // The renderer sends the args in a 1-element list to make serialization
+ // easier.
+ Value* args = NULL;
+ if (!args_holder.IsType(Value::TYPE_LIST) ||
+ !static_cast<const ListValue*>(&args_holder)->Get(0, &args)) {
+ NOTREACHED();
+ return;
+ }
+
delegate_->ProcessDOMUIMessage(name, args, request_id, has_callback);
}
« no previous file with comments | « chrome/browser/renderer_host/render_view_host.h ('k') | chrome/browser/renderer_host/render_view_host_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698