// chrome/browser/glic/host/glic.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_GLIC_HOST_GLIC_MOJOM_TEST_UTILS_H_
#define CHROME_BROWSER_GLIC_HOST_GLIC_MOJOM_TEST_UTILS_H_

#include "chrome/browser/glic/host/glic.mojom.h"


namespace glic::mojom {


class  PinCandidatesObserverInterceptorForTesting : public PinCandidatesObserver {
  virtual PinCandidatesObserver* GetForwardingInterface() = 0;
  void OnPinCandidatesChanged(std::vector<PinCandidatePtr> candidates) override;
};
class  PinCandidatesObserverAsyncWaiter {
 public:
  explicit PinCandidatesObserverAsyncWaiter(PinCandidatesObserver* proxy);

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

  ~PinCandidatesObserverAsyncWaiter();

 private:
  PinCandidatesObserver* const proxy_;
};


class  ActorClientInterceptorForTesting : public ActorClient {
  virtual ActorClient* GetForwardingInterface() = 0;
  void RequestToShowCredentialSelectionDialog(::actor::webui::mojom::SelectCredentialDialogRequestPtr request, RequestToShowCredentialSelectionDialogCallback callback) override;
  void RequestToShowAutofillSuggestionsDialog(::actor::webui::mojom::SelectAutofillSuggestionsDialogRequestPtr request, RequestToShowAutofillSuggestionsDialogCallback callback) override;
  void RequestToShowUserConfirmationDialog(::actor::webui::mojom::UserConfirmationDialogRequestPtr request, RequestToShowUserConfirmationDialogCallback callback) override;
  void RequestToConfirmNavigation(::actor::webui::mojom::NavigationConfirmationRequestPtr request, RequestToConfirmNavigationCallback callback) override;
  void NotifyActorTaskStateChanged(int32_t task_id, ActorTaskState state) override;
  void RequestToShowGmailOtpOptInDialog(::actor::webui::mojom::GmailOtpOptInRequestPtr request, RequestToShowGmailOtpOptInDialogCallback callback) override;
  void RequestToShowGmailOtpConfirmationDialog(::actor::webui::mojom::GmailOtpConfirmationRequestPtr request, RequestToShowGmailOtpConfirmationDialogCallback callback) override;
};
class  ActorClientAsyncWaiter {
 public:
  explicit ActorClientAsyncWaiter(ActorClient* proxy);

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

  ~ActorClientAsyncWaiter();
  void RequestToShowCredentialSelectionDialog(
      ::actor::webui::mojom::SelectCredentialDialogRequestPtr request, ::actor::webui::mojom::SelectCredentialDialogResponsePtr* out_response);
  ::actor::webui::mojom::SelectCredentialDialogResponsePtr RequestToShowCredentialSelectionDialog(::actor::webui::mojom::SelectCredentialDialogRequestPtr request);
  void RequestToShowAutofillSuggestionsDialog(
      ::actor::webui::mojom::SelectAutofillSuggestionsDialogRequestPtr request, ::actor::webui::mojom::SelectAutofillSuggestionsDialogResponsePtr* out_response);
  ::actor::webui::mojom::SelectAutofillSuggestionsDialogResponsePtr RequestToShowAutofillSuggestionsDialog(::actor::webui::mojom::SelectAutofillSuggestionsDialogRequestPtr request);
  void RequestToShowUserConfirmationDialog(
      ::actor::webui::mojom::UserConfirmationDialogRequestPtr request, ::actor::webui::mojom::UserConfirmationDialogResponsePtr* out_response);
  ::actor::webui::mojom::UserConfirmationDialogResponsePtr RequestToShowUserConfirmationDialog(::actor::webui::mojom::UserConfirmationDialogRequestPtr request);
  void RequestToConfirmNavigation(
      ::actor::webui::mojom::NavigationConfirmationRequestPtr request, ::actor::webui::mojom::NavigationConfirmationResponsePtr* out_response);
  ::actor::webui::mojom::NavigationConfirmationResponsePtr RequestToConfirmNavigation(::actor::webui::mojom::NavigationConfirmationRequestPtr request);
  void RequestToShowGmailOtpOptInDialog(
      ::actor::webui::mojom::GmailOtpOptInRequestPtr request, ::actor::webui::mojom::GmailOtpOptInResultPtr* out_result);
  ::actor::webui::mojom::GmailOtpOptInResultPtr RequestToShowGmailOtpOptInDialog(::actor::webui::mojom::GmailOtpOptInRequestPtr request);
  void RequestToShowGmailOtpConfirmationDialog(
      ::actor::webui::mojom::GmailOtpConfirmationRequestPtr request, ::actor::webui::mojom::GmailOtpConfirmationResultPtr* out_result);
  ::actor::webui::mojom::GmailOtpConfirmationResultPtr RequestToShowGmailOtpConfirmationDialog(::actor::webui::mojom::GmailOtpConfirmationRequestPtr request);

