# Copyright 2012 The Dawn Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import("../../../scripts/dawn_overrides_with_defaults.gni")

import("//testing/test.gni")
import("${dawn_root}/generator/dawn_generator.gni")
import("${dawn_root}/scripts/dawn_features.gni")

group("tests") {
  testonly = true
  deps = [
    ":dawn_end2end_tests",
    ":dawn_perf_tests",
    ":dawn_unittests",
  ]
}

###############################################################################
# Gtest Gmock - Handle building inside and outside of Chromium.
###############################################################################

# When building outside of Chromium we need to define our own targets for GTest
# and GMock. However when compiling inside of Chromium we need to reuse the
# existing targets, both because Chromium has a special harness for swarming
# and because otherwise the "gn check" fails.

if (!build_with_chromium) {
  # When we aren't in Chromium we define out own targets based on the location
  # of the googletest repo.
  googletest_dir = dawn_googletest_dir

  config("gtest_config") {
    include_dirs = [
      "${googletest_dir}/googletest",
      "${googletest_dir}/googletest/include",
    ]
  }

  static_library("gtest") {
    testonly = true
    sources = [ "${googletest_dir}/googletest/src/gtest-all.cc" ]
    public_configs = [ ":gtest_config" ]
  }

  config("gmock_config") {
    include_dirs = [
      "${googletest_dir}/googlemock",
      "${googletest_dir}/googlemock/include",
      "${googletest_dir}/googletest/include",
    ]
  }

  static_library("gmock") {
    testonly = true
    sources = [ "${googletest_dir}/googlemock/src/gmock-all.cc" ]
    public_configs = [ ":gmock_config" ]
  }

  group("gmock_and_gtest") {
    testonly = true
    public_deps = [
      ":gmock",
      ":gtest",
    ]
  }
} else {
  # When we are in Chromium we reuse its targets, and also add some deps that
  # are needed to launch the test in swarming mode.
  group("gmock_and_gtest") {
    testonly = true
    public_deps = [
      "//base",
      "//base/test:test_support",
      "//testing/gmock",
      "//testing/gtest",
    ]
  }
}

###############################################################################
# Wrapping of Chromium targets
###############################################################################

# These targets are separated because they are Chromium sources files that
# can't use the dawn_internal config, otherwise Dawn's warning flags get
# applied while compiling a bunch of Chromium's //base (via header inclusion)
if (build_with_chromium) {
  source_set("unittests_main") {
    testonly = true
    deps = [ ":gmock_and_gtest" ]
    sources = [ "//gpu/dawn_unittests_main.cc" ]
  }
  source_set("end2end_tests_main") {
    testonly = true
    deps = [ ":gmock_and_gtest" ]
    sources = [ "//gpu/dawn_end2end_tests_main.cc" ]
  }
  source_set("perf_tests_main") {
    testonly = true
    deps = [ ":gmock_and_gtest" ]
    sources = [ "//gpu/dawn_perf_tests_main.cc" ]
  }
}

###############################################################################
# Copy target for DXC
###############################################################################

# When building with chromium under Windows, we need to copy the DXC from
# Windows SDK into build folder, in order to ensure a DXC of verison 1.6 is
# avaliable when running end-to-end tests in Chromium. Note that currently DXC
# only provided for x86 and x64 in Windows SDK 20348.
if (build_with_chromium && is_win &&
    (target_cpu == "x64" || target_cpu == "x86")) {
  # The windows_sdk_path is acquired in visual_studio_version.gni.
  import("//build/config/win/visual_studio_version.gni")

  # Windows 10 SDK version 10.0.20348.0 provides DXC compiler and validator both
  # of v1.6 and Chromium builds require this SDK version or higher.
  assert(defined(windows_sdk_path))
  assert(defined(windows_sdk_version))
  assert(windows_sdk_path != "")

  # Declare a copy target to copy DXC binary from Windows SDK for running Dawn
  # end-to-end test in Chromium.
  copy("copy_dxc_binary") {
    sources = [
      "$windows_sdk_path/bin/$windows_sdk_version/$target_cpu/dxc.exe",
      "$windows_sdk_path/bin/$windows_sdk_version/$target_cpu/dxcompiler.dll",
      "$windows_sdk_path/bin/$windows_sdk_version/$target_cpu/dxil.dll",
    ]

    outputs = [ "$root_out_dir/{{source_file_part}}" ]
  }
}

