// chrome/common/compose/compose.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_COMMON_COMPOSE_COMPOSE_MOJOM_TEST_UTILS_H_
#define CHROME_COMMON_COMPOSE_COMPOSE_MOJOM_TEST_UTILS_H_

#include "chrome/common/compose/compose.mojom.h"


namespace compose::mojom {


class  ComposeSessionUntrustedPageHandlerFactoryInterceptorForTesting : public ComposeSessionUntrustedPageHandlerFactory {
  virtual ComposeSessionUntrustedPageHandlerFactory* GetForwardingInterface() = 0;
  void CreateComposeSessionUntrustedPageHandler(::mojo::PendingReceiver<ComposeClientUntrustedPageHandler> client_handler, ::mojo::PendingReceiver<ComposeSessionUntrustedPageHandler> handler, ::mojo::PendingRemote<ComposeUntrustedDialog> dialog) override;
};
class  ComposeSessionUntrustedPageHandlerFactoryAsyncWaiter {
 public:
  explicit ComposeSessionUntrustedPageHandlerFactoryAsyncWaiter(ComposeSessionUntrustedPageHandlerFactory* proxy);

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

  ~ComposeSessionUntrustedPageHandlerFactoryAsyncWaiter();

 private:
  ComposeSessionUntrustedPageHandlerFactory* const proxy_;
};


class  ComposeSessionUntrustedPageHandlerInterceptorForTesting : public ComposeSessionUntrustedPageHandler {
  virtual ComposeSessionUntrustedPageHandler* GetForwardingInterface() = 0;
  void LogCancelEdit() override;
  void Compose(const std::string& input, InputMode mode, bool edited) override;
  void Rewrite(StyleModifier style) override;
  void LogEditInput() override;
  void SaveWebUIState(const std::string& webui_state) override;
  void AcceptComposeResult(AcceptComposeResultCallback callback) override;
  void RequestInitialState(RequestInitialStateCallback callback) override;
  void Undo(UndoCallback callback) override;
  void RecoverFromErrorState(RecoverFromErrorStateCallback callback) override;
  void Redo(RedoCallback callback) override;
  void OpenBugReportingLink() override;
  void OpenComposeLearnMorePage() override;
  void OpenEnterpriseComposeLearnMorePage() override;
  void OpenFeedbackSurveyLink() override;
  void OpenSignInPage() override;
  void SetUserFeedback(UserFeedback feedback) override;
  void EditResult(const std::string& new_result, EditResultCallback callback) override;
};
class  ComposeSessionUntrustedPageHandlerAsyncWaiter {
 public:
  explicit ComposeSessionUntrustedPageHandlerAsyncWaiter(ComposeSessionUntrustedPageHandler* proxy);

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

  ~ComposeSessionUntrustedPageHandlerAsyncWaiter();
  void AcceptComposeResult(
      bool* out_success);
  bool AcceptComposeResult();
  void RequestInitialState(
      OpenMetadataPtr* out_initial_state);
  OpenMetadataPtr RequestInitialState();
  void Undo(
      ComposeStatePtr* out_last_state);
  ComposeStatePtr Undo();
  void RecoverFromErrorState(
      ComposeStatePtr* out_state_before_error);
  ComposeStatePtr RecoverFromErrorState();
  void Redo(
      ComposeStatePtr* out_next_state);
  ComposeStatePtr Redo();
  void EditResult(
      const std::string& new_result, bool* out_is_edited);
  bool EditResult(const std::string& new_result);

 private:
  ComposeSessionUntrustedPageHandler* const proxy_;
};


class  ComposeClientUntrustedPageHandlerInterceptorForTesting : public ComposeClientUntrustedPageHandler {
  virtual ComposeClientUntrustedPageHandler* GetForwardingInterface() = 0;
  void ShowUI() override;
  void CloseUI(CloseReason reason) override;
  void CompleteFirstRun() override;
  void OpenComposeSettings() override;
};
class  ComposeClientUntrustedPageHandlerAsyncWaiter {
 public:
  explicit ComposeClientUntrustedPageHandlerAsyncWaiter(ComposeClientUntrustedPageHandler* proxy);

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

  ~ComposeClientUntrustedPageHandlerAsyncWaiter();

 private:
  ComposeClientUntrustedPageHandler* const proxy_;
};


class  ComposeUntrustedDialogInterceptorForTesting : public ComposeUntrustedDialog {
  virtual ComposeUntrustedDialog* GetForwardingInterface() = 0;
  void ResponseReceived(ComposeResponsePtr response) override;
  void PartialResponseReceived(PartialComposeResponsePtr partial_response) override;
};
class  ComposeUntrustedDialogAsyncWaiter {
 public:
  explicit ComposeUntrustedDialogAsyncWaiter(ComposeUntrustedDialog* proxy);

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

  ~ComposeUntrustedDialogAsyncWaiter();

 private:
  ComposeUntrustedDialog* const proxy_;
};




}  // compose::mojom

#endif  // CHROME_COMMON_COMPOSE_COMPOSE_MOJOM_TEST_UTILS_H_