 private:
  ActorClient* const proxy_;
};


class  ActorHandlerInterceptorForTesting : public ActorHandler {
  virtual ActorHandler* GetForwardingInterface() = 0;
  void AutofillSuggestionDialogOnFormPresented(int32_t task_id, ::actor::webui::mojom::AutofillSuggestionDialogOnFormPresentedParamsPtr params) override;
  void AutofillSuggestionDialogOnFormPreviewChanged(int32_t task_id, ::actor::webui::mojom::AutofillSuggestionDialogOnFormPreviewChangedParamsPtr params) override;
  void AutofillSuggestionDialogOnFormConfirmed(int32_t task_id, ::actor::webui::mojom::AutofillSuggestionDialogOnFormConfirmedParamsPtr params) override;
  void GetContextForActorFromTab(int32_t tab_id, TabContextOptionsPtr options, GetContextForActorFromTabCallback callback) override;
  void CreateTask(::actor::webui::mojom::TaskOptionsPtr task_options, CreateTaskCallback callback) override;
  void PerformActions(const std::vector<uint8_t>& actions_proto, PerformActionsCallback callback) override;
  void CancelActions(int32_t task_id, CancelActionsCallback callback) override;
  void StopActorTask(int32_t task_id, ActorTaskStopReason stop_reason) override;
  void PauseActorTask(int32_t task_id, ActorTaskPauseReason pause_reason, std::optional<int32_t> tab_id) override;
  void ResumeActorTask(int32_t task_id, TabContextOptionsPtr context_options, ResumeActorTaskCallback callback) override;
  void InterruptActorTask(int32_t task_id, std::optional<ActorTaskInterruptReason> interrupt_reason) override;
  void UninterruptActorTask(int32_t task_id) override;
  void UpdateActorTaskStepProgress(int32_t task_id, const std::string& step_progress) override;
  void CreateActorTab(int32_t task_id, CreateActorTabOptionsPtr options, CreateActorTabCallback callback) override;
  void LogBeginAsyncEvent(uint64_t event_async_id, int32_t task_id, const std::string& event, const std::string& details) override;
  void LogEndAsyncEvent(uint64_t event_async_id, const std::string& details) override;
  void LogInstantEvent(int32_t task_id, const std::string& event, const std::string& details) override;
  void JournalClear() override;
  void JournalSnapshot(bool clear_journal, JournalSnapshotCallback callback) override;
  void JournalStart(uint64_t max_bytes, bool capture_screenshots) override;
  void JournalStop() override;
  void JournalRecordFeedback(bool positive, const std::string& reason) override;
};
class  ActorHandlerAsyncWaiter {
 public:
  explicit ActorHandlerAsyncWaiter(ActorHandler* proxy);

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