###############################################################################
# Dawn test template
###############################################################################
template("dawn_test") {
  test(target_name) {
    # Copy all variables except "configs", which has a default value
    forward_variables_from(invoker, "*", [ "configs" ])
    if (defined(invoker.configs)) {
      configs += invoker.configs
    }

    configs += [ "${dawn_root}/src/dawn/common:internal_config" ]

    # Running Dawn tests within Chromium in Windows may require DXC, copy DXC
    # binary from Windows SDK.
    if (build_with_chromium && is_win &&
        (target_cpu == "x64" || target_cpu == "x86")) {
      if (defined(data_deps)) {
        data_deps += [ ":copy_dxc_binary" ]
      } else {
        data_deps = [ ":copy_dxc_binary" ]
      }
    }
  }
}

###############################################################################
# Dawn unittests
###############################################################################

dawn_json_generator("mock_webgpu_gen") {
  target = "mock_api"
  outputs = [
    "src/dawn/mock_webgpu.h",
    "src/dawn/mock_webgpu.cpp",
  ]
}

# Source code for mocks used for unit testing are separated from the rest of
# sources so that they aren't included in non-test builds.
source_set("native_mocks_sources") {
  testonly = true

  deps = [
    ":gmock_and_gtest",
    "${dawn_root}/src/dawn/native:sources",
    "${dawn_root}/src/dawn/native:static",
    "${dawn_root}/src/dawn/utils",
  ]

  # Add internal dawn native config for internal unittests.
  configs += [ "${dawn_root}/src/dawn/native:internal" ]

  sources = [
    "unittests/native/mocks/BindGroupLayoutMock.cpp",
    "unittests/native/mocks/BindGroupLayoutMock.h",
    "unittests/native/mocks/BindGroupMock.cpp",
    "unittests/native/mocks/BindGroupMock.h",
    "unittests/native/mocks/BufferMock.cpp",
    "unittests/native/mocks/BufferMock.h",
    "unittests/native/mocks/CommandBufferMock.cpp",
    "unittests/native/mocks/CommandBufferMock.h",
    "unittests/native/mocks/ComputePipelineMock.cpp",
    "unittests/native/mocks/ComputePipelineMock.h",
    "unittests/native/mocks/DeviceMock.h",
    "unittests/native/mocks/ExternalTextureMock.cpp",
    "unittests/native/mocks/ExternalTextureMock.h",
    "unittests/native/mocks/PipelineLayoutMock.cpp",
    "unittests/native/mocks/PipelineLayoutMock.h",
    "unittests/native/mocks/QuerySetMock.cpp",
    "unittests/native/mocks/QuerySetMock.h",
    "unittests/native/mocks/RenderPipelineMock.cpp",
    "unittests/native/mocks/RenderPipelineMock.h",
    "unittests/native/mocks/SamplerMock.cpp",
    "unittests/native/mocks/SamplerMock.h",
    "unittests/native/mocks/ShaderModuleMock.cpp",
    "unittests/native/mocks/ShaderModuleMock.h",
    "unittests/native/mocks/SwapChainMock.cpp",
    "unittests/native/mocks/SwapChainMock.h",
    "unittests/native/mocks/TextureMock.cpp",
    "unittests/native/mocks/TextureMock.h",
  ]
}

