// third_party/blink/public/mojom/annotation/annotation.mojom-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_ANNOTATION_ANNOTATION_MOJOM_TEST_UTILS_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_ANNOTATION_ANNOTATION_MOJOM_TEST_UTILS_H_

#include "third_party/blink/public/mojom/annotation/annotation.mojom.h"
#include "third_party/blink/public/common/common_export.h"


namespace blink::mojom {


class BLINK_COMMON_EXPORT AnnotationAgentInterceptorForTesting : public AnnotationAgent {
  virtual AnnotationAgent* GetForwardingInterface() = 0;
  void ScrollIntoView(bool applies_focus) override;
};
class BLINK_COMMON_EXPORT AnnotationAgentAsyncWaiter {
 public:
  explicit AnnotationAgentAsyncWaiter(AnnotationAgent* proxy);

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

  ~AnnotationAgentAsyncWaiter();

 private:
  AnnotationAgent* const proxy_;
};


class BLINK_COMMON_EXPORT AnnotationAgentHostInterceptorForTesting : public AnnotationAgentHost {
  virtual AnnotationAgentHost* GetForwardingInterface() = 0;
  void DidFinishAttachment(const ::gfx::Rect& document_relative_rect, AttachmentResult attachment_result) override;
};
class BLINK_COMMON_EXPORT AnnotationAgentHostAsyncWaiter {
 public:
  explicit AnnotationAgentHostAsyncWaiter(AnnotationAgentHost* proxy);

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

  ~AnnotationAgentHostAsyncWaiter();

 private:
  AnnotationAgentHost* const proxy_;
};


class BLINK_COMMON_EXPORT AnnotationAgentContainerInterceptorForTesting : public AnnotationAgentContainer {
  virtual AnnotationAgentContainer* GetForwardingInterface() = 0;
  void CreateAgent(::mojo::PendingRemote<AnnotationAgentHost> host_remote, ::mojo::PendingReceiver<AnnotationAgent> agent_receiver, AnnotationType type, SelectorPtr selector, std::optional<int32_t> search_range_start_node_id) override;
  void CreateAgentFromSelection(AnnotationType type, CreateAgentFromSelectionCallback callback) override;
  void RemoveAgentsOfType(AnnotationType type) override;
};
class BLINK_COMMON_EXPORT AnnotationAgentContainerAsyncWaiter {
 public:
  explicit AnnotationAgentContainerAsyncWaiter(AnnotationAgentContainer* proxy);

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

  ~AnnotationAgentContainerAsyncWaiter();
  void CreateAgentFromSelection(
      AnnotationType type, SelectorCreationResultPtr* out_result, ::shared_highlighting::LinkGenerationError* out_error, ::shared_highlighting::LinkGenerationReadyStatus* out_ready_status);
  

 private:
  AnnotationAgentContainer* const proxy_;
};




}  // blink::mojom

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_ANNOTATION_ANNOTATION_MOJOM_TEST_UTILS_H_