  ~ActorHandlerAsyncWaiter();
  void GetContextForActorFromTab(
      int32_t tab_id, TabContextOptionsPtr options, GetContextResultPtr* out_result);
  GetContextResultPtr GetContextForActorFromTab(int32_t tab_id, TabContextOptionsPtr options);
  void CreateTask(
      ::actor::webui::mojom::TaskOptionsPtr task_options,
base::expected<
  int32_t,
  CreateTaskErrorReason>* out_result);
  ActorHandler_CreateTask_ResponseParam_ResultPtr CreateTask(::actor::webui::mojom::TaskOptionsPtr task_options);
  void PerformActions(
      const std::vector<uint8_t>& actions_proto,
base::expected<
  ::mojo_base::ProtoWrapper,
  PerformActionsErrorReason>* out_result);
  ActorHandler_PerformActions_ResponseParam_ResultPtr PerformActions(const std::vector<uint8_t>& actions_proto);
  void CancelActions(
      int32_t task_id, CancelActionsResult* out_result);
  CancelActionsResult CancelActions(int32_t task_id);
  void ResumeActorTask(
      int32_t task_id, TabContextOptionsPtr context_options, GetContextResultWithActionResultCodePtr* out_result);
  GetContextResultWithActionResultCodePtr ResumeActorTask(int32_t task_id, TabContextOptionsPtr context_options);
  void CreateActorTab(
      int32_t task_id, CreateActorTabOptionsPtr options, TabDataPtr* out_tab_data);
  TabDataPtr CreateActorTab(int32_t task_id, CreateActorTabOptionsPtr options);
  void JournalSnapshot(
      bool clear_journal, JournalPtr* out_journal);
  JournalPtr JournalSnapshot(bool clear_journal);

 private:
  ActorHandler* const proxy_;
};


class  AnnotationHandlerInterceptorForTesting : public AnnotationHandler {
  virtual AnnotationHandler* GetForwardingInterface() = 0;
  void ScrollTo(ScrollToParamsPtr params, ScrollToCallback callback) override;
  void DropScrollToHighlight() override;
};
class  AnnotationHandlerAsyncWaiter {
 public:
  explicit AnnotationHandlerAsyncWaiter(AnnotationHandler* proxy);

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

  ~AnnotationHandlerAsyncWaiter();
  void ScrollTo(
      ScrollToParamsPtr params, std::optional<ScrollToErrorReason>* out_error_reason);
  std::optional<ScrollToErrorReason> ScrollTo(ScrollToParamsPtr params);

 private:
  AnnotationHandler* const proxy_;
};


class  SkillsHandlerInterceptorForTesting : public SkillsHandler {
  virtual SkillsHandler* GetForwardingInterface() = 0;
  void CreateSkill(CreateSkillRequestPtr request, CreateSkillCallback callback) override;
  void UpdateSkill(UpdateSkillRequestPtr request, UpdateSkillCallback callback) override;
  void ShowManageSkillsUi() override;
  void ShowBrowseSkillsUi() override;
  void GetSkill(const std::string& id, GetSkillCallback callback) override;
  void RecordSkillsWebClientEvent(SkillsWebClientEvent event) override;
};
class  SkillsHandlerAsyncWaiter {
 public:
  explicit SkillsHandlerAsyncWaiter(SkillsHandler* proxy);

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

  ~SkillsHandlerAsyncWaiter();
  void CreateSkill(
      CreateSkillRequestPtr request, bool* out_modal_opened);
  bool CreateSkill(CreateSkillRequestPtr request);
  void UpdateSkill(
      UpdateSkillRequestPtr request, bool* out_modal_opened);
  bool UpdateSkill(UpdateSkillRequestPtr request);
  void GetSkill(
      const std::string& id, SkillPtr* out_skill);
  SkillPtr GetSkill(const std::string& id);

 private:
  SkillsHandler* const proxy_;
};


class  SkillsClientInterceptorForTesting : public SkillsClient {
  virtual SkillsClient* GetForwardingInterface() = 0;
  void NotifySkillPreviewsChanged(std::vector<SkillPreviewPtr> skill_previews) override;
  void NotifyContextualSkillPreviewsChanged(std::vector<SkillPreviewPtr> skill_previews) override;
  void NotifySkillPreviewChanged(SkillPreviewPtr skill_preview) override;
  void NotifySkillDeleted(const std::string& skill_id) override;
  void NotifySkillsEnabledChanged(bool enabled) override;
};
class  SkillsClientAsyncWaiter {
 public:
  explicit SkillsClientAsyncWaiter(SkillsClient* proxy);

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

  ~SkillsClientAsyncWaiter();