dawn_test("dawn_unittests") {
  deps = [
    ":gmock_and_gtest",
    ":mock_webgpu_gen",
    ":native_mocks_sources",
    ":platform_mocks_sources",
    "${dawn_root}/src/dawn:cpp",
    "${dawn_root}/src/dawn:proc",
    "${dawn_root}/src/dawn/common",
    "${dawn_root}/src/dawn/native:sources",
    "${dawn_root}/src/dawn/native:static",
    "${dawn_root}/src/dawn/utils",
    "${dawn_root}/src/dawn/wire",
  ]

  # Add internal dawn native config for internal unittests.
  configs = [ "${dawn_root}/src/dawn/native:internal" ]

  # Add Tint public+common configs so <tint/tint.h> can be included to test
  # the Dawn/Tint boundary.
  configs += [
    "${dawn_root}/src/tint:tint_public_config",
    "${dawn_root}/src/tint:tint_common_config",
  ]

  sources = get_target_outputs(":mock_webgpu_gen")
  sources += [
    "${dawn_root}/src/dawn/wire/client/ClientMemoryTransferService_mock.cpp",
    "${dawn_root}/src/dawn/wire/client/ClientMemoryTransferService_mock.h",
    "${dawn_root}/src/dawn/wire/server/ServerMemoryTransferService_mock.cpp",
    "${dawn_root}/src/dawn/wire/server/ServerMemoryTransferService_mock.h",
    "DawnNativeTest.cpp",
    "DawnNativeTest.h",
    "MockCallback.h",
    "ToggleParser.cpp",
    "ToggleParser.h",
    "unittests/AsyncTaskTests.cpp",
    "unittests/BitSetIteratorTests.cpp",
    "unittests/BuddyAllocatorTests.cpp",
    "unittests/BuddyMemoryAllocatorTests.cpp",
    "unittests/ChainUtilsTests.cpp",
    "unittests/CommandAllocatorTests.cpp",
    "unittests/ConcurrentCacheTests.cpp",
    "unittests/EnumClassBitmasksTests.cpp",
    "unittests/EnumMaskIteratorTests.cpp",
    "unittests/ErrorTests.cpp",
    "unittests/FeatureTests.cpp",
    "unittests/GPUInfoTests.cpp",
    "unittests/GetProcAddressTests.cpp",
    "unittests/ITypArrayTests.cpp",
    "unittests/ITypBitsetTests.cpp",
    "unittests/ITypSpanTests.cpp",
    "unittests/ITypVectorTests.cpp",
    "unittests/LimitsTests.cpp",
    "unittests/LinkedListTests.cpp",
    "unittests/MathTests.cpp",
    "unittests/ObjectBaseTests.cpp",
    "unittests/PerStageTests.cpp",
    "unittests/PerThreadProcTests.cpp",
    "unittests/PlacementAllocatedTests.cpp",
    "unittests/RefBaseTests.cpp",
    "unittests/RefCountedTests.cpp",
    "unittests/ResultTests.cpp",
    "unittests/RingBufferAllocatorTests.cpp",
    "unittests/SerialMapTests.cpp",
    "unittests/SerialQueueTests.cpp",
    "unittests/SlabAllocatorTests.cpp",
    "unittests/StackContainerTests.cpp",
    "unittests/SubresourceStorageTests.cpp",
    "unittests/SystemUtilsTests.cpp",
    "unittests/ToBackendTests.cpp",
    "unittests/TypedIntegerTests.cpp",
    "unittests/UnicodeTests.cpp",
    "unittests/native/BlobTests.cpp",
    "unittests/native/CacheRequestTests.cpp",
    "unittests/native/CommandBufferEncodingTests.cpp",
    "unittests/native/CreatePipelineAsyncTaskTests.cpp",
    "unittests/native/DestroyObjectTests.cpp",
    "unittests/native/DeviceCreationTests.cpp",
    "unittests/native/ObjectContentHasherTests.cpp",
    "unittests/native/StreamTests.cpp",
    "unittests/validation/BindGroupValidationTests.cpp",
    "unittests/validation/BufferValidationTests.cpp",
    "unittests/validation/CommandBufferValidationTests.cpp",
    "unittests/validation/ComputeIndirectValidationTests.cpp",
    "unittests/validation/ComputeValidationTests.cpp",
    "unittests/validation/CopyCommandsValidationTests.cpp",
    "unittests/validation/CopyTextureForBrowserTests.cpp",
    "unittests/validation/DebugMarkerValidationTests.cpp",
    "unittests/validation/DeprecatedAPITests.cpp",
    "unittests/validation/DeprecatedAPITests.h",
    "unittests/validation/DeviceValidationTests.cpp",
    "unittests/validation/DrawIndirectValidationTests.cpp",
    "unittests/validation/DrawVertexAndIndexBufferOOBValidationTests.cpp",
    "unittests/validation/DynamicStateCommandValidationTests.cpp",
    "unittests/validation/ErrorScopeValidationTests.cpp",
    "unittests/validation/ExternalTextureTests.cpp",
    "unittests/validation/GetBindGroupLayoutValidationTests.cpp",
    "unittests/validation/IndexBufferValidationTests.cpp",
    "unittests/validation/InternalUsageValidationTests.cpp",
    "unittests/validation/LabelTests.cpp",
    "unittests/validation/MinimumBufferSizeValidationTests.cpp",
    "unittests/validation/MultipleDeviceTests.cpp",
    "unittests/validation/OverridableConstantsValidationTests.cpp",
    "unittests/validation/PipelineAndPassCompatibilityTests.cpp",
    "unittests/validation/QueryValidationTests.cpp",
    "unittests/validation/QueueOnSubmittedWorkDoneValidationTests.cpp",
    "unittests/validation/QueueSubmitValidationTests.cpp",
    "unittests/validation/QueueWriteBufferValidationTests.cpp",
    "unittests/validation/QueueWriteTextureValidationTests.cpp",
    "unittests/validation/RenderBundleValidationTests.cpp",
    "unittests/validation/RenderPassDescriptorValidationTests.cpp",
    "unittests/validation/RenderPipelineValidationTests.cpp",
    "unittests/validation/ResourceUsageTrackingTests.cpp",
    "unittests/validation/SamplerValidationTests.cpp",
    "unittests/validation/ShaderModuleValidationTests.cpp",
    "unittests/validation/StorageTextureValidationTests.cpp",
    "unittests/validation/TextureSubresourceTests.cpp",
    "unittests/validation/TextureValidationTests.cpp",
    "unittests/validation/TextureViewValidationTests.cpp",
    "unittests/validation/ToggleValidationTests.cpp",
    "unittests/validation/UnsafeAPIValidationTests.cpp",
    "unittests/validation/ValidationTest.cpp",
    "unittests/validation/ValidationTest.h",
    "unittests/validation/VertexBufferValidationTests.cpp",
    "unittests/validation/VertexStateValidationTests.cpp",
    "unittests/validation/VideoViewsValidationTests.cpp",
    "unittests/validation/WriteBufferTests.cpp",
    "unittests/wire/WireAdapterTests.cpp",
    "unittests/wire/WireArgumentTests.cpp",
    "unittests/wire/WireBasicTests.cpp",
    "unittests/wire/WireBufferMappingTests.cpp",
    "unittests/wire/WireCreatePipelineAsyncTests.cpp",
    "unittests/wire/WireDisconnectTests.cpp",
    "unittests/wire/WireErrorCallbackTests.cpp",
    "unittests/wire/WireExtensionTests.cpp",
    "unittests/wire/WireInjectDeviceTests.cpp",
    "unittests/wire/WireInjectInstanceTests.cpp",
    "unittests/wire/WireInjectSwapChainTests.cpp",
    "unittests/wire/WireInjectTextureTests.cpp",
    "unittests/wire/WireInstanceTests.cpp",
    "unittests/wire/WireMemoryTransferServiceTests.cpp",
    "unittests/wire/WireOptionalTests.cpp",
    "unittests/wire/WireQueueTests.cpp",
    "unittests/wire/WireShaderModuleTests.cpp",
    "unittests/wire/WireTest.cpp",
    "unittests/wire/WireTest.h",
  ]

  if (is_win) {
    sources += [ "unittests/WindowsUtilsTests.cpp" ]
  }

  if (dawn_enable_d3d12) {
    sources += [ "unittests/d3d12/CopySplitTests.cpp" ]
  }

  # When building inside Chromium, use their gtest main function because it is
  # needed to run in swarming correctly.
  if (build_with_chromium) {
    deps += [ ":unittests_main" ]
  } else {
    sources += [ "UnittestsMain.cpp" ]
  }
}

