// content/browser/xr/webxr_internals/mojom/webxr_internals.mojom-shared-internal.h is auto generated by mojom_bindings_generator.py, do not edit

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CONTENT_BROWSER_XR_WEBXR_INTERNALS_MOJOM_WEBXR_INTERNALS_MOJOM_SHARED_INTERNAL_H_
#define CONTENT_BROWSER_XR_WEBXR_INTERNALS_MOJOM_WEBXR_INTERNALS_MOJOM_SHARED_INTERNAL_H_
#include "mojo/public/cpp/bindings/lib/array_internal.h"
#include "mojo/public/cpp/bindings/lib/bindings_internal.h"
#include "mojo/public/cpp/bindings/lib/map_data_internal.h"
#include "mojo/public/cpp/bindings/lib/message_fragment.h"
#include "device/vr/public/mojom/xr_device.mojom-shared-internal.h"
#include "device/vr/public/mojom/xr_session.mojom-shared-internal.h"
#include "mojo/public/mojom/base/time.mojom-shared-internal.h"
#include "mojo/public/cpp/bindings/lib/native_enum_data.h"
#include "mojo/public/interfaces/bindings/native_struct.mojom-shared-internal.h"



namespace mojo {
namespace internal {
class ValidationContext;
}
}


namespace webxr::mojom {
namespace internal {
class DeviceInfo_Data;
class SessionRequestedRecord_Data;
class SessionRejectedRecord_Data;
class SessionStartedRecord_Data;
class SessionStoppedRecord_Data;
class RuntimeInfo_Data;

#pragma pack(push, 1)
class  DeviceInfo_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<mojo::internal::String_Data> operating_system_name;
  mojo::internal::Pointer<mojo::internal::String_Data> operating_system_version;
  mojo::internal::Pointer<mojo::internal::String_Data> gpu_gl_vendor;
  mojo::internal::Pointer<mojo::internal::String_Data> gpu_gl_renderer;

 private:
  friend class mojo::internal::MessageFragment<DeviceInfo_Data>;

  DeviceInfo_Data();
  ~DeviceInfo_Data() = delete;
};
static_assert(sizeof(DeviceInfo_Data) == 40,
              "Bad sizeof(DeviceInfo_Data)");
// Used by DeviceInfo::WrapAsMessage to lazily serialize the struct.
template <typename UserType, typename DataView>
struct DeviceInfo_UnserializedMessageContext
    : public mojo::internal::UnserializedMessageContext {
 public:
  static const mojo::internal::UnserializedMessageContext::Tag kMessageTag;

  DeviceInfo_UnserializedMessageContext(
    uint32_t message_name,
    uint32_t message_flags,
    UserType input)
      : mojo::internal::UnserializedMessageContext(&kMessageTag, message_name, message_flags)
      , user_data_(std::move(input)) {}
  ~DeviceInfo_UnserializedMessageContext() override = default;

  UserType TakeData() {
    return std::move(user_data_);
  }

 private:
  // mojo::internal::UnserializedMessageContext:
  void Serialize(mojo::Message& message) override {
    mojo::internal::MessageFragment<DeviceInfo_Data> fragment(message);
    mojo::internal::Serialize<DataView>(user_data_, fragment);
  }

  UserType user_data_;
};

template <typename UserType, typename DataView>
const mojo::internal::UnserializedMessageContext::Tag
    DeviceInfo_UnserializedMessageContext<UserType, DataView>::kMessageTag = {};
class  SessionRequestedRecord_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  mojo::internal::Pointer<::device::mojom::internal::XRSessionOptions_Data> options;
  mojo::internal::Pointer<::mojo_base::mojom::internal::Time_Data> requested_time;

 private:
  friend class mojo::internal::MessageFragment<SessionRequestedRecord_Data>;

  SessionRequestedRecord_Data();
  ~SessionRequestedRecord_Data() = delete;
};
static_assert(sizeof(SessionRequestedRecord_Data) == 24,
              "Bad sizeof(SessionRequestedRecord_Data)");
