// third_party/blink/public/mojom/devtools/devtools_agent.mojom-blink-test-utils.h is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BLINK_PUBLIC_MOJOM_DEVTOOLS_DEVTOOLS_AGENT_MOJOM_BLINK_TEST_UTILS_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_DEVTOOLS_DEVTOOLS_AGENT_MOJOM_BLINK_TEST_UTILS_H_

#include "third_party/blink/public/mojom/devtools/devtools_agent.mojom-blink.h"
#include "third_party/blink/renderer/platform/platform_export.h"


namespace blink::mojom::blink {


class PLATFORM_EXPORT DevToolsAgentInterceptorForTesting : public DevToolsAgent {
  virtual DevToolsAgent* GetForwardingInterface() = 0;
  void AttachDevToolsSession(::mojo::PendingAssociatedRemote<DevToolsSessionHost> host, ::mojo::PendingAssociatedReceiver<DevToolsSession> session, ::mojo::PendingReceiver<DevToolsSession> io_session, DevToolsSessionStatePtr reattach_session_state, bool client_expects_binary_responses, bool client_is_trusted, const ::blink::String& session_id, bool session_waits_for_debugger) override;
  void InspectElement(const ::gfx::Point& point) override;
  void ReportChildTargets(bool report, bool wait_for_debugger, ReportChildTargetsCallback callback) override;
};
class PLATFORM_EXPORT DevToolsAgentAsyncWaiter {
 public:
  explicit DevToolsAgentAsyncWaiter(DevToolsAgent* proxy);

  DevToolsAgentAsyncWaiter(const DevToolsAgentAsyncWaiter&) = delete;
  DevToolsAgentAsyncWaiter& operator=(const DevToolsAgentAsyncWaiter&) = delete;

  ~DevToolsAgentAsyncWaiter();
  void ReportChildTargets(
      bool report, bool wait_for_debugger);
  

 private:
  DevToolsAgent* const proxy_;
};


class PLATFORM_EXPORT DevToolsAgentHostInterceptorForTesting : public DevToolsAgentHost {
  virtual DevToolsAgentHost* GetForwardingInterface() = 0;
  void ChildTargetCreated(::mojo::PendingRemote<DevToolsAgent> worker_devtools_agent, ::mojo::PendingReceiver<DevToolsAgentHost> worker_devtools_agent_host, const ::blink::KURL& url, const ::blink::String& name, const ::base::UnguessableToken& devtools_worker_token, bool waiting_for_debugger, DevToolsExecutionContextType context_type) override;
  void MainThreadDebuggerPaused() override;
  void MainThreadDebuggerResumed() override;
  void BringToForeground() override;
};
class PLATFORM_EXPORT DevToolsAgentHostAsyncWaiter {
 public:
  explicit DevToolsAgentHostAsyncWaiter(DevToolsAgentHost* proxy);

  DevToolsAgentHostAsyncWaiter(const DevToolsAgentHostAsyncWaiter&) = delete;
  DevToolsAgentHostAsyncWaiter& operator=(const DevToolsAgentHostAsyncWaiter&) = delete;

  ~DevToolsAgentHostAsyncWaiter();

 private:
  DevToolsAgentHost* const proxy_;
};


class PLATFORM_EXPORT DevToolsSessionInterceptorForTesting : public DevToolsSession {
  virtual DevToolsSession* GetForwardingInterface() = 0;
  void DispatchProtocolCommand(int32_t call_id, const ::blink::String& method, ::base::span<const ::uint8_t> message, const ::blink::String& fallthrough_data) override;
  void UnpauseAndTerminate() override;
};
class PLATFORM_EXPORT DevToolsSessionAsyncWaiter {
 public:
  explicit DevToolsSessionAsyncWaiter(DevToolsSession* proxy);

  DevToolsSessionAsyncWaiter(const DevToolsSessionAsyncWaiter&) = delete;
  DevToolsSessionAsyncWaiter& operator=(const DevToolsSessionAsyncWaiter&) = delete;

  ~DevToolsSessionAsyncWaiter();

 private:
  DevToolsSession* const proxy_;
};


class PLATFORM_EXPORT DevToolsSessionHostInterceptorForTesting : public DevToolsSessionHost {
  virtual DevToolsSessionHost* GetForwardingInterface() = 0;
  void DispatchProtocolResponse(DevToolsMessagePtr message, int32_t call_id, RendererOriginatingSessionStatePtr updates) override;
  void DispatchProtocolNotification(DevToolsMessagePtr message, RendererOriginatingSessionStatePtr updates) override;
};
class PLATFORM_EXPORT DevToolsSessionHostAsyncWaiter {
 public:
  explicit DevToolsSessionHostAsyncWaiter(DevToolsSessionHost* proxy);

  DevToolsSessionHostAsyncWaiter(const DevToolsSessionHostAsyncWaiter&) = delete;
  DevToolsSessionHostAsyncWaiter& operator=(const DevToolsSessionHostAsyncWaiter&) = delete;

  ~DevToolsSessionHostAsyncWaiter();

 private:
  DevToolsSessionHost* const proxy_;
};




}  // blink::mojom::blink

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_DEVTOOLS_DEVTOOLS_AGENT_MOJOM_BLINK_TEST_UTILS_H_