###############################################################################
# Dawn test infrastructure targets
###############################################################################

source_set("test_infra_sources") {
  configs += [ "${dawn_root}/src/dawn/native:internal" ]
  testonly = true

  deps = [
    "${dawn_root}/src/dawn:cpp",
    "${dawn_root}/src/dawn:proc",
    "${dawn_root}/src/dawn/common",
    "${dawn_root}/src/dawn/native:sources",
    "${dawn_root}/src/dawn/native:static",
    "${dawn_root}/src/dawn/utils",
    "${dawn_root}/src/dawn/wire",
  ]

  public_deps = [ ":gmock_and_gtest" ]

  if (dawn_supports_glfw_for_windowing || dawn_enable_opengl) {
    assert(dawn_supports_glfw_for_windowing)
    public_deps += [ "${dawn_root}/src/dawn/glfw" ]
  }

  sources = [
    "AdapterTestConfig.cpp",
    "AdapterTestConfig.h",
    "DawnTest.cpp",
    "DawnTest.h",
    "MockCallback.h",
    "ParamGenerator.h",
    "ToggleParser.cpp",
    "ToggleParser.h",
  ]
}

###############################################################################
# Dawn end2end tests targets
###############################################################################

# Source code for mocks used for platform testing are separated from the rest of
# sources so that they aren't included in non-test builds.
source_set("platform_mocks_sources") {
  configs += [ "${dawn_root}/src/dawn/native:internal" ]
  testonly = true

  deps = [
    ":gmock_and_gtest",
    "${dawn_root}/src/dawn/common",
    "${dawn_root}/src/dawn/platform",
  ]

  sources = [
    "mocks/platform/CachingInterfaceMock.cpp",
    "mocks/platform/CachingInterfaceMock.h",
  ]
}

