// chrome/browser/geic/geic.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 CHROME_BROWSER_GEIC_GEIC_MOJOM_TEST_UTILS_H_
#define CHROME_BROWSER_GEIC_GEIC_MOJOM_TEST_UTILS_H_

#include "chrome/browser/geic/geic.mojom.h"


namespace geic::mojom {


class  GeicApiInterceptorForTesting : public GeicApi {
  virtual GeicApi* GetForwardingInterface() = 0;
};
class  GeicApiAsyncWaiter {
 public:
  explicit GeicApiAsyncWaiter(GeicApi* proxy);

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

  ~GeicApiAsyncWaiter();

 private:
  GeicApi* const proxy_;
};


class  GeicBrowserHostInterceptorForTesting : public GeicBrowserHost {
  virtual GeicBrowserHost* GetForwardingInterface() = 0;
  void RegisterClient(::mojo::PendingRemote<GeicClient> client, RegisterClientCallback callback) override;
  void GetFocusedTab(GetFocusedTabCallback callback) override;
  void GetContextFromFocusedTab(TabContextOptionsPtr options, GetContextFromFocusedTabCallback callback) override;
  void ClosePanel() override;
};
class  GeicBrowserHostAsyncWaiter {
 public:
  explicit GeicBrowserHostAsyncWaiter(GeicBrowserHost* proxy);

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

  ~GeicBrowserHostAsyncWaiter();
  void RegisterClient(
      ::mojo::PendingRemote<GeicClient> client, GeicInitialStatePtr* out_initial_state);
  GeicInitialStatePtr RegisterClient(::mojo::PendingRemote<GeicClient> client);
  void GetFocusedTab(
      FocusedTabDataPtr* out_data);
  FocusedTabDataPtr GetFocusedTab();
  void GetContextFromFocusedTab(
      TabContextOptionsPtr options,
base::expected<
  TabContextDataPtr,
  GetTabContextError>* out_result);
  GeicBrowserHost_GetContextFromFocusedTab_ResponseParam_ResultPtr GetContextFromFocusedTab(TabContextOptionsPtr options);

 private:
  GeicBrowserHost* const proxy_;
};


class  GeicClientInterceptorForTesting : public GeicClient {
  virtual GeicClient* GetForwardingInterface() = 0;
  void OnFocusedTabChanged(FocusedTabDataPtr data) override;
};
class  GeicClientAsyncWaiter {
 public:
  explicit GeicClientAsyncWaiter(GeicClient* proxy);

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

  ~GeicClientAsyncWaiter();

 private:
  GeicClient* const proxy_;
};




}  // geic::mojom

#endif  // CHROME_BROWSER_GEIC_GEIC_MOJOM_TEST_UTILS_H_