 private:
  SkillsClient* const proxy_;
};


class  WebClientHandlerInterceptorForTesting : public WebClientHandler {
  virtual WebClientHandler* GetForwardingInterface() = 0;
  void WebClientCreated(::mojo::PendingRemote<WebClient> web_client, WebClientCreatedCallback callback) override;
  void WebClientInitialized() override;
  void WebClientInitializeFailed() override;
  void CreateActorHandler(::mojo::PendingReceiver<ActorHandler> receiver, ::mojo::PendingRemote<ActorClient> client) override;
  void CreateExperimentalTriggeringClient(::mojo::PendingRemote<ExperimentalTriggeringClient> client) override;
  void CreateAnnotationHandler(::mojo::PendingReceiver<AnnotationHandler> receiver) override;
  void CreateSkillsHandler(::mojo::PendingReceiver<SkillsHandler> receiver, ::mojo::PendingRemote<SkillsClient> client) override;
  void CreateZeroStateSuggestionsHandler(::mojo::PendingReceiver<ZeroStateSuggestionsHandler> receiver) override;
  void CreateTab(const ::GURL& url, CreateTabOptionsPtr create_options, CreateTabCallback callback) override;
  void ActivateTabWithUrl(const ::GURL& exact_url, ActivateTabOptionsPtr options, ActivateTabWithUrlCallback callback) override;
  void OpenLinkInPopup(const ::GURL& url, int32_t popup_width, int32_t popup_height) override;
  void OpenGlicSettingsPage(OpenSettingsOptionsPtr options) override;
  void OpenPasswordManagerSettingsPage() override;
  void EnableDragResize(bool enabled) override;
  void ClosePanel() override;
  void ClosePanelAndShutdown() override;
  void AttachPanel() override;
  void DetachPanel() override;
  void OnModeChange(WebClientMode new_mode) override;
  void OnMicrophoneStatusChange(MicrophoneStatus status) override;
  void ShowProfilePicker() override;
  void GetModelQualityClientId(GetModelQualityClientIdCallback callback) override;
  void GetContextFromFocusedTab(TabContextOptionsPtr options, GetContextFromFocusedTabCallback callback) override;
  void GetContextFromTab(int32_t tab_id, TabContextOptionsPtr options, GetContextFromTabCallback callback) override;
  void GetImageBytesFromTab(int32_t tab_id, const std::string& document_id, int32_t dom_node_id, GetImageBytesFromTabCallback callback) override;
  void SetMaximumNumberOfPinnedTabs(uint32_t requested_max, SetMaximumNumberOfPinnedTabsCallback callback) override;
  void PinTabs(const std::vector<int32_t>& tab_ids, PinTabsOptionsPtr options, PinTabsCallback callback) override;
  void UnpinTabs(const std::vector<int32_t>& tab_ids, UnpinTabsOptionsPtr options, UnpinTabsCallback callback) override;
  void UnpinAllTabs(UnpinTabsOptionsPtr options) override;
  void SubscribeToPinCandidates(GetPinCandidatesOptionsPtr options, ::mojo::PendingRemote<PinCandidatesObserver> observer) override;
  void OpenPinnedTabPicker(OpenPinnedTabPickerOptionsPtr options, OpenPinnedTabPickerCallback callback) override;
  void ActivateTab(int32_t task_id) override;
  void ResizeWidget(const ::gfx::Size& size, ::base::TimeDelta duration, ResizeWidgetCallback callback) override;
  void CaptureScreenshot(CaptureScreenshotCallback callback) override;
  void CaptureRegion(::mojo::PendingRemote<CaptureRegionObserver> observer, CaptureRegionParamsPtr params) override;
  void DeleteCapturedRegion(int32_t tab_id, const ::base::UnguessableToken& id) override;
  void SetAudioDucking(bool enable, SetAudioDuckingCallback callback) override;
  void SetMinimumPanelSize(const ::gfx::Size& size) override;
  void SetMicrophonePermissionState(bool enabled, SetMicrophonePermissionStateCallback callback) override;
  void SetLocationPermissionState(bool enabled, SetLocationPermissionStateCallback callback) override;
  void SetTabContextPermissionState(bool enabled, SetTabContextPermissionStateCallback callback) override;
  void SetClosedCaptioningSetting(bool enabled, SetClosedCaptioningSettingCallback callback) override;
  void SetActuationOnWebSetting(bool enabled, SetActuationOnWebSettingCallback callback) override;
  void ShouldAllowMediaPermissionRequest(ShouldAllowMediaPermissionRequestCallback callback) override;
  void ShouldAllowGeolocationPermissionRequest(ShouldAllowGeolocationPermissionRequestCallback callback) override;
  void SetContextAccessIndicator(bool enabled) override;
  void GetUserProfileInfo(GetUserProfileInfoCallback callback) override;
  void SyncCookies(SyncCookiesCallback callback) override;
  void ClientErrorDialogStateChanged(std::optional<ClientErrorDialogType> shown_dialog_type) override;
  void ReportClientTransientError(::mojo_base::mojom::AbslStatusCode status_code) override;
  void ProcessCounterAbuseVerdict(int32_t tab_id, CounterAbuseVerdictPtr verdict) override;
  void OnOptinImpression() override;
  void OnUserInputSubmitted(WebClientMode mode, PromptType prompt_type) override;
  void OnContextUploadStarted() override;
  void OnContextUploadCompleted() override;
  void OnReaction(MetricUserInputReactionType reactionType) override;
  void OnResponseStarted() override;
  void OnResponseStopped(OnResponseStoppedDetailsPtr details) override;
  void OnSessionTerminated() override;
  void OnTurnCompleted(WebClientModel model, ::base::TimeDelta duration) override;
  void OnResponseRated(bool positive) override;
  void OnClosedCaptionsShown() override;
  void OnActionSubmitted(bool is_retry) override;
  void SetSyntheticExperimentState(const std::string& trial_name, const std::string& group_name) override;
  void OpenOsPermissionSettingsMenu(::content_settings::mojom::ContentSettingsType type) override;
  void GetOsMicrophonePermissionStatus(GetOsMicrophonePermissionStatusCallback callback) override;
  void GetZeroStateSuggestionsForFocusedTab(std::optional<bool> is_first_run, GetZeroStateSuggestionsForFocusedTabCallback callback) override;
  void MaybeRefreshUserStatus() override;
  void IsDebuggerAttached(IsDebuggerAttachedCallback callback) override;
  void SubscribeToPageMetadata(int32_t tab_id, const std::vector<std::string>& names, SubscribeToPageMetadataCallback callback) override;
  void SwitchConversation(ConversationInfoPtr info, SwitchConversationCallback callback) override;
  void RegisterConversation(ConversationInfoPtr info, RegisterConversationCallback callback) override;
  void SetOnboardingCompleted() override;
  void SubscribeToTabData(int32_t tab_id, ::mojo::PendingRemote<TabDataHandler> receiver) override;
  void SubscribeToTabFavicon(int32_t tab_id, ::mojo::PendingRemote<TabFaviconHandler> receiver) override;
};
class  WebClientHandlerAsyncWaiter {
 public:
  explicit WebClientHandlerAsyncWaiter(WebClientHandler* proxy);

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

