| 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);
|
| }
|
|
|
|
|