blob: 0e243ff2aa8b4b6605cada4a66bc81a20de639d3 [file] [log] [blame]
// Copyright 2019 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.
#ifndef SERVICES_VIZ_PUBLIC_INTERFACES_GPU_MOJOM_BLINK_TEST_UTILS_H_
#define SERVICES_VIZ_PUBLIC_INTERFACES_GPU_MOJOM_BLINK_TEST_UTILS_H_
#include "services/viz/public/interfaces/gpu.mojom-blink.h"
namespace viz {
namespace mojom {
namespace blink {
class GpuMemoryBufferFactoryInterceptorForTesting : public GpuMemoryBufferFactory {
virtual GpuMemoryBufferFactory* GetForwardingInterface() = 0;
void CreateGpuMemoryBuffer(::gfx::mojom::blink::GpuMemoryBufferIdPtr id, const ::blink::WebSize& size, ::gfx::mojom::blink::BufferFormat format, ::gfx::mojom::blink::BufferUsage usage, CreateGpuMemoryBufferCallback callback) override;
void DestroyGpuMemoryBuffer(::gfx::mojom::blink::GpuMemoryBufferIdPtr id, const ::gpu::SyncToken& sync_token) override;
};
class GpuMemoryBufferFactoryAsyncWaiter {
public:
explicit GpuMemoryBufferFactoryAsyncWaiter(GpuMemoryBufferFactory* proxy);
~GpuMemoryBufferFactoryAsyncWaiter();
void CreateGpuMemoryBuffer(
::gfx::mojom::blink::GpuMemoryBufferIdPtr id, const ::blink::WebSize& size, ::gfx::mojom::blink::BufferFormat format, ::gfx::mojom::blink::BufferUsage usage, ::gfx::mojom::blink::GpuMemoryBufferHandlePtr* out_buffer_handle);
private:
GpuMemoryBufferFactory* const proxy_;
DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferFactoryAsyncWaiter);
};
class GpuInterceptorForTesting : public Gpu {
virtual Gpu* GetForwardingInterface() = 0;
void CreateGpuMemoryBufferFactory(GpuMemoryBufferFactoryRequest request) override;
void EstablishGpuChannel(EstablishGpuChannelCallback callback) override;
void CreateVideoEncodeAcceleratorProvider(::media::mojom::blink::VideoEncodeAcceleratorProviderRequest vea_provider) override;
};
class GpuAsyncWaiter {
public:
explicit GpuAsyncWaiter(Gpu* proxy);
~GpuAsyncWaiter();
void EstablishGpuChannel(
int32_t* out_client_id, mojo::ScopedMessagePipeHandle* out_channel_handle, ::gpu::mojom::blink::GpuInfoPtr* out_gpu_info, ::gpu::mojom::blink::GpuFeatureInfoPtr* out_gpu_feature_info);
private:
Gpu* const proxy_;
DISALLOW_COPY_AND_ASSIGN(GpuAsyncWaiter);
};
} // namespace blink
} // namespace mojom
} // namespace viz
#endif // SERVICES_VIZ_PUBLIC_INTERFACES_GPU_MOJOM_BLINK_TEST_UTILS_H_