  ~WebClientHandlerAsyncWaiter();
  void WebClientCreated(
      ::mojo::PendingRemote<WebClient> web_client, WebClientInitialStatePtr* out_initial_state);
  WebClientInitialStatePtr WebClientCreated(::mojo::PendingRemote<WebClient> web_client);
  void CreateTab(
      const ::GURL& url, CreateTabOptionsPtr create_options, TabDataPtr* out_tab_data);
  TabDataPtr CreateTab(const ::GURL& url, CreateTabOptionsPtr create_options);
  void ActivateTabWithUrl(
      const ::GURL& exact_url, ActivateTabOptionsPtr options, TabDataPtr* out_tab_data);
  TabDataPtr ActivateTabWithUrl(const ::GURL& exact_url, ActivateTabOptionsPtr options);
  void GetModelQualityClientId(
      std::string* out_model_quality_client_id);
  std::string GetModelQualityClientId();
  void GetContextFromFocusedTab(
      TabContextOptionsPtr options, GetContextResultPtr* out_result);
  GetContextResultPtr GetContextFromFocusedTab(TabContextOptionsPtr options);
  void GetContextFromTab(
      int32_t tab_id, TabContextOptionsPtr options, GetContextResultPtr* out_result);
  GetContextResultPtr GetContextFromTab(int32_t tab_id, TabContextOptionsPtr options);
  void GetImageBytesFromTab(
      int32_t tab_id, const std::string& document_id, int32_t dom_node_id, GetImageBytesResultPtr* out_result);
  GetImageBytesResultPtr GetImageBytesFromTab(int32_t tab_id, const std::string& document_id, int32_t dom_node_id);
  void SetMaximumNumberOfPinnedTabs(
      uint32_t requested_max, uint32_t* out_effective_max);
  uint32_t SetMaximumNumberOfPinnedTabs(uint32_t requested_max);
  void PinTabs(
      const std::vector<int32_t>& tab_ids, PinTabsOptionsPtr options, bool* out_pinned_all);
  bool PinTabs(const std::vector<int32_t>& tab_ids, PinTabsOptionsPtr options);
  void UnpinTabs(
      const std::vector<int32_t>& tab_ids, UnpinTabsOptionsPtr options, bool* out_unpinned_all);
  bool UnpinTabs(const std::vector<int32_t>& tab_ids, UnpinTabsOptionsPtr options);
  void OpenPinnedTabPicker(
      OpenPinnedTabPickerOptionsPtr options);
  