source_set("end2end_tests_sources") {
  testonly = true

  deps = [
    ":platform_mocks_sources",
    ":test_infra_sources",
    "${dawn_root}/src/dawn:cpp",
    "${dawn_root}/src/dawn:proc",
    "${dawn_root}/src/dawn/common",
    "${dawn_root}/src/dawn/native:headers",
    "${dawn_root}/src/dawn/utils",
    "${dawn_root}/src/dawn/wire",
  ]

  sources = [
    "end2end/AdapterDiscoveryTests.cpp",
    "end2end/BasicTests.cpp",
    "end2end/BindGroupTests.cpp",
    "end2end/BufferTests.cpp",
    "end2end/BufferZeroInitTests.cpp",
    "end2end/ClipSpaceTests.cpp",
    "end2end/ColorStateTests.cpp",
    "end2end/CommandEncoderTests.cpp",
    "end2end/CompressedTextureFormatTests.cpp",
    "end2end/ComputeCopyStorageBufferTests.cpp",
    "end2end/ComputeDispatchTests.cpp",
    "end2end/ComputeLayoutMemoryBufferTests.cpp",
    "end2end/ComputeSharedMemoryTests.cpp",
    "end2end/ComputeStorageBufferBarrierTests.cpp",
    "end2end/CopyExternalTextureForBrowserTests.cpp",
    "end2end/CopyTests.cpp",
    "end2end/CopyTextureForBrowserTests.cpp",
    "end2end/CreatePipelineAsyncTests.cpp",
    "end2end/CullingTests.cpp",
    "end2end/DebugMarkerTests.cpp",
    "end2end/DepthBiasTests.cpp",
    "end2end/DepthStencilCopyTests.cpp",
    "end2end/DepthStencilLoadOpTests.cpp",
    "end2end/DepthStencilSamplingTests.cpp",
    "end2end/DepthStencilStateTests.cpp",
    "end2end/DestroyTests.cpp",
    "end2end/DeviceInitializationTests.cpp",
    "end2end/DeviceLifetimeTests.cpp",
    "end2end/DeviceLostTests.cpp",
    "end2end/DrawIndexedIndirectTests.cpp",
    "end2end/DrawIndexedTests.cpp",
    "end2end/DrawIndirectTests.cpp",
    "end2end/DrawTests.cpp",
    "end2end/DynamicBufferOffsetTests.cpp",
    "end2end/EntryPointTests.cpp",
    "end2end/ExperimentalDP4aTests.cpp",
    "end2end/ExternalTextureTests.cpp",
    "end2end/FirstIndexOffsetTests.cpp",
    "end2end/FragDepthTests.cpp",
    "end2end/GpuMemorySynchronizationTests.cpp",
    "end2end/IndexFormatTests.cpp",
    "end2end/MaxLimitTests.cpp",
    "end2end/MemoryAllocationStressTests.cpp",
    "end2end/MultisampledRenderingTests.cpp",
    "end2end/MultisampledSamplingTests.cpp",
    "end2end/NonzeroBufferCreationTests.cpp",
    "end2end/NonzeroTextureCreationTests.cpp",
    "end2end/ObjectCachingTests.cpp",
    "end2end/OpArrayLengthTests.cpp",
    "end2end/PipelineCachingTests.cpp",
    "end2end/PipelineLayoutTests.cpp",
    "end2end/PrimitiveStateTests.cpp",
    "end2end/PrimitiveTopologyTests.cpp",
    "end2end/QueryTests.cpp",
    "end2end/QueueTests.cpp",
    "end2end/QueueTimelineTests.cpp",
    "end2end/ReadOnlyDepthStencilAttachmentTests.cpp",
    "end2end/RenderAttachmentTests.cpp",
    "end2end/RenderBundleTests.cpp",
    "end2end/RenderPassLoadOpTests.cpp",
    "end2end/RenderPassTests.cpp",
    "end2end/RequiredBufferSizeInCopyTests.cpp",
    "end2end/SamplerFilterAnisotropicTests.cpp",
    "end2end/SamplerTests.cpp",
    "end2end/ScissorTests.cpp",
    "end2end/ShaderF16Tests.cpp",
    "end2end/ShaderTests.cpp",
    "end2end/ShaderValidationTests.cpp",
    "end2end/StorageTextureTests.cpp",
    "end2end/SubresourceRenderAttachmentTests.cpp",
    "end2end/Texture3DTests.cpp",
    "end2end/TextureCorruptionTests.cpp",
    "end2end/TextureFormatTests.cpp",
    "end2end/TextureSubresourceTests.cpp",
    "end2end/TextureViewTests.cpp",
    "end2end/TextureZeroInitTests.cpp",
    "end2end/VertexFormatTests.cpp",
    "end2end/VertexOnlyRenderPipelineTests.cpp",
    "end2end/VertexStateTests.cpp",
    "end2end/ViewportOrientationTests.cpp",
    "end2end/ViewportTests.cpp",
  ]

  libs = []

  if (dawn_enable_d3d12) {
    sources += [
      "end2end/D3D12CachingTests.cpp",
      "end2end/D3D12ResourceWrappingTests.cpp",
      "end2end/VideoViewsTests_win.cpp",
    ]
    libs += [
      "d3d11.lib",
      "dxgi.lib",
    ]
  }

  if (dawn_enable_metal) {
    sources += [
      "end2end/IOSurfaceWrappingTests.cpp",
      "end2end/VideoViewsTests_mac.cpp",
    ]
    frameworks = [ "IOSurface.framework" ]
  }

  if (dawn_supports_glfw_for_windowing) {
    sources += [
      "end2end/SwapChainTests.cpp",
      "end2end/SwapChainValidationTests.cpp",
      "end2end/WindowSurfaceTests.cpp",
    ]
  }

  if (dawn_enable_d3d12 || (dawn_enable_vulkan && is_chromeos) ||
      dawn_enable_metal) {
    sources += [
      "end2end/VideoViewsTests.cpp",
      "end2end/VideoViewsTests.h",
    ]
  }

  if (dawn_enable_vulkan && is_chromeos) {
    sources += [ "end2end/VideoViewsTests_gbm.cpp" ]
  }
}

source_set("white_box_tests_sources") {
  configs += [ "${dawn_root}/src/dawn/native:internal" ]
  testonly = true

  deps = [
    ":test_infra_sources",
    "${dawn_root}/src/dawn:cpp",
    "${dawn_root}/src/dawn:proc",
    "${dawn_root}/src/dawn/common",

    # Statically linked and with sources because the end2end white_box tests use Dawn internals.
    "${dawn_root}/src/dawn/native:sources",
    "${dawn_root}/src/dawn/native:static",
    "${dawn_root}/src/dawn/utils",
    "${dawn_root}/src/dawn/wire",
  ]

  sources = []

  if (dawn_enable_vulkan) {
    deps += [ "${dawn_vulkan_headers_dir}:vulkan_headers" ]

    if (is_chromeos) {
      sources += [
        "white_box/VulkanImageWrappingTests.cpp",
        "white_box/VulkanImageWrappingTests.h",
        "white_box/VulkanImageWrappingTests_DmaBuf.cpp",
      ]
    } else if (is_linux) {
      sources += [
        "white_box/VulkanImageWrappingTests.cpp",
        "white_box/VulkanImageWrappingTests.h",
        "white_box/VulkanImageWrappingTests_OpaqueFD.cpp",
      ]
    }

    if (dawn_enable_error_injection) {
      sources += [ "white_box/VulkanErrorInjectorTests.cpp" ]
    }
  }

  sources += [
    "white_box/BufferAllocatedSizeTests.cpp",
    "white_box/InternalResourceUsageTests.cpp",
    "white_box/InternalStorageBufferBindingTests.cpp",
    "white_box/QueryInternalShaderTests.cpp",
  ]

  if (dawn_enable_d3d12) {
    sources += [
      "white_box/D3D12DescriptorHeapTests.cpp",
      "white_box/D3D12ResidencyTests.cpp",
      "white_box/D3D12ResourceHeapTests.cpp",
      "white_box/GPUTimestampCalibrationTests.cpp",
      "white_box/GPUTimestampCalibrationTests.h",
      "white_box/GPUTimestampCalibrationTests_D3D12.cpp",
    ]
  }

  if (dawn_enable_metal) {
    sources += [
      "white_box/GPUTimestampCalibrationTests.cpp",
      "white_box/GPUTimestampCalibrationTests.h",
      "white_box/GPUTimestampCalibrationTests_Metal.mm",
      "white_box/MetalAutoreleasePoolTests.mm",
    ]
  }

  if (dawn_enable_opengles) {
    sources += [ "white_box/EGLImageWrappingTests.cpp" ]
    include_dirs = [ "//third_party/khronos" ]
  }

  libs = []
}

dawn_test("dawn_end2end_tests") {
  deps = [
    ":end2end_tests_sources",
    ":test_infra_sources",
    ":white_box_tests_sources",
  ]

  sources = []
  libs = []

  # When building inside Chromium, use their gtest main function because it is
  # needed to run in swarming correctly.
  if (build_with_chromium) {
    deps += [ ":end2end_tests_main" ]
  } else {
    sources += [ "End2EndTestsMain.cpp" ]
  }

  if (is_chromeos) {
    libs += [ "gbm" ]
  }
}

###############################################################################
# Dawn perf tests
###############################################################################

dawn_test("dawn_perf_tests") {
  deps = [
    ":test_infra_sources",
    "${dawn_root}/src/dawn:cpp",
    "${dawn_root}/src/dawn:proc",
    "${dawn_root}/src/dawn/common",
    "${dawn_root}/src/dawn/platform",
    "${dawn_root}/src/dawn/utils",
    "${dawn_root}/src/dawn/wire",
  ]

  sources = [
    "perf_tests/BufferUploadPerf.cpp",
    "perf_tests/DawnPerfTest.cpp",
    "perf_tests/DawnPerfTest.h",
    "perf_tests/DawnPerfTestPlatform.cpp",
    "perf_tests/DawnPerfTestPlatform.h",
    "perf_tests/DrawCallPerf.cpp",
    "perf_tests/ShaderRobustnessPerf.cpp",
    "perf_tests/SubresourceTrackingPerf.cpp",
  ]

  libs = []

  # When building inside Chromium, use their gtest main function and the
  # other perf test scaffolding in order to run in swarming correctly.
  if (build_with_chromium) {
    deps += [ ":perf_tests_main" ]
    data_deps = [ "//testing:run_perf_test" ]
  } else {
    sources += [ "PerfTestsMain.cpp" ]
  }

  if (dawn_enable_metal) {
    frameworks = [ "IOSurface.framework" ]
  }
}
