| Index: headless/lib/browser/headless_devtools_client_impl.h
|
| diff --git a/headless/lib/browser/headless_devtools_client_impl.h b/headless/lib/browser/headless_devtools_client_impl.h
|
| index fb5442cda44deeba796d58a2a5f287661db84e18..002e934df508ac98b69578787a86b7ccc65bb539 100644
|
| --- a/headless/lib/browser/headless_devtools_client_impl.h
|
| +++ b/headless/lib/browser/headless_devtools_client_impl.h
|
| @@ -107,24 +107,25 @@ class HeadlessDevToolsClientImpl : public HeadlessDevToolsClient,
|
| base::Callback<void(const base::Value&)> callback) override;
|
| void SendMessage(const char* method,
|
| base::Callback<void()> callback) override;
|
| + void RegisterEventHandler(
|
| + const char* method,
|
| + base::Callback<void(const base::Value&)> callback) override;
|
|
|
| void AttachToHost(content::DevToolsAgentHost* agent_host);
|
| void DetachFromHost(content::DevToolsAgentHost* agent_host);
|
|
|
| private:
|
| - // Represents a message for which we are still waiting for a reply. Contains
|
| - // a callback with or without a result parameter depending on the message that
|
| - // is pending.
|
| - struct PendingMessage {
|
| - PendingMessage();
|
| - PendingMessage(PendingMessage&& other);
|
| - explicit PendingMessage(base::Callback<void()> callback);
|
| - explicit PendingMessage(base::Callback<void(const base::Value&)> callback);
|
| - ~PendingMessage();
|
| -
|
| - PendingMessage& operator=(PendingMessage&& other);
|
| -
|
| - // TODO(skyostil): Use a class union once allowed.
|
| + // Contains a callback with or without a result parameter depending on the
|
| + // message type.
|
| + struct Callback {
|
| + Callback();
|
| + Callback(Callback&& other);
|
| + explicit Callback(base::Callback<void()> callback);
|
| + explicit Callback(base::Callback<void(const base::Value&)> callback);
|
| + ~Callback();
|
| +
|
| + Callback& operator=(Callback&& other);
|
| +
|
| base::Callback<void()> callback;
|
| base::Callback<void(const base::Value&)> callback_with_result;
|
| };
|
| @@ -141,9 +142,14 @@ class HeadlessDevToolsClientImpl : public HeadlessDevToolsClient,
|
| template <typename CallbackType>
|
| void SendMessageWithoutParams(const char* method, CallbackType callback);
|
|
|
| + bool DispatchMessageReply(const base::DictionaryValue& message_dict);
|
| + bool DispatchEvent(const base::DictionaryValue& message_dict);
|
| +
|
| content::DevToolsAgentHost* agent_host_; // Not owned.
|
| int next_message_id_;
|
| - std::unordered_map<int, PendingMessage> pending_messages_;
|
| + std::unordered_map<int, Callback> pending_messages_;
|
| + std::unordered_map<std::string, base::Callback<void(const base::Value&)>>
|
| + event_handlers_;
|
|
|
| accessibility::Domain accessibility_domain_;
|
| animation::Domain animation_domain_;
|
|
|