// components/browser_apis/tab_strip/tab_strip_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_STRIP_TAB_STRIP_API_MOJOM_TEST_UTILS_H_
#define COMPONENTS_BROWSER_APIS_TAB_STRIP_TAB_STRIP_API_MOJOM_TEST_UTILS_H_

#include "components/browser_apis/tab_strip/tab_strip_api.mojom.h"


namespace tabs_api::mojom {


class  TabStripServiceInterceptorForTesting : public TabStripService {
  virtual TabStripService* GetForwardingInterface() = 0;
  void GetTabs(GetTabsCallback callback) override;
  void GetTab(const ::tabs_api::NodeId& id, GetTabCallback callback) override;
  void CreateTabAt(const std::optional<::tabs_api::Position>& pos, const std::optional<::GURL>& url, CreateTabAtCallback callback) override;
  void CloseNodes(const std::vector<::tabs_api::NodeId>& ids, CloseNodesCallback callback) override;
  void ActivateTab(const ::tabs_api::NodeId& id, ActivateTabCallback callback) override;
  void SetSelectedTabs(const std::vector<::tabs_api::NodeId>& selection, const ::tabs_api::NodeId& tab_to_activate, SetSelectedTabsCallback callback) override;
  void MoveNode(const ::tabs_api::NodeId& id, const ::tabs_api::Position& position, MoveNodeCallback callback) override;
  void Update(::tabs_api::mojom::DataPtr data, const std::optional<std::vector<std::string>>& update_mask, UpdateCallback callback) override;
};
class  TabStripServiceAsyncWaiter {
 public:
  explicit TabStripServiceAsyncWaiter(TabStripService* proxy);

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

  ~TabStripServiceAsyncWaiter();
  void GetTabs(
      
base::expected<
  TabsSnapshotPtr,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  TabStripService_GetTabs_ResponseParam_ResultPtr GetTabs();
  void GetTab(
      const ::tabs_api::NodeId& id,
base::expected<
  ::tabs_api::mojom::TabPtr,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  TabStripService_GetTab_ResponseParam_ResultPtr GetTab(const ::tabs_api::NodeId& id);
  void CreateTabAt(
      const std::optional<::tabs_api::Position>& pos, const std::optional<::GURL>& url,
base::expected<
  ::tabs_api::mojom::TabPtr,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  TabStripService_CreateTabAt_ResponseParam_ResultPtr CreateTabAt(const std::optional<::tabs_api::Position>& pos, const std::optional<::GURL>& url);
  void CloseNodes(
      const std::vector<::tabs_api::NodeId>& ids,
base::expected<
  ::std::monostate,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  TabStripService_CloseNodes_ResponseParam_ResultPtr CloseNodes(const std::vector<::tabs_api::NodeId>& ids);
  void ActivateTab(
      const ::tabs_api::NodeId& id,
base::expected<
  ::std::monostate,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  TabStripService_ActivateTab_ResponseParam_ResultPtr ActivateTab(const ::tabs_api::NodeId& id);
  void SetSelectedTabs(
      const std::vector<::tabs_api::NodeId>& selection, const ::tabs_api::NodeId& tab_to_activate,
base::expected<
  ::std::monostate,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  TabStripService_SetSelectedTabs_ResponseParam_ResultPtr SetSelectedTabs(const std::vector<::tabs_api::NodeId>& selection, const ::tabs_api::NodeId& tab_to_activate);
  void MoveNode(
      const ::tabs_api::NodeId& id, const ::tabs_api::Position& position,
base::expected<
  ::std::monostate,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  TabStripService_MoveNode_ResponseParam_ResultPtr MoveNode(const ::tabs_api::NodeId& id, const ::tabs_api::Position& position);
  void Update(
      ::tabs_api::mojom::DataPtr data, const std::optional<std::vector<std::string>>& update_mask,
base::expected<
  ::tabs_api::mojom::DataPtr,
  ::mojo_base::mojom::ErrorPtr>* out_result);
  TabStripService_Update_ResponseParam_ResultPtr Update(::tabs_api::mojom::DataPtr data, const std::optional<std::vector<std::string>>& update_mask);

 private:
  TabStripService* const proxy_;
};


class  TabsObserverInterceptorForTesting : public TabsObserver {
  virtual TabsObserver* GetForwardingInterface() = 0;
  void OnTabEvents(std::vector<TabsEventPtr> events) override;
};
class  TabsObserverAsyncWaiter {
 public:
  explicit TabsObserverAsyncWaiter(TabsObserver* proxy);

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

  ~TabsObserverAsyncWaiter();

 private:
  TabsObserver* const proxy_;
};




}  // tabs_api::mojom

#endif  // COMPONENTS_BROWSER_APIS_TAB_STRIP_TAB_STRIP_API_MOJOM_TEST_UTILS_H_