  void ResizeWidget(
      const ::gfx::Size& size, ::base::TimeDelta duration);
  
  void CaptureScreenshot(
      CaptureScreenshotResultPtr* out_result);
  CaptureScreenshotResultPtr CaptureScreenshot();
  void SetAudioDucking(
      bool enable, bool* out_result);
  bool SetAudioDucking(bool enable);
  void SetMicrophonePermissionState(
      bool enabled);
  
  void SetLocationPermissionState(
      bool enabled);
  
  void SetTabContextPermissionState(
      bool enabled);
  
  void SetClosedCaptioningSetting(
      bool enabled);
  
  void SetActuationOnWebSetting(
      bool enabled);
  
  void ShouldAllowMediaPermissionRequest(
      bool* out_is_allowed);
  bool ShouldAllowMediaPermissionRequest();
  void ShouldAllowGeolocationPermissionRequest(
      bool* out_is_allowed);
  bool ShouldAllowGeolocationPermissionRequest();
  void GetUserProfileInfo(
      UserProfileInfoPtr* out_profile_info);
  UserProfileInfoPtr GetUserProfileInfo();
  void SyncCookies(
      bool* out_success);
  bool SyncCookies();
  void GetOsMicrophonePermissionStatus(
      bool* out_enabled);
  bool GetOsMicrophonePermissionStatus();
  void GetZeroStateSuggestionsForFocusedTab(
      std::optional<bool> is_first_run, ZeroStateSuggestionsPtr* out_suggestions);
  ZeroStateSuggestionsPtr GetZeroStateSuggestionsForFocusedTab(std::optional<bool> is_first_run);
  void IsDebuggerAttached(
      bool* out_is_attached_to_webview);
  bool IsDebuggerAttached();
  void SubscribeToPageMetadata(
      int32_t tab_id, const std::vector<std::string>& names, bool* out_success);
  bool SubscribeToPageMetadata(int32_t tab_id, const std::vector<std::string>& names);
  void SwitchConversation(
      ConversationInfoPtr info, std::optional<SwitchConversationErrorReason>* out_error_reason);
  std::optional<SwitchConversationErrorReason> SwitchConversation(ConversationInfoPtr info);
  void RegisterConversation(
      ConversationInfoPtr info, std::optional<RegisterConversationErrorReason>* out_error_reason);
  std::optional<RegisterConversationErrorReason> RegisterConversation(ConversationInfoPtr info);

 private:
  WebClientHandler* const proxy_;
};


class  ZeroStateSuggestionsHandlerInterceptorForTesting : public ZeroStateSuggestionsHandler {
  virtual ZeroStateSuggestionsHandler* GetForwardingInterface() = 0;
  void GetZeroStateSuggestionsAndSubscribe(::mojo::PendingRemote<ZeroStateSuggestionsClient> client, ZeroStateSuggestionsOptionsPtr options, GetZeroStateSuggestionsAndSubscribeCallback callback) override;
};
class  ZeroStateSuggestionsHandlerAsyncWaiter {
 public:
  explicit ZeroStateSuggestionsHandlerAsyncWaiter(ZeroStateSuggestionsHandler* proxy);

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

