// components/vrp_flags/vrp_flags.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 COMPONENTS_VRP_FLAGS_VRP_FLAGS_MOJOM_BLINK_TEST_UTILS_H_
#define COMPONENTS_VRP_FLAGS_VRP_FLAGS_MOJOM_BLINK_TEST_UTILS_H_

#include "components/vrp_flags/vrp_flags.mojom-blink.h"
#include "base/component_export.h"


namespace vrp_flags::mojom::blink {


class COMPONENT_EXPORT(VRP_FLAGS_MOJOM_BLINK) VrpFlagsInterceptorForTesting : public VrpFlags {
  virtual VrpFlags* GetForwardingInterface() = 0;
  void GetWriteLocations(GetWriteLocationsCallback callback) override;
  void WriteAttempted(uint64_t location, WriteAttemptedCallback callback) override;
  void GetReadPrefix(GetReadPrefixCallback callback) override;
  void ReadAttempted(const ::base::UnguessableToken& flag, ReadAttemptedCallback callback) override;
};
class COMPONENT_EXPORT(VRP_FLAGS_MOJOM_BLINK) VrpFlagsAsyncWaiter {
 public:
  explicit VrpFlagsAsyncWaiter(VrpFlags* proxy);

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

  ~VrpFlagsAsyncWaiter();
  void GetWriteLocations(
      ::blink::Vector<uint64_t>* out_locations, uint64_t* out_value);
  
  void WriteAttempted(
      uint64_t location, bool* out_success);
  bool WriteAttempted(uint64_t location);
  void GetReadPrefix(
      ::base::UnguessableToken* out_prefix);
  ::base::UnguessableToken GetReadPrefix();
  void ReadAttempted(
      const ::base::UnguessableToken& flag, bool* out_success);
  bool ReadAttempted(const ::base::UnguessableToken& flag);

 private:
  VrpFlags* const proxy_;
};


class COMPONENT_EXPORT(VRP_FLAGS_MOJOM_BLINK) VrpFlagsFactoryInterceptorForTesting : public VrpFlagsFactory {
  virtual VrpFlagsFactory* GetForwardingInterface() = 0;
  void BindBrowserVrpFlags(::mojo::PendingReceiver<VrpFlags> receiver) override;
  void BindNetworkVrpFlags(::mojo::PendingReceiver<VrpFlags> receiver) override;
  void BindGpuVrpFlags(::mojo::PendingReceiver<VrpFlags> receiver) override;
  void StartRendererForVrpFlags(VictimDisposition disposition, ::mojo::PendingReceiver<VrpFlags> receiver, StartRendererForVrpFlagsCallback callback) override;
};
class COMPONENT_EXPORT(VRP_FLAGS_MOJOM_BLINK) VrpFlagsFactoryAsyncWaiter {
 public:
  explicit VrpFlagsFactoryAsyncWaiter(VrpFlagsFactory* proxy);

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

  ~VrpFlagsFactoryAsyncWaiter();
  void StartRendererForVrpFlags(
      VictimDisposition disposition, ::mojo::PendingReceiver<VrpFlags> receiver, uint16_t* out_port);
  uint16_t StartRendererForVrpFlags(VictimDisposition disposition, ::mojo::PendingReceiver<VrpFlags> receiver);

 private:
  VrpFlagsFactory* const proxy_;
};




}  // vrp_flags::mojom::blink

#endif  // COMPONENTS_VRP_FLAGS_VRP_FLAGS_MOJOM_BLINK_TEST_UTILS_H_