| Index: chrome/browser/devtools/devtools_embedder_message_dispatcher.cc
|
| diff --git a/chrome/browser/devtools/devtools_embedder_message_dispatcher.cc b/chrome/browser/devtools/devtools_embedder_message_dispatcher.cc
|
| index 490c258a96cc87e1e0f0ebeb4de3300ff96c6ddb..10f703bbc23be21e0b879def2f3189b164a5dfe4 100644
|
| --- a/chrome/browser/devtools/devtools_embedder_message_dispatcher.cc
|
| +++ b/chrome/browser/devtools/devtools_embedder_message_dispatcher.cc
|
| @@ -65,11 +65,7 @@ template <typename T, typename... Ts>
|
| struct ParamTuple<T, Ts...> {
|
| bool Parse(const base::ListValue& list,
|
| const base::ListValue::const_iterator& it) {
|
| - if (it == list.end())
|
| - return false;
|
| - if (!GetValue(*it, &head))
|
| - return false;
|
| - return tail.Parse(list, it + 1);
|
| + return it != list.end() && GetValue(*it, &head) && tail.Parse(list, it + 1);
|
| }
|
|
|
| template <typename H, typename... As>
|
| @@ -82,13 +78,12 @@ struct ParamTuple<T, Ts...> {
|
| };
|
|
|
| template<typename... As>
|
| -bool ParseAndHandle(const base::Callback<void(As...)>& handler,
|
| +void ParseAndHandle(const base::Callback<void(int, As...)>& handler,
|
| + int request_id,
|
| const base::ListValue& list) {
|
| ParamTuple<As...> tuple;
|
| - if (!tuple.Parse(list, list.begin()))
|
| - return false;
|
| - tuple.Apply(handler);
|
| - return true;
|
| + if (tuple.Parse(list, list.begin()))
|
| + tuple.Apply(handler, request_id);
|
| }
|
|
|
| } // namespace
|
| @@ -105,43 +100,32 @@ class DispatcherImpl : public DevToolsEmbedderMessageDispatcher {
|
| public:
|
| ~DispatcherImpl() override {}
|
|
|
| - bool Dispatch(const std::string& method,
|
| - const base::ListValue* params,
|
| - std::string* error) override {
|
| + void Dispatch(int request_id,
|
| + const std::string& method,
|
| + const base::ListValue* params) override {
|
| HandlerMap::iterator it = handlers_.find(method);
|
| - if (it == handlers_.end())
|
| - return false;
|
| -
|
| - if (it->second.Run(*params))
|
| - return true;
|
| -
|
| - if (error)
|
| - *error = "Invalid frontend host message parameters: " + method;
|
| - return false;
|
| - }
|
| -
|
| - typedef base::Callback<bool(const base::ListValue&)> Handler;
|
| - void RegisterHandler(const std::string& method, const Handler& handler) {
|
| - handlers_[method] = handler;
|
| + if (it != handlers_.end())
|
| + it->second.Run(request_id, *params);
|
| }
|
|
|
| template<typename T, typename... As>
|
| void RegisterHandler(const std::string& method,
|
| - void (T::*handler)(As...), T* delegate) {
|
| + void (T::*handler)(int, As...), T* delegate) {
|
| handlers_[method] = base::Bind(&ParseAndHandle<As...>,
|
| base::Bind(handler,
|
| base::Unretained(delegate)));
|
| }
|
|
|
| private:
|
| - typedef std::map<std::string, Handler> HandlerMap;
|
| + using Handler = base::Callback<void(int, const base::ListValue&)>;
|
| + using HandlerMap = std::map<std::string, Handler>;
|
| HandlerMap handlers_;
|
| };
|
|
|
| -
|
| +// static
|
| DevToolsEmbedderMessageDispatcher*
|
| - DevToolsEmbedderMessageDispatcher::createForDevToolsFrontend(
|
| - Delegate* delegate) {
|
| +DevToolsEmbedderMessageDispatcher::CreateForDevToolsFrontend(
|
| + Delegate* delegate) {
|
| DispatcherImpl* d = new DispatcherImpl();
|
|
|
| d->RegisterHandler("bringToFront", &Delegate::ActivateWindow, delegate);
|
| @@ -179,7 +163,7 @@ DevToolsEmbedderMessageDispatcher*
|
| &Delegate::SetDevicesUpdatesEnabled, delegate);
|
| d->RegisterHandler("sendMessageToBrowser",
|
| &Delegate::SendMessageToBrowser, delegate);
|
| - d->RegisterHandler("recordActionUMA",
|
| - &Delegate::RecordActionUMA, delegate);
|
| + d->RegisterHandler("recordActionUMA", &Delegate::RecordActionUMA, delegate);
|
| + d->RegisterHandler("sendJsonRequest", &Delegate::SendJsonRequest, delegate);
|
| return d;
|
| }
|
|
|