// Used by SessionRequestedRecord::WrapAsMessage to lazily serialize the struct.
template <typename UserType, typename DataView>
struct SessionRequestedRecord_UnserializedMessageContext
    : public mojo::internal::UnserializedMessageContext {
 public:
  static const mojo::internal::UnserializedMessageContext::Tag kMessageTag;

  SessionRequestedRecord_UnserializedMessageContext(
    uint32_t message_name,
    uint32_t message_flags,
    UserType input)
      : mojo::internal::UnserializedMessageContext(&kMessageTag, message_name, message_flags)
      , user_data_(std::move(input)) {}
  ~SessionRequestedRecord_UnserializedMessageContext() override = default;

  UserType TakeData() {
    return std::move(user_data_);
  }

 private:
  // mojo::internal::UnserializedMessageContext:
  void Serialize(mojo::Message& message) override {
    mojo::internal::MessageFragment<SessionRequestedRecord_Data> fragment(message);
    mojo::internal::Serialize<DataView>(user_data_, fragment);
  }

  UserType user_data_;
};

template <typename UserType, typename DataView>
const mojo::internal::UnserializedMessageContext::Tag
    SessionRequestedRecord_UnserializedMessageContext<UserType, DataView>::kMessageTag = {};
class  SessionRejectedRecord_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  uint64_t trace_id;
  int32_t failure_reason;
  uint8_t pad1_[4];
  mojo::internal::Pointer<::mojo_base::mojom::internal::Time_Data> rejected_time;
  mojo::internal::Pointer<mojo::internal::String_Data> failure_reason_description;
  mojo::internal::Pointer<mojo::internal::Array_Data<int32_t>> rejected_features;

 private:
  friend class mojo::internal::MessageFragment<SessionRejectedRecord_Data>;

  SessionRejectedRecord_Data();
  ~SessionRejectedRecord_Data() = delete;
};
static_assert(sizeof(SessionRejectedRecord_Data) == 48,
              "Bad sizeof(SessionRejectedRecord_Data)");
// Used by SessionRejectedRecord::WrapAsMessage to lazily serialize the struct.
template <typename UserType, typename DataView>
struct SessionRejectedRecord_UnserializedMessageContext
    : public mojo::internal::UnserializedMessageContext {
 public:
  static const mojo::internal::UnserializedMessageContext::Tag kMessageTag;

  SessionRejectedRecord_UnserializedMessageContext(
    uint32_t message_name,
    uint32_t message_flags,
    UserType input)
      : mojo::internal::UnserializedMessageContext(&kMessageTag, message_name, message_flags)
      , user_data_(std::move(input)) {}
  ~SessionRejectedRecord_UnserializedMessageContext() override = default;

  UserType TakeData() {
    return std::move(user_data_);
  }

 private:
  // mojo::internal::UnserializedMessageContext:
  void Serialize(mojo::Message& message) override {
    mojo::internal::MessageFragment<SessionRejectedRecord_Data> fragment(message);
    mojo::internal::Serialize<DataView>(user_data_, fragment);
  }

  UserType user_data_;
};

template <typename UserType, typename DataView>
const mojo::internal::UnserializedMessageContext::Tag
    SessionRejectedRecord_UnserializedMessageContext<UserType, DataView>::kMessageTag = {};
class  SessionStartedRecord_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  uint64_t trace_id;
  int32_t device_id;
  uint8_t pad1_[4];
  mojo::internal::Pointer<::mojo_base::mojom::internal::Time_Data> started_time;

 private:
  friend class mojo::internal::MessageFragment<SessionStartedRecord_Data>;

  SessionStartedRecord_Data();
  ~SessionStartedRecord_Data() = delete;
};
static_assert(sizeof(SessionStartedRecord_Data) == 32,
              "Bad sizeof(SessionStartedRecord_Data)");
// Used by SessionStartedRecord::WrapAsMessage to lazily serialize the struct.
template <typename UserType, typename DataView>
struct SessionStartedRecord_UnserializedMessageContext
    : public mojo::internal::UnserializedMessageContext {
 public:
  static const mojo::internal::UnserializedMessageContext::Tag kMessageTag;

  SessionStartedRecord_UnserializedMessageContext(
    uint32_t message_name,
    uint32_t message_flags,
    UserType input)
      : mojo::internal::UnserializedMessageContext(&kMessageTag, message_name, message_flags)
      , user_data_(std::move(input)) {}
  ~SessionStartedRecord_UnserializedMessageContext() override = default;

  UserType TakeData() {
    return std::move(user_data_);
  }

 private:
  // mojo::internal::UnserializedMessageContext:
  void Serialize(mojo::Message& message) override {
    mojo::internal::MessageFragment<SessionStartedRecord_Data> fragment(message);
    mojo::internal::Serialize<DataView>(user_data_, fragment);
  }

  UserType user_data_;
};