  ~ZeroStateSuggestionsHandlerAsyncWaiter();
  void GetZeroStateSuggestionsAndSubscribe(
      ::mojo::PendingRemote<ZeroStateSuggestionsClient> client, ZeroStateSuggestionsOptionsPtr options, ZeroStateSuggestionsV2Ptr* out_zero_state_suggestions);
  ZeroStateSuggestionsV2Ptr GetZeroStateSuggestionsAndSubscribe(::mojo::PendingRemote<ZeroStateSuggestionsClient> client, ZeroStateSuggestionsOptionsPtr options);

 private:
  ZeroStateSuggestionsHandler* const proxy_;
};


class  ZeroStateSuggestionsClientInterceptorForTesting : public ZeroStateSuggestionsClient {
  virtual ZeroStateSuggestionsClient* GetForwardingInterface() = 0;
  void NotifyZeroStateSuggestionsChanged(ZeroStateSuggestionsV2Ptr suggestions, ZeroStateSuggestionsOptionsPtr options) override;
};
class  ZeroStateSuggestionsClientAsyncWaiter {
 public:
  explicit ZeroStateSuggestionsClientAsyncWaiter(ZeroStateSuggestionsClient* proxy);

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

  ~ZeroStateSuggestionsClientAsyncWaiter();

 private:
  ZeroStateSuggestionsClient* const proxy_;
};


class  TabDataHandlerInterceptorForTesting : public TabDataHandler {
  virtual TabDataHandler* GetForwardingInterface() = 0;
  void OnTabDataChanged(TabDataPtr tab_data) override;
};
class  TabDataHandlerAsyncWaiter {
 public:
  explicit TabDataHandlerAsyncWaiter(TabDataHandler* proxy);

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

  ~TabDataHandlerAsyncWaiter();

 private:
  TabDataHandler* const proxy_;
};


class  TabFaviconHandlerInterceptorForTesting : public TabFaviconHandler {
  virtual TabFaviconHandler* GetForwardingInterface() = 0;
  void OnTabFaviconChanged(const ::SkBitmap& favicon) override;
};
class  TabFaviconHandlerAsyncWaiter {
 public:
  explicit TabFaviconHandlerAsyncWaiter(TabFaviconHandler* proxy);

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

  ~TabFaviconHandlerAsyncWaiter();

 private:
  TabFaviconHandler* const proxy_;
};


class  ExperimentalTriggeringUpdatesHandlerInterceptorForTesting : public ExperimentalTriggeringUpdatesHandler {
  virtual ExperimentalTriggeringUpdatesHandler* GetForwardingInterface() = 0;
  void OnUpdate(ExperimentalTriggeringUpdatePtr update, SubscriberObservationType observation) override;
};
class  ExperimentalTriggeringUpdatesHandlerAsyncWaiter {
 public:
  explicit ExperimentalTriggeringUpdatesHandlerAsyncWaiter(ExperimentalTriggeringUpdatesHandler* proxy);

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

  ~ExperimentalTriggeringUpdatesHandlerAsyncWaiter();

 private:
  ExperimentalTriggeringUpdatesHandler* const proxy_;
};


class  ExperimentalTriggeringClientInterceptorForTesting : public ExperimentalTriggeringClient {
  virtual ExperimentalTriggeringClient* GetForwardingInterface() = 0;
  void UploadEncryptedScreenshot(ScreenshotPtr screenshot, UploadEncryptedScreenshotCallback callback) override;
  void GetExperimentalTriggeringUpdates(::mojo::PendingRemote<ExperimentalTriggeringUpdatesHandler> handler, GetExperimentalTriggeringUpdatesCallback callback) override;
};
class  ExperimentalTriggeringClientAsyncWaiter {
 public:
  explicit ExperimentalTriggeringClientAsyncWaiter(ExperimentalTriggeringClient* proxy);

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

  ~ExperimentalTriggeringClientAsyncWaiter();
  void UploadEncryptedScreenshot(
      ScreenshotPtr screenshot, std::optional<std::string>* out_file_token);
  std::optional<std::string> UploadEncryptedScreenshot(ScreenshotPtr screenshot);
  void GetExperimentalTriggeringUpdates(
      ::mojo::PendingRemote<ExperimentalTriggeringUpdatesHandler> handler, bool* out_success);
  bool GetExperimentalTriggeringUpdates(::mojo::PendingRemote<ExperimentalTriggeringUpdatesHandler> handler);

