// ui/webui/resources/js/tracked_element/tracked_element.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_TRACKED_ELEMENT_TRACKED_ELEMENT_MOJOM_TEST_UTILS_H_
#define UI_WEBUI_RESOURCES_JS_TRACKED_ELEMENT_TRACKED_ELEMENT_MOJOM_TEST_UTILS_H_

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


namespace tracked_element::mojom {


class  TrackedElementHandlerInterceptorForTesting : public TrackedElementHandler {
  virtual TrackedElementHandler* GetForwardingInterface() = 0;
  void SetManager(::mojo::PendingRemote<TrackedElementManager> observer) override;
  void TrackedElementCanHighlightChanged(TrackedElementIdentifierPtr identifier, bool can_higlight) override;
  void TrackedElementVisibilityChanged(TrackedElementIdentifierPtr identifier, bool visible, const ::gfx::RectF& rect) override;
  void TrackedElementActivated(TrackedElementIdentifierPtr identifier) override;
  void TrackedElementCustomEvent(TrackedElementIdentifierPtr identifier, const std::string& custom_event_name) override;
};
class  TrackedElementHandlerAsyncWaiter {
 public:
  explicit TrackedElementHandlerAsyncWaiter(TrackedElementHandler* proxy);

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

  ~TrackedElementHandlerAsyncWaiter();

 private:
  TrackedElementHandler* const proxy_;
};


class  TrackedElementManagerInterceptorForTesting : public TrackedElementManager {
  virtual TrackedElementManager* GetForwardingInterface() = 0;
  void OnElementHighlightChanged(TrackedElementIdentifierPtr identifier, bool highlighted) override;
  void ClickElement(TrackedElementIdentifierPtr identifier, ClickElementCallback callback) override;
  void FocusElement(TrackedElementIdentifierPtr identifier, FocusElementCallback callback) override;
  void SelectTab(TrackedElementIdentifierPtr identifier, uint32_t index, SelectTabCallback callback) override;
  void SelectDropdownItem(TrackedElementIdentifierPtr identifier, uint32_t index, SelectDropdownItemCallback callback) override;
  void EnterText(TrackedElementIdentifierPtr identifier, const ::std::u16string& text, TextEntryMode mode, EnterTextCallback callback) override;
  void Confirm(TrackedElementIdentifierPtr identifier, ConfirmCallback callback) override;
};
class  TrackedElementManagerAsyncWaiter {
 public:
  explicit TrackedElementManagerAsyncWaiter(TrackedElementManager* proxy);

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

  ~TrackedElementManagerAsyncWaiter();
  void ClickElement(
      TrackedElementIdentifierPtr identifier, bool* out_success);
  bool ClickElement(TrackedElementIdentifierPtr identifier);
  void FocusElement(
      TrackedElementIdentifierPtr identifier, bool* out_success);
  bool FocusElement(TrackedElementIdentifierPtr identifier);
  void SelectTab(
      TrackedElementIdentifierPtr identifier, uint32_t index, bool* out_success);
  bool SelectTab(TrackedElementIdentifierPtr identifier, uint32_t index);
  void SelectDropdownItem(
      TrackedElementIdentifierPtr identifier, uint32_t index, bool* out_success);
  bool SelectDropdownItem(TrackedElementIdentifierPtr identifier, uint32_t index);
  void EnterText(
      TrackedElementIdentifierPtr identifier, const ::std::u16string& text, TextEntryMode mode, bool* out_success);
  bool EnterText(TrackedElementIdentifierPtr identifier, const ::std::u16string& text, TextEntryMode mode);
  void Confirm(
      TrackedElementIdentifierPtr identifier, bool* out_success);
  bool Confirm(TrackedElementIdentifierPtr identifier);

 private:
  TrackedElementManager* const proxy_;
};




}  // tracked_element::mojom

#endif  // UI_WEBUI_RESOURCES_JS_TRACKED_ELEMENT_TRACKED_ELEMENT_MOJOM_TEST_UTILS_H_