blob: 7b53af9b86d1e571c2c34f80df0288277e14e660 [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/viz/test/gpu_host_impl_test_api.h"
#include <algorithm>
#include <memory>
#include <set>
#include <string>
#include <utility>
#include "build/build_config.h"
namespace viz {
gpu::GPUInfo GpuHostImplTestApi::HookDelegateBase::GetGPUInfo() const {
return original_delegate_->GetGPUInfo();
}
gpu::GpuFeatureInfo GpuHostImplTestApi::HookDelegateBase::GetGpuFeatureInfo()
const {
return original_delegate_->GetGpuFeatureInfo();
}
void GpuHostImplTestApi::HookDelegateBase::DidInitialize(
const gpu::GPUInfo& gpu_info,
const gpu::GpuFeatureInfo& gpu_feature_info,
const std::optional<gpu::GPUInfo>& gpu_info_for_hardware_gpu,
const std::optional<gpu::GpuFeatureInfo>& gpu_feature_info_for_hardware_gpu,
const gfx::GpuExtraInfo& gpu_extra_info) {
original_delegate_->DidInitialize(
gpu_info, gpu_feature_info, gpu_info_for_hardware_gpu,
gpu_feature_info_for_hardware_gpu, gpu_extra_info);
}
void GpuHostImplTestApi::HookDelegateBase::DidFailInitialize() {
original_delegate_->DidFailInitialize();
}
void GpuHostImplTestApi::HookDelegateBase::DidCreateContextSuccessfully() {
original_delegate_->DidCreateContextSuccessfully();
}
void GpuHostImplTestApi::HookDelegateBase::MaybeShutdownGpuProcess() {
original_delegate_->MaybeShutdownGpuProcess();
}
void GpuHostImplTestApi::HookDelegateBase::DidUpdateGPUInfo(
const gpu::GPUInfo& gpu_info) {
original_delegate_->DidUpdateGPUInfo(gpu_info);
}
#if BUILDFLAG(IS_WIN)
void GpuHostImplTestApi::HookDelegateBase::DidUpdateOverlayInfo(
const gpu::OverlayInfo& overlay_info) {
original_delegate_->DidUpdateOverlayInfo(overlay_info);
}
void GpuHostImplTestApi::HookDelegateBase::DidUpdateDXGIInfo(
gfx::mojom::DXGIInfoPtr dxgi_info) {
original_delegate_->DidUpdateDXGIInfo(std::move(dxgi_info));
}
#endif
void GpuHostImplTestApi::HookDelegateBase::BlockDomainsFrom3DAPIs(
const std::set<GURL>& urls,
gpu::DomainGuilt guilt) {
original_delegate_->BlockDomainsFrom3DAPIs(urls, guilt);
}
std::string GpuHostImplTestApi::HookDelegateBase::GetIsolationKey(
int32_t client_id,
const blink::WebGPUExecutionContextToken& token) {
return original_delegate_->GetIsolationKey(client_id, token);
}
void GpuHostImplTestApi::HookDelegateBase::DisableGpuCompositing() {
original_delegate_->DisableGpuCompositing();
}
bool GpuHostImplTestApi::HookDelegateBase::GpuAccessAllowed() const {
return original_delegate_->GpuAccessAllowed();
}
gpu::GpuDiskCacheFactory*
GpuHostImplTestApi::HookDelegateBase::GetGpuDiskCacheFactory() {
return original_delegate_->GetGpuDiskCacheFactory();
}
void GpuHostImplTestApi::HookDelegateBase::RecordLogMessage(
int32_t severity,
const std::string& header,
const std::string& message) {
original_delegate_->RecordLogMessage(severity, header, message);
}
void GpuHostImplTestApi::HookDelegateBase::BindDiscardableMemoryReceiver(
mojo::PendingReceiver<
discardable_memory::mojom::DiscardableSharedMemoryManager> receiver) {
original_delegate_->BindDiscardableMemoryReceiver(std::move(receiver));
}
void GpuHostImplTestApi::HookDelegateBase::BindInterface(
const std::string& interface_name,
mojo::ScopedMessagePipeHandle interface_pipe) {
original_delegate_->BindInterface(interface_name, std::move(interface_pipe));
}
#if BUILDFLAG(IS_OZONE)
void GpuHostImplTestApi::HookDelegateBase::TerminateGpuProcess(
const std::string& message) {
original_delegate_->TerminateGpuProcess(message);
}
#endif
GpuHostImplTestApi::GpuHostImplTestApi(GpuHostImpl* gpu_host)
: gpu_host_(gpu_host) {}
GpuHostImplTestApi::~GpuHostImplTestApi() {
if (hook_delegate_)
gpu_host_->delegate_ = hook_delegate_->original_delegate();
}
void GpuHostImplTestApi::FlushRemoteForTesting() {
gpu_host_->gpu_service_remote_.FlushForTesting();
}
void GpuHostImplTestApi::SetGpuService(
mojo::Remote<mojom::GpuService> gpu_service) {
gpu_host_->gpu_service_remote_ = std::move(gpu_service);
}
void GpuHostImplTestApi::HookDelegate(
std::unique_ptr<HookDelegateBase> delegate) {
DCHECK(delegate);
GpuHostImpl::Delegate* original_delegate =
hook_delegate_ ? hook_delegate_->original_delegate()
: gpu_host_->delegate_.get();
hook_delegate_ = std::move(delegate);
hook_delegate_->set_original_delegate(original_delegate);
gpu_host_->delegate_ = hook_delegate_.get();
}
} // namespace viz