// third_party/blink/public/mojom/push_messaging/push_messaging.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_PUSH_MESSAGING_PUSH_MESSAGING_MOJOM_TEST_UTILS_H_
#define THIRD_PARTY_BLINK_PUBLIC_MOJOM_PUSH_MESSAGING_PUSH_MESSAGING_MOJOM_TEST_UTILS_H_

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


namespace blink::mojom {


class BLINK_COMMON_EXPORT PushMessagingInterceptorForTesting : public PushMessaging {
  virtual PushMessaging* GetForwardingInterface() = 0;
  void Subscribe(int64_t service_worker_registration_id, PushSubscriptionOptionsPtr options, bool user_gesture, SubscribeCallback callback) override;
  void Unsubscribe(int64_t service_worker_registration_id, UnsubscribeCallback callback) override;
  void GetSubscription(int64_t service_worker_registration_id, GetSubscriptionCallback callback) override;
};
class BLINK_COMMON_EXPORT PushMessagingAsyncWaiter {
 public:
  explicit PushMessagingAsyncWaiter(PushMessaging* proxy);

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

  ~PushMessagingAsyncWaiter();
  void Subscribe(
      int64_t service_worker_registration_id, PushSubscriptionOptionsPtr options, bool user_gesture, ::blink::mojom::PushRegistrationStatus* out_status, PushSubscriptionPtr* out_subscription);
  
  void Unsubscribe(
      int64_t service_worker_registration_id, PushErrorType* out_error_type, bool* out_did_unsubscribe, std::optional<std::string>* out_error_message);
  
  void GetSubscription(
      int64_t service_worker_registration_id, ::blink::mojom::PushGetRegistrationStatus* out_status, PushSubscriptionPtr* out_subscription);
  

 private:
  PushMessaging* const proxy_;
};




}  // blink::mojom

#endif  // THIRD_PARTY_BLINK_PUBLIC_MOJOM_PUSH_MESSAGING_PUSH_MESSAGING_MOJOM_TEST_UTILS_H_