// Copyright 2021 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 CONTENT_BROWSER_DEVTOOLS_PROTOCOL_VISUAL_DEBUGGER_HANDLER_H_
#define CONTENT_BROWSER_DEVTOOLS_PROTOCOL_VISUAL_DEBUGGER_HANDLER_H_

#include "base/memory/weak_ptr.h"
#include "content/browser/devtools/protocol/browser.h"
#include "content/browser/devtools/protocol/devtools_domain_handler.h"
#include "content/browser/devtools/protocol/visual_debugger.h"

namespace content {
namespace protocol {

class VisualDebuggerHandler : public DevToolsDomainHandler,
                              public VisualDebugger::Backend {
 public:
  VisualDebuggerHandler();
  ~VisualDebuggerHandler() override;

 private:
  // DevToolsDomainHandler:
  void Wire(UberDispatcher* dispatcher) override;

  DispatchResponse FilterStream(
      std::unique_ptr<protocol::DictionaryValue> in_filter) override;

  DispatchResponse StartStream() override;
  DispatchResponse StopStream() override;

  void OnFrameResponse(base::Value json);

  bool enabled_ = false;
  std::unique_ptr<VisualDebugger::Frontend> frontend_;
  base::WeakPtrFactory<VisualDebuggerHandler> weak_ptr_factory_{this};
};

}  // namespace protocol
}  // namespace content

#endif  // CONTENT_BROWSER_DEVTOOLS_PROTOCOL_VISUAL_DEBUGGER_HANDLER_H_
