// third_party/blink/public/mojom/permissions/permission.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 THIRD_PARTY_BLINK_PUBLIC_MOJOM_PERMISSIONS_PERMISSION_MOJOM_TEST_UTILS_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_PERMISSIONS_PERMISSION_MOJOM_TEST_UTILS_H_

#include "third_party/blink/public/mojom/permissions/permission.mojom.h"
#include "third_party/blink/public/common/common_export.h"


namespace blink::mojom {


class BLINK_COMMON_EXPORT PermissionObserverInterceptorForTesting : public PermissionObserver {
  virtual PermissionObserver* GetForwardingInterface() = 0;
  void OnPermissionStatusChange(::blink::mojom::PermissionStatusWithDetailsPtr status) override;
};
class BLINK_COMMON_EXPORT PermissionObserverAsyncWaiter {
 public:
  explicit PermissionObserverAsyncWaiter(PermissionObserver* proxy);

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

  ~PermissionObserverAsyncWaiter();

 private:
  PermissionObserver* const proxy_;
};


class BLINK_COMMON_EXPORT EmbeddedPermissionControlClientInterceptorForTesting : public EmbeddedPermissionControlClient {
  virtual EmbeddedPermissionControlClient* GetForwardingInterface() = 0;
  void OnEmbeddedPermissionControlRegistered(bool allow, const std::optional<std::vector<::blink::mojom::PermissionStatus>>& statuses) override;
};
class BLINK_COMMON_EXPORT EmbeddedPermissionControlClientAsyncWaiter {
 public:
  explicit EmbeddedPermissionControlClientAsyncWaiter(EmbeddedPermissionControlClient* proxy);

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

  ~EmbeddedPermissionControlClientAsyncWaiter();

 private:
  EmbeddedPermissionControlClient* const proxy_;
};


class BLINK_COMMON_EXPORT PermissionServiceInterceptorForTesting : public PermissionService {
  virtual PermissionService* GetForwardingInterface() = 0;
  void HasPermission(PermissionDescriptorPtr permission, HasPermissionCallback callback) override;
  void RegisterPageEmbeddedPermissionControl(std::vector<PermissionDescriptorPtr> permissions, EmbeddedPermissionRequestDescriptorPtr descriptor, ::mojo::PendingRemote<EmbeddedPermissionControlClient> client) override;
  void RequestPageEmbeddedPermission(std::vector<PermissionDescriptorPtr> permissions, EmbeddedPermissionRequestDescriptorPtr descriptor, RequestPageEmbeddedPermissionCallback callback) override;
  void RequestPermission(PermissionDescriptorPtr permission, RequestPermissionCallback callback) override;
  void RequestPermissions(std::vector<PermissionDescriptorPtr> permission, RequestPermissionsCallback callback) override;
  void RevokePermission(PermissionDescriptorPtr permission, RevokePermissionCallback callback) override;
  void AddPermissionObserver(PermissionDescriptorPtr permission, ::blink::mojom::PermissionStatusWithDetailsPtr last_known_status, ::mojo::PendingRemote<PermissionObserver> observer) override;
  void AddPageEmbeddedPermissionObserver(PermissionDescriptorPtr permission, ::blink::mojom::PermissionStatus last_known_status, ::mojo::PendingRemote<PermissionObserver> observer) override;
  void NotifyEventListener(PermissionDescriptorPtr permission, const std::string& event_type, bool is_added) override;
};
class BLINK_COMMON_EXPORT PermissionServiceAsyncWaiter {
 public:
  explicit PermissionServiceAsyncWaiter(PermissionService* proxy);

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

  ~PermissionServiceAsyncWaiter();
  void HasPermission(
      PermissionDescriptorPtr permission, ::blink::mojom::PermissionStatusWithDetailsPtr* out_status);
  ::blink::mojom::PermissionStatusWithDetailsPtr HasPermission(PermissionDescriptorPtr permission);
  void RequestPageEmbeddedPermission(
      std::vector<PermissionDescriptorPtr> permissions, EmbeddedPermissionRequestDescriptorPtr descriptor, EmbeddedPermissionControlResult* out_status);
  EmbeddedPermissionControlResult RequestPageEmbeddedPermission(std::vector<PermissionDescriptorPtr> permissions, EmbeddedPermissionRequestDescriptorPtr descriptor);
  void RequestPermission(
      PermissionDescriptorPtr permission, ::blink::mojom::PermissionStatusWithDetailsPtr* out_status);
  ::blink::mojom::PermissionStatusWithDetailsPtr RequestPermission(PermissionDescriptorPtr permission);
  void RequestPermissions(
      std::vector<PermissionDescriptorPtr> permission, std::vector<::blink::mojom::PermissionStatusWithDetailsPtr>* out_statuses);
  std::vector<::blink::mojom::PermissionStatusWithDetailsPtr> RequestPermissions(std::vector<PermissionDescriptorPtr> permission);
  void RevokePermission(
      PermissionDescriptorPtr permission, ::blink::mojom::PermissionStatusWithDetailsPtr* out_status);
  ::blink::mojom::PermissionStatusWithDetailsPtr RevokePermission(PermissionDescriptorPtr permission);

 private:
  PermissionService* const proxy_;
};




}  // blink::mojom

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_PERMISSIONS_PERMISSION_MOJOM_TEST_UTILS_H_