// services/network/public/mojom/device_bound_sessions.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 SERVICES_NETWORK_PUBLIC_MOJOM_DEVICE_BOUND_SESSIONS_MOJOM_BLINK_TEST_UTILS_H_
#define SERVICES_NETWORK_PUBLIC_MOJOM_DEVICE_BOUND_SESSIONS_MOJOM_BLINK_TEST_UTILS_H_

#include "services/network/public/mojom/device_bound_sessions.mojom-blink.h"
#include "third_party/blink/public/platform/web_common.h"


namespace network::mojom::blink {


class BLINK_PLATFORM_EXPORT DeviceBoundSessionManagerInterceptorForTesting : public DeviceBoundSessionManager {
  virtual DeviceBoundSessionManager* GetForwardingInterface() = 0;
  void GetAllSessions(GetAllSessionsCallback callback) override;
  void DeleteSession(DeviceBoundSessionDeletionReason reason, DeviceBoundSessionKeyPtr session) override;
  void DeleteAllSessions(DeviceBoundSessionDeletionReason reason, std::optional<::base::Time> created_after_time, std::optional<::base::Time> created_before_time, ::network::mojom::blink::ClearDataFilterPtr filter, DeleteAllSessionsCallback callback) override;
  void AddObserver(const ::blink::KURL& url, ::mojo::PendingRemote<DeviceBoundSessionAccessObserver> observer) override;
  void AddEventObserver(::mojo::PendingRemote<DeviceBoundSessionEventObserver> observer) override;
  void CreateBoundSessions(::blink::Vector<DeviceBoundSessionParamsPtr> params, const ::blink::Vector<uint8_t>& wrapped_key, const ::blink::Vector<::net::CanonicalCookie>& cookies_to_set, ::network::mojom::blink::CookieOptionsPtr cookie_options, CreateBoundSessionsCallback callback) override;
  void PrewarmSessionsForUrl(const ::blink::KURL& url, PrewarmSessionsForUrlCallback callback) override;
};
class BLINK_PLATFORM_EXPORT DeviceBoundSessionManagerAsyncWaiter {
 public:
  explicit DeviceBoundSessionManagerAsyncWaiter(DeviceBoundSessionManager* proxy);

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

  ~DeviceBoundSessionManagerAsyncWaiter();
  void GetAllSessions(
      ::blink::Vector<DeviceBoundSessionKeyPtr>* out_sessions);
  ::blink::Vector<DeviceBoundSessionKeyPtr> GetAllSessions();
  void DeleteAllSessions(
      DeviceBoundSessionDeletionReason reason, std::optional<::base::Time> created_after_time, std::optional<::base::Time> created_before_time, ::network::mojom::blink::ClearDataFilterPtr filter);
  
  void CreateBoundSessions(
      ::blink::Vector<DeviceBoundSessionParamsPtr> params, const ::blink::Vector<uint8_t>& wrapped_key, const ::blink::Vector<::net::CanonicalCookie>& cookies_to_set, ::network::mojom::blink::CookieOptionsPtr cookie_options, ::blink::Vector<DeviceBoundSessionError>* out_session_results, ::blink::Vector<::net::CookieInclusionStatus>* out_cookie_results);
  
  void PrewarmSessionsForUrl(
      const ::blink::KURL& url, ::blink::Vector<DeviceBoundSessionRefreshResult>* out_results, std::optional<::base::Time>* out_earliest_next_refresh_time);
  

 private:
  DeviceBoundSessionManager* const proxy_;
};


class BLINK_PLATFORM_EXPORT DeviceBoundSessionAccessObserverInterceptorForTesting : public DeviceBoundSessionAccessObserver {
  virtual DeviceBoundSessionAccessObserver* GetForwardingInterface() = 0;
  void OnDeviceBoundSessionAccessed(DeviceBoundSessionAccessPtr access) override;
  void Clone(::mojo::PendingReceiver<DeviceBoundSessionAccessObserver> observer) override;
};
class BLINK_PLATFORM_EXPORT DeviceBoundSessionAccessObserverAsyncWaiter {
 public:
  explicit DeviceBoundSessionAccessObserverAsyncWaiter(DeviceBoundSessionAccessObserver* proxy);

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

  ~DeviceBoundSessionAccessObserverAsyncWaiter();

 private:
  DeviceBoundSessionAccessObserver* const proxy_;
};


class BLINK_PLATFORM_EXPORT DeviceBoundSessionEventObserverInterceptorForTesting : public DeviceBoundSessionEventObserver {
  virtual DeviceBoundSessionEventObserver* GetForwardingInterface() = 0;
  void OnDeviceBoundSessionEventReceived(DeviceBoundSessionEventPtr event) override;
  void AddDeviceBoundSessionDisplays(::blink::Vector<DeviceBoundSessionDisplayPtr> session_displays) override;
};
class BLINK_PLATFORM_EXPORT DeviceBoundSessionEventObserverAsyncWaiter {
 public:
  explicit DeviceBoundSessionEventObserverAsyncWaiter(DeviceBoundSessionEventObserver* proxy);

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

  ~DeviceBoundSessionEventObserverAsyncWaiter();

 private:
  DeviceBoundSessionEventObserver* const proxy_;
};




}  // network::mojom::blink

#endif  // SERVICES_NETWORK_PUBLIC_MOJOM_DEVICE_BOUND_SESSIONS_MOJOM_BLINK_TEST_UTILS_H_