template <typename UserType, typename DataView>
const mojo::internal::UnserializedMessageContext::Tag
    SessionStartedRecord_UnserializedMessageContext<UserType, DataView>::kMessageTag = {};
class  SessionStoppedRecord_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  uint64_t trace_id;
  mojo::internal::Pointer<::mojo_base::mojom::internal::Time_Data> stopped_time;

 private:
  friend class mojo::internal::MessageFragment<SessionStoppedRecord_Data>;

  SessionStoppedRecord_Data();
  ~SessionStoppedRecord_Data() = delete;
};
static_assert(sizeof(SessionStoppedRecord_Data) == 24,
              "Bad sizeof(SessionStoppedRecord_Data)");
// Used by SessionStoppedRecord::WrapAsMessage to lazily serialize the struct.
template <typename UserType, typename DataView>
struct SessionStoppedRecord_UnserializedMessageContext
    : public mojo::internal::UnserializedMessageContext {
 public:
  static const mojo::internal::UnserializedMessageContext::Tag kMessageTag;

  SessionStoppedRecord_UnserializedMessageContext(
    uint32_t message_name,
    uint32_t message_flags,
    UserType input)
      : mojo::internal::UnserializedMessageContext(&kMessageTag, message_name, message_flags)
      , user_data_(std::move(input)) {}
  ~SessionStoppedRecord_UnserializedMessageContext() override = default;

  UserType TakeData() {
    return std::move(user_data_);
  }

 private:
  // mojo::internal::UnserializedMessageContext:
  void Serialize(mojo::Message& message) override {
    mojo::internal::MessageFragment<SessionStoppedRecord_Data> fragment(message);
    mojo::internal::Serialize<DataView>(user_data_, fragment);
  }

  UserType user_data_;
};

template <typename UserType, typename DataView>
const mojo::internal::UnserializedMessageContext::Tag
    SessionStoppedRecord_UnserializedMessageContext<UserType, DataView>::kMessageTag = {};
class  RuntimeInfo_Data {
 public:
  static bool Validate(const void* data,
                       mojo::internal::ValidationContext* validation_context);

  mojo::internal::StructHeader header_;
  int32_t device_id;
  uint8_t is_ar_blend_mode_supported : 1;
  uint8_t pad1_[3];
  mojo::internal::Pointer<mojo::internal::Array_Data<int32_t>> supported_features;

 private:
  friend class mojo::internal::MessageFragment<RuntimeInfo_Data>;

  RuntimeInfo_Data();
  ~RuntimeInfo_Data() = delete;
};
static_assert(sizeof(RuntimeInfo_Data) == 24,
              "Bad sizeof(RuntimeInfo_Data)");
// Used by RuntimeInfo::WrapAsMessage to lazily serialize the struct.
template <typename UserType, typename DataView>
struct RuntimeInfo_UnserializedMessageContext
    : public mojo::internal::UnserializedMessageContext {
 public:
  static const mojo::internal::UnserializedMessageContext::Tag kMessageTag;

  RuntimeInfo_UnserializedMessageContext(
    uint32_t message_name,
    uint32_t message_flags,
    UserType input)
      : mojo::internal::UnserializedMessageContext(&kMessageTag, message_name, message_flags)
      , user_data_(std::move(input)) {}
  ~RuntimeInfo_UnserializedMessageContext() override = default;

  UserType TakeData() {
    return std::move(user_data_);
  }

 private:
  // mojo::internal::UnserializedMessageContext:
  void Serialize(mojo::Message& message) override {
    mojo::internal::MessageFragment<RuntimeInfo_Data> fragment(message);
    mojo::internal::Serialize<DataView>(user_data_, fragment);
  }

  UserType user_data_;
};

template <typename UserType, typename DataView>
const mojo::internal::UnserializedMessageContext::Tag
    RuntimeInfo_UnserializedMessageContext<UserType, DataView>::kMessageTag = {};

#pragma pack(pop)

}  // namespace internal

}  // webxr::mojom

#endif  // CONTENT_BROWSER_XR_WEBXR_INTERNALS_MOJOM_WEBXR_INTERNALS_MOJOM_SHARED_INTERNAL_H_