123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // Copyright 2016 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef COMPONENTS_UI_DEVTOOLS_DEVTOOLS_CLIENT_H_
- #define COMPONENTS_UI_DEVTOOLS_DEVTOOLS_CLIENT_H_
- #include <string>
- #include "components/ui_devtools/devtools_base_agent.h"
- #include "components/ui_devtools/devtools_export.h"
- #include "components/ui_devtools/dom.h"
- #include "components/ui_devtools/forward.h"
- #include "components/ui_devtools/protocol.h"
- namespace ui_devtools {
- class UiDevToolsServer;
- // Every UI component that wants to be inspectable must instantiate
- // this class and attach the corresponding backends/frontends (i.e: DOM, CSS,
- // etc). This client is then attached to the UiDevToolsServer and all messages
- // from this client are sent over the web socket owned by the server.
- class UI_DEVTOOLS_EXPORT UiDevToolsClient : public protocol::FrontendChannel {
- public:
- static const int kNotConnected = -1;
- UiDevToolsClient(const std::string& name, UiDevToolsServer* server);
- UiDevToolsClient(const UiDevToolsClient&) = delete;
- UiDevToolsClient& operator=(const UiDevToolsClient&) = delete;
- ~UiDevToolsClient() override;
- void AddAgent(std::unique_ptr<UiDevToolsAgent> agent);
- void Disconnect();
- void Dispatch(const std::string& json);
- bool connected() const;
- void set_connection_id(int connection_id);
- const std::string& name() const;
- private:
- void DisableAllAgents();
- void MaybeSendProtocolResponseOrNotification(
- std::unique_ptr<protocol::Serializable> message);
- // protocol::FrontendChannel
- void SendProtocolResponse(
- int callId,
- std::unique_ptr<protocol::Serializable> message) override;
- void SendProtocolNotification(
- std::unique_ptr<protocol::Serializable> message) override;
- void FlushProtocolNotifications() override;
- void FallThrough(int call_id,
- crdtp::span<uint8_t> method,
- crdtp::span<uint8_t> message) override;
- std::string name_;
- int connection_id_;
- std::vector<std::unique_ptr<UiDevToolsAgent>> agents_;
- protocol::UberDispatcher dispatcher_;
- UiDevToolsServer* server_;
- };
- } // namespace ui_devtools
- #endif // COMPONENTS_UI_DEVTOOLS_DEVTOOLS_CLIENT_H_
|