 private:
  ExperimentalTriggeringClient* const proxy_;
};


class  WebClientInterceptorForTesting : public WebClient {
  virtual WebClient* GetForwardingInterface() = 0;
  void CheckResponsive(CheckResponsiveCallback callback) override;
  void NotifyPanelWillOpen(PanelOpeningDataPtr panel_opening_data, NotifyPanelWillOpenCallback callback) override;
  void NotifyPanelWasClosed(NotifyPanelWasClosedCallback callback) override;
  void NotifyPanelStateChange(PanelStatePtr panel_state) override;
  void NotifyPanelActiveChange(bool panel_active) override;
  void NotifyPanelCanAttachChange(bool can_attach) override;
  void NotifyMicrophonePermissionStateChanged(bool enabled) override;
  void NotifyFileUploadStateChanged(FileUploadPolicyState state) override;
  void StopMicrophone(StopMicrophoneCallback callback) override;
  void NotifyLocationPermissionStateChanged(bool enabled) override;
  void NotifyTabContextPermissionStateChanged(bool enabled) override;
  void NotifyOsLocationPermissionStateChanged(bool enabled) override;
  void NotifyFocusedTabChanged(FocusedTabDataPtr focused_tab_data) override;
  void NotifyManualResizeChanged(bool resizing) override;
  void NotifyOsHotkeyStateChanged(const std::string& hotkey) override;
  void NotifyBrowserIsOpenChanged(bool browser_is_open) override;
  void NotifyZoomLevelChanged(double zoom_factor) override;
  void NotifyInstanceActivationChanged(bool instance_active) override;
  void NotifyClosedCaptioningSettingChanged(bool enabled) override;
  void NotifyPinnedTabsChanged(std::vector<TabDataPtr> tab_data) override;
  void NotifyPinnedTabDataChanged(TabDataPtr tab_data) override;
  void NotifyPageMetadataChanged(int32_t tab_id, ::blink::mojom::PageMetadataPtr metadata) override;
  void NotifyDefaultTabContextPermissionStateChanged(bool enabled) override;
  void NotifyAdditionalContext(AdditionalContextPtr context) override;
  void NotifyActuationOnWebSettingChanged(bool enabled) override;
  void NotifyActOnWebCapabilityChanged(bool can_act_on_web) override;
  void NotifyOnboardingCompletedChanged(bool completed) override;
  void NotifyGeminiEnterpriseSettingsChanged(GeminiEnterpriseSettingsPtr settings) override;
  void NotifyActorTaskListRowClicked(int32_t task_id) override;
  void Invoke(InvokeOptionsPtr options, InvokeCallback callback) override;
};
class  WebClientAsyncWaiter {
 public:
  explicit WebClientAsyncWaiter(WebClient* proxy);

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

  ~WebClientAsyncWaiter();
  void CheckResponsive(
      );
  
  void NotifyPanelWillOpen(
      PanelOpeningDataPtr panel_opening_data, OpenPanelInfoPtr* out_openPanelInfo);
  OpenPanelInfoPtr NotifyPanelWillOpen(PanelOpeningDataPtr panel_opening_data);
  void NotifyPanelWasClosed(
      );
  
  void StopMicrophone(
      );
  
  void Invoke(
      InvokeOptionsPtr options);
  

 private:
  WebClient* const proxy_;
};


class  CaptureRegionObserverInterceptorForTesting : public CaptureRegionObserver {
  virtual CaptureRegionObserver* GetForwardingInterface() = 0;
  void OnUpdate(CaptureRegionResultPtr result, std::optional<CaptureRegionErrorReason> reason) override;
};
class  CaptureRegionObserverAsyncWaiter {
 public:
  explicit CaptureRegionObserverAsyncWaiter(CaptureRegionObserver* proxy);

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

  ~CaptureRegionObserverAsyncWaiter();

 private:
  CaptureRegionObserver* const proxy_;
};




}  // glic::mojom

#endif  // CHROME_BROWSER_GLIC_HOST_GLIC_MOJOM_TEST_UTILS_H_