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

Unified Diff: chrome/browser/devtools/devtools_embedder_message_dispatcher.cc

Issue 912863002: [DevTools] Remote JSON requests from javascript (Chromium side) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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/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;
}

Powered by Google App Engine
This is Rietveld 408576698