// third_party/blink/public/mojom/app_banner/app_banner.mojom-blink-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 THIRD_PARTY_BLINK_PUBLIC_MOJOM_APP_BANNER_APP_BANNER_MOJOM_BLINK_TEST_UTILS_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_APP_BANNER_APP_BANNER_MOJOM_BLINK_TEST_UTILS_H_

#include "third_party/blink/public/mojom/app_banner/app_banner.mojom-blink.h"
#include "third_party/blink/renderer/platform/platform_export.h"


namespace blink::mojom::blink {


class PLATFORM_EXPORT AppBannerControllerInterceptorForTesting : public AppBannerController {
  virtual AppBannerController* GetForwardingInterface() = 0;
  void BannerPromptRequest(::mojo::PendingRemote<AppBannerService> service, ::mojo::PendingReceiver<AppBannerEvent> event_receiver, const ::blink::Vector<::blink::String>& platform, BannerPromptRequestCallback callback) override;
};
class PLATFORM_EXPORT AppBannerControllerAsyncWaiter {
 public:
  explicit AppBannerControllerAsyncWaiter(AppBannerController* proxy);

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

  ~AppBannerControllerAsyncWaiter();
  void BannerPromptRequest(
      ::mojo::PendingRemote<AppBannerService> service, ::mojo::PendingReceiver<AppBannerEvent> event_receiver, const ::blink::Vector<::blink::String>& platform, AppBannerPromptReply* out_reply);
  AppBannerPromptReply BannerPromptRequest(::mojo::PendingRemote<AppBannerService> service, ::mojo::PendingReceiver<AppBannerEvent> event_receiver, const ::blink::Vector<::blink::String>& platform);

 private:
  AppBannerController* const proxy_;
};


class PLATFORM_EXPORT AppBannerEventInterceptorForTesting : public AppBannerEvent {
  virtual AppBannerEvent* GetForwardingInterface() = 0;
  void BannerAccepted(const ::blink::String& platform) override;
  void BannerDismissed() override;
};
class PLATFORM_EXPORT AppBannerEventAsyncWaiter {
 public:
  explicit AppBannerEventAsyncWaiter(AppBannerEvent* proxy);

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

  ~AppBannerEventAsyncWaiter();

 private:
  AppBannerEvent* const proxy_;
};


class PLATFORM_EXPORT AppBannerServiceInterceptorForTesting : public AppBannerService {
  virtual AppBannerService* GetForwardingInterface() = 0;
  void DisplayAppBanner() override;
};
class PLATFORM_EXPORT AppBannerServiceAsyncWaiter {
 public:
  explicit AppBannerServiceAsyncWaiter(AppBannerService* proxy);

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

  ~AppBannerServiceAsyncWaiter();

 private:
  AppBannerService* const proxy_;
};




}  // blink::mojom::blink

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_APP_BANNER_APP_BANNER_MOJOM_BLINK_TEST_UTILS_H_