chromium/gpu/ipc/common/gpu_disk_cache_type_mojom_traits.h

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

#ifndef GPU_IPC_COMMON_GPU_DISK_CACHE_TYPE_MOJOM_TRAITS_H_
#define GPU_IPC_COMMON_GPU_DISK_CACHE_TYPE_MOJOM_TRAITS_H_

#include "gpu/gpu_export.h"
#include "gpu/ipc/common/gpu_disk_cache_type.h"
#include "gpu/ipc/common/gpu_disk_cache_type.mojom.h"

namespace mojo {

template <>
struct GPU_EXPORT
    EnumTraits<gpu::mojom::GpuDiskCacheType, gpu::GpuDiskCacheType> {};

namespace internal {

template <typename MojomDataViewType, typename HandleType>
struct GpuDiskCacheHandleMojomTraitsHelper {};

}  // namespace internal

template <>
struct StructTraits<gpu::mojom::GpuDiskCacheGlShaderHandleDataView,
                    gpu::GpuDiskCacheGlShaderHandle>
    : public internal::GpuDiskCacheHandleMojomTraitsHelper<
          gpu::mojom::GpuDiskCacheGlShaderHandleDataView,
          gpu::GpuDiskCacheGlShaderHandle> {};

template <>
struct StructTraits<gpu::mojom::GpuDiskCacheDawnWebGPUHandleDataView,
                    gpu::GpuDiskCacheDawnWebGPUHandle>
    : public internal::GpuDiskCacheHandleMojomTraitsHelper<
          gpu::mojom::GpuDiskCacheDawnWebGPUHandleDataView,
          gpu::GpuDiskCacheDawnWebGPUHandle> {};

template <>
struct StructTraits<gpu::mojom::GpuDiskCacheDawnGraphiteHandleDataView,
                    gpu::GpuDiskCacheDawnGraphiteHandle>
    : public internal::GpuDiskCacheHandleMojomTraitsHelper<
          gpu::mojom::GpuDiskCacheDawnGraphiteHandleDataView,
          gpu::GpuDiskCacheDawnGraphiteHandle> {};

template <>
struct GPU_EXPORT UnionTraits<gpu::mojom::GpuDiskCacheHandleDataView,
                              gpu::GpuDiskCacheHandle> {};

}  // namespace mojo

#endif  // GPU_IPC_COMMON_GPU_DISK_CACHE_TYPE_MOJOM_TRAITS_H_