// components/browser_apis/tab_drag/tab_drag_api.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 COMPONENTS_BROWSER_APIS_TAB_DRAG_TAB_DRAG_API_MOJOM_TEST_UTILS_H_
#define COMPONENTS_BROWSER_APIS_TAB_DRAG_TAB_DRAG_API_MOJOM_TEST_UTILS_H_

#include "components/browser_apis/tab_drag/tab_drag_api.mojom.h"


namespace tabs_api::mojom {


class  TabDragServiceInterceptorForTesting : public TabDragService {
  virtual TabDragService* GetForwardingInterface() = 0;
  void StartDrag(const std::vector<::tabs_api::NodeId>& node_ids, const ::gfx::Point& start_point, int32_t tab_original_offset_x, float mouse_to_tab_x_ratio, StartDragCallback callback) override;
  void RegisterDropTarget(::mojo::PendingAssociatedRemote<DropTarget> target, ::mojo::PendingAssociatedReceiver<DropTargetRegistration> registration, RegisterDropTargetCallback callback) override;
};
class  TabDragServiceAsyncWaiter {
 public:
  explicit TabDragServiceAsyncWaiter(TabDragService* proxy);

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

  ~TabDragServiceAsyncWaiter();
  void StartDrag(
      const std::vector<::tabs_api::NodeId>& node_ids, const ::gfx::Point& start_point, int32_t tab_original_offset_x, float mouse_to_tab_x_ratio,
base::expected<
  ::std::monostate,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  TabDragService_StartDrag_ResponseParam_ResultPtr StartDrag(const std::vector<::tabs_api::NodeId>& node_ids, const ::gfx::Point& start_point, int32_t tab_original_offset_x, float mouse_to_tab_x_ratio);
  void RegisterDropTarget(
      ::mojo::PendingAssociatedRemote<DropTarget> target, ::mojo::PendingAssociatedReceiver<DropTargetRegistration> registration,
base::expected<
  ::std::monostate,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  TabDragService_RegisterDropTarget_ResponseParam_ResultPtr RegisterDropTarget(::mojo::PendingAssociatedRemote<DropTarget> target, ::mojo::PendingAssociatedReceiver<DropTargetRegistration> registration);

 private:
  TabDragService* const proxy_;
};


class  DropTargetRegistrationInterceptorForTesting : public DropTargetRegistration {
  virtual DropTargetRegistration* GetForwardingInterface() = 0;
  void OnBoundsChanged(const ::gfx::Rect& bounds) override;
};
class  DropTargetRegistrationAsyncWaiter {
 public:
  explicit DropTargetRegistrationAsyncWaiter(DropTargetRegistration* proxy);

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

  ~DropTargetRegistrationAsyncWaiter();

 private:
  DropTargetRegistration* const proxy_;
};


class  DropTargetInterceptorForTesting : public DropTarget {
  virtual DropTarget* GetForwardingInterface() = 0;
  void OnDragEntered(const std::vector<::tabs_api::NodeId>& source_tab_ids, const ::gfx::Point& local_point, float mouse_to_tab_x_ratio) override;
  void OnDrag(const ::gfx::Point& local_point) override;
  void OnDragLeave() override;
  void OnDrop(const std::vector<::tabs_api::NodeId>& source_tab_ids, const ::gfx::Point& local_point) override;
  void OnDragCancelled() override;
};
class  DropTargetAsyncWaiter {
 public:
  explicit DropTargetAsyncWaiter(DropTarget* proxy);

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

  ~DropTargetAsyncWaiter();

 private:
  DropTarget* const proxy_;
};




}  // tabs_api::mojom

#endif  // COMPONENTS_BROWSER_APIS_TAB_DRAG_TAB_DRAG_API_MOJOM_TEST_UTILS_H_