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

#include "media/capture/video/mock_gpu_memory_buffer_manager.h"
#include "build/chromeos_buildflags.h"

#include "media/video/fake_gpu_memory_buffer.h"

#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "media/capture/video/chromeos/request_manager.h"
#endif

namespace media {
namespace unittest_internal {

MockGpuMemoryBufferManager::MockGpuMemoryBufferManager() = default;

MockGpuMemoryBufferManager::~MockGpuMemoryBufferManager() = default;

// static
std::unique_ptr<gfx::GpuMemoryBuffer>
MockGpuMemoryBufferManager::CreateFakeGpuMemoryBuffer(
    const gfx::Size& size,
    gfx::BufferFormat format,
    gfx::BufferUsage usage,
    gpu::SurfaceHandle surface_handle,
    base::WaitableEvent* shutdown_event) {
  auto gmb = std::make_unique<FakeGpuMemoryBuffer>(size, format);
#if BUILDFLAG(IS_CHROMEOS_ASH)
  // For faking a valid JPEG blob buffer.
  if (base::checked_cast<size_t>(size.width()) >= sizeof(Camera3JpegBlob)) {
    Camera3JpegBlob* header = reinterpret_cast<Camera3JpegBlob*>(
        reinterpret_cast<uintptr_t>(gmb->memory(0)) + size.width() -
        sizeof(Camera3JpegBlob));
    header->jpeg_blob_id = kCamera3JpegBlobId;
    header->jpeg_size = size.width();
  }
#endif
  return gmb;
}

}  // namespace unittest_internal
}  // namespace media
