// ui/webui/resources/js/browser_command/browser_command.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 UI_WEBUI_RESOURCES_JS_BROWSER_COMMAND_BROWSER_COMMAND_MOJOM_TEST_UTILS_H_
#define UI_WEBUI_RESOURCES_JS_BROWSER_COMMAND_BROWSER_COMMAND_MOJOM_TEST_UTILS_H_

#include "ui/webui/resources/js/browser_command/browser_command.mojom.h"


namespace browser_command::mojom {


class  CommandHandlerFactoryInterceptorForTesting : public CommandHandlerFactory {
  virtual CommandHandlerFactory* GetForwardingInterface() = 0;
  void CreateBrowserCommandHandler(::mojo::PendingReceiver<CommandHandler> handler) override;
};
class  CommandHandlerFactoryAsyncWaiter {
 public:
  explicit CommandHandlerFactoryAsyncWaiter(CommandHandlerFactory* proxy);

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

  ~CommandHandlerFactoryAsyncWaiter();

 private:
  CommandHandlerFactory* const proxy_;
};


class  CommandHandlerInterceptorForTesting : public CommandHandler {
  virtual CommandHandler* GetForwardingInterface() = 0;
  void CanExecuteCommand(Command command_id, CanExecuteCommandCallback callback) override;
  void ExecuteCommand(Command command_id, ClickInfoPtr click_info, ExecuteCommandCallback callback) override;
};
class  CommandHandlerAsyncWaiter {
 public:
  explicit CommandHandlerAsyncWaiter(CommandHandler* proxy);

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

  ~CommandHandlerAsyncWaiter();
  void CanExecuteCommand(
      Command command_id, bool* out_can_execute);
  bool CanExecuteCommand(Command command_id);
  void ExecuteCommand(
      Command command_id, ClickInfoPtr click_info, bool* out_command_executed);
  bool ExecuteCommand(Command command_id, ClickInfoPtr click_info);

 private:
  CommandHandler* const proxy_;
};




}  // browser_command::mojom

#endif  // UI_WEBUI_RESOURCES_JS_BROWSER_COMMAND_BROWSER_COMMAND_MOJOM_TEST_UTILS_H_