blob: c8d1d8dea24d63e36973545ce63573d8c78c7b0c [file] [edit]
# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/buildflag_header.gni")
import("//chrome/common/features.gni")
import("//device/vr/buildflags/buildflags.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//testing/test.gni")
import("//tools/grit/repack.gni")
if (is_android) {
import("//build/config/android/rules.gni")
}
source_set("vr") {
public = [ "vr_tab_helper.h" ]
public_deps = [ "//content/public/browser" ]
if (enable_vr) {
public += [ "chrome_xr_integration_client.h" ]
public_deps += [ "//base" ]
}
}
# Header-only target so non-:browser targets can include this header
# without depending on :browser. The .cc file remains in
# //chrome/browser:browser.
source_set("chrome_xr_integration_client") {
public = [ "chrome_xr_integration_client.h" ]
public_deps = [
"//base",
"//content/public/browser",
]
}
source_set("impl") {
sources = [ "vr_tab_helper.cc" ]
deps = [
":vr",
"//chrome/browser:browser_public_dependencies",
"//chrome/browser/ui/browser_window",
"//device/vr/buildflags",
"//third_party/blink/public/common:headers",
]
if (is_android) {
deps += [
"//base",
"//chrome/browser/flags:flags_android",
]
} else {
deps += [ "//chrome/browser/ui/tabs:tab_strip" ]
}
}
source_set("unit_tests") {
testonly = true
sources = [ "vr_tab_helper_unittest.cc" ]
deps = [
":vr",
"//testing/gtest",
]
}
# This should only contain files that are useful if enable_vr = false. For
# tests/infrastructure that require enable_vr = true, see
# :xr_browser_tests_vr_required.
source_set("xr_browser_tests_common") {
testonly = true
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
# Infrastructure
sources = [
"test/conditional_skipping.cc",
"test/conditional_skipping.h",
"test/multi_class_browser_test.h",
"test/webxr_browser_test.cc",
"test/webxr_browser_test.h",
"test/webxr_vr_browser_test.cc",
"test/webxr_vr_browser_test.h",
"test/xr_browser_test.cc",
"test/xr_browser_test.h",
]
# Tests
sources += [
"webxr_vr_runtimeless_browser_test.cc",
"webxr_vr_spatial_tracking_test.cc",
]
deps = [
"//base",
"//chrome/browser/ui/browser_window",
"//chrome/test/base:browser_tests_runner",
"//chrome/test/base:chrome_test_utils",
"//sandbox/policy",
]
public_deps = [ "//chrome/test:test_support" ]
if (is_android) {
public_deps += [
"//chrome/browser/android:tabs_public",
"//chrome/test:test_support_ui_android",
]
} else {
public_deps += [ "//chrome/test:test_support_ui" ]
}
data = [
"//chrome/test/data/xr/e2e_test_files/",
"//third_party/blink/web_tests/resources/testharness.js",
]
if (enable_vr) {
deps += [ "//device/vr" ]
}
if (enable_vr && is_win) {
deps += [ "//device/vr:directx_helpers" ]
}
if (!is_mac && !is_android) {
data_deps = [ "//chrome:packed_resources" ]
}
}
if (enable_vr) {
component("vr_ui") {
sources = [
"databinding/binding.h",
"databinding/binding_base.h",
"elements/corner_radii.h",
"elements/draw_phase.cc",
"elements/draw_phase.h",
"elements/environment/grid.cc",
"elements/environment/grid.h",
"elements/full_screen_rect.cc",
"elements/full_screen_rect.h",
"elements/indicator_spec.cc",
"elements/indicator_spec.h",
"elements/linear_layout.cc",
"elements/linear_layout.h",
"elements/rect.cc",
"elements/rect.h",
"elements/scaled_depth_adjuster.cc",
"elements/scaled_depth_adjuster.h",
"elements/text.cc",
"elements/text.h",
"elements/textured_element.cc",
"elements/textured_element.h",
"elements/transient_element.cc",
"elements/transient_element.h",
"elements/ui_element.cc",
"elements/ui_element.h",
"elements/ui_element_name.cc",
"elements/ui_element_name.h",
"elements/ui_element_type.cc",
"elements/ui_element_type.h",
"elements/ui_texture.cc",
"elements/ui_texture.h",
"elements/vector_icon.cc",
"elements/vector_icon.h",
"elements/viewport_aware_root.cc",
"elements/viewport_aware_root.h",
"frame_lifecycle.cc",
"frame_lifecycle.h",
"model/color_scheme.cc",
"model/color_scheme.h",
"model/model.cc",
"model/model.h",
"renderers/base_quad_renderer.cc",
"renderers/base_quad_renderer.h",
"renderers/base_renderer.cc",
"renderers/base_renderer.h",
"renderers/grid_renderer.cc",
"renderers/grid_renderer.h",
"renderers/radial_gradient_quad_renderer.cc",
"renderers/radial_gradient_quad_renderer.h",
"renderers/textured_quad_renderer.cc",
"renderers/textured_quad_renderer.h",
"target_property.cc",
"target_property.h",
"ui.cc",
"ui.h",
"ui_element_renderer.cc",
"ui_element_renderer.h",
"ui_renderer.cc",
"ui_renderer.h",
"ui_scene.cc",
"ui_scene.h",
"ui_scene_creator.cc",
"ui_scene_creator.h",
"vr_ui_export.h",
]
if (is_win) {
sources += [
"elements/spinner.cc",
"elements/spinner.h",
]
}
deps = [
":vr_base",
"//base",
"//chrome/app:generated_resources",
"//chrome/app/vector_icons",
"//chrome/common:constants",
"//components/vector_icons",
"//device/base",
"//device/vr:vr_base",
"//device/vr/buildflags",
"//media",
"//net",
"//skia",
"//ui/gfx/animation/keyframe",
]
configs += [ "//build/config/compiler:wexit_time_destructors" ]
defines = [ "VR_UI_IMPLEMENTATION" ]
if (is_android) {
sources += [ "jni_onload.cc" ]
deps += [ "//third_party/jni_zero" ]
}
}
component("vr_common") {
sources = [
"browser_renderer.cc",
"browser_renderer.h",
"frame_type.h",
"graphics_delegate.cc",
"graphics_delegate.h",
"vr_browser_renderer_thread.cc",
"vr_browser_renderer_thread.h",
"vr_export.h",
"vr_web_contents_observer.cc",
"vr_web_contents_observer.h",
]
public_deps = [
":vr_base",
"//device/vr/public/mojom:isolated_xr_service",
]
deps = [
":vr_ui",
"//base",
"//cc/paint",
"//chrome/common:constants",
"//components/ukm/content",
"//content/public/browser",
"//device/base",
"//device/vr:vr_util",
"//device/vr/buildflags",
"//device/vr/public/mojom:isolated_xr_service",
"//media",
"//net",
"//services/audio/public/cpp",
"//services/metrics/public/cpp:ukm_builders",
"//skia",
"//ui/base",
"//ui/display",
]
configs += [ "//build/config/compiler:wexit_time_destructors" ]
defines = [ "VR_IMPLEMENTATION" ]
if (is_win) {
sources += [
"graphics_delegate_win.cc",
"graphics_delegate_win.h",
]
deps += [ "//services/viz/public/cpp/gpu" ]
}
if (is_android) {
sources += [
"graphics_delegate_android.cc",
"graphics_delegate_android.h",
]
deps += [
"//components/webxr",
"//device/vr/android:vr_android",
"//gpu/command_buffer/service:gles2",
"//ui/gl/init",
]
}
}
# vr_base contains common dependencies of vr_common and vr_ui. It exists
# because vr_ui must not depend on vr_common.
component("vr_base") {
sources = [
"browser_ui_interface.h",
"fov_rectangle.h",
"macros.h",
"model/camera_model.h",
"model/capturing_state_model.h",
"model/web_vr_model.h",
"pose_util.cc",
"pose_util.h",
"render_info.h",
"scheduler_ui_interface.h",
"ui_interface.h",
"ui_test_input.cc",
"ui_test_input.h",
"vr_base_export.h",
"vr_geometry_util.cc",
"vr_geometry_util.h",
]
defines = [ "VR_BASE_IMPLEMENTATION" ]
public_deps = [
"//components/strings:components_strings_grit",
"//content/public/common",
"//device/vr:vr_gl_bindings",
"//device/vr/public/cpp",
"//ui/base",
]
deps = [
"//base",
"//components/security_state/core",
"//components/ukm/content",
"//components/url_formatter",
"//content/public/browser",
"//device/vr/public/mojom:isolated_xr_service",
"//media",
"//net",
"//services/metrics/public/cpp:ukm_builders",
"//skia",
]
configs += [ "//build/config/compiler:wexit_time_destructors" ]
}
test("vr_common_unittests") {
sources = [
"browser_renderer_unittest.cc",
"databinding/binding_unittest.cc",
"elements/linear_layout_unittest.cc",
"elements/rect_unittest.cc",
"elements/scaled_depth_adjuster_unittest.cc",
"elements/text_unittest.cc",
"elements/transient_element_unittest.cc",
"elements/ui_element_unittest.cc",
"elements/vector_icon_unittest.cc",
"elements/viewport_aware_root_unittest.cc",
"test/paths.cc",
"test/paths.h",
"test/run_all_unittests.cc",
"test/ui_test.cc",
"test/ui_test.h",
"ui_scene_unittest.cc",
"ui_unittest.cc",
]
if (is_win) {
sources += [ "elements/spinner_unittest.cc" ]
}
deps = [
":vr_test_support",
"//chrome/app/vector_icons",
"//chrome/test:test_support",
"//components/url_formatter",
"//components/vector_icons",
"//content/test:test_support",
"//mojo/public/cpp/bindings",
"//services/network:test_support",
"//testing/gmock",
"//ui/gfx:test_support",
"//ui/gfx/animation/keyframe",
"//ui/gfx/geometry",
]
if (is_android) {
deps += [
"//chrome:chrome_android_core",
"//ui/android:ui_java",
]
}
# TODO(crbug.com/40031409): Fix code that adds exit-time destructors and
# enable the diagnostic by removing this line.
configs += [ "//build/config/compiler:no_exit_time_destructors" ]
}
test("vr_common_perftests") {
sources = [
"test/run_all_perftests.cc",
"text_perftest.cc",
]
deps = [
":vr_gl_test_support",
":vr_test_support",
"//testing/perf",
]
if (is_android) {
deps += [ "//ui/android:ui_java" ]
}
# Needed for isolate script to execute
data_deps = [ "//testing:run_perf_test" ]
}
source_set("vr_test_support") {
testonly = true
sources = [
"test/animation_utils.cc",
"test/animation_utils.h",
"test/constants.cc",
"test/constants.h",
"test/mock_browser_ui_interface.cc",
"test/mock_browser_ui_interface.h",
"test/vr_test_suite.cc",
"test/vr_test_suite.h",
]
public_deps = [
":vr_common",
":vr_ui",
"//base/test:test_support",
"//cc:test_support",
"//components/security_state/core",
"//content/test:test_support",
"//mojo/core/embedder",
"//skia",
"//testing/gtest",
"//ui/accessibility:ax_enums_mojo",
"//ui/gfx:test_support",
# TODO(mthiesse, crbug.com/41346944): Remove dependency on
# device/vr:fakes.
"//device/vr:vr_fakes",
# TODO(cjgrant): Figure out why including //ui/android:ui_java here
# doesn't propagate to individual test executable targets.
]
data_deps = [ ":vr_test_pak" ]
}
source_set("vr_gl_test_support") {
testonly = true
sources = [
"test/gl_test_environment.h",
"test/gl_test_environment_unittest.cc",
"test/vr_gl_test_suite.cc",
"test/vr_gl_test_suite.h",
]
public_deps = [
"//base/test:test_support",
"//device/vr:vr_gl_bindings",
"//skia",
"//testing/gtest",
]
deps = [
":vr_test_support",
"//ui/gl:test_support",
]
if (use_command_buffer) {
sources += [ "test/gl_test_environment_cmd_buffer.cc" ]
deps += [
"//gpu/command_buffer/client:gles2_implementation",
"//gpu/ipc:gl_in_process_context",
]
} else {
sources += [ "test/gl_test_environment_native_gl.cc" ]
}
}
repack("vr_test_pak") {
sources = [
"$root_gen_dir/chrome/generated_resources_en-US.pak",
"$root_gen_dir/components/components_resources.pak",
"$root_gen_dir/components/strings/components_strings_en-US.pak",
]
output = "$root_out_dir/vr_test.pak"
deps = [
"//chrome/app:generated_resources",
"//components/resources:components_resources",
"//components/strings",
]
}
if (!is_android) {
# This should only contain that files that are useful if enable_vr = true.
# For tests/infrastructure that can be used with enable_vr = false, see
# :xr_browser_tests_common.
source_set("xr_browser_tests_vr_required") {
testonly = true
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
# Infrastructure
sources = [
"test/mock_xr_device_hook_base.cc",
"test/mock_xr_device_hook_base.h",
"test/mock_xr_input_source.cc",
"test/mock_xr_input_source.h",
]
deps = [
":vr_common",
":xr_browser_tests_common",
"//chrome/common:constants",
"//device/vr",
"//device/vr:vr_test_utils",
"//device/vr/buildflags",
"//device/vr/orientation",
"//device/vr/public/mojom:isolated_xr_service",
"//device/vr/public/mojom/test:test_mojom",
]
data_deps = []
# Windows-only tests and dependencies.
if (is_win) {
# Infrastructure.
sources += [
"test/ui_utils.cc",
"test/ui_utils.h",
]
# Tests.
sources += [
"webxr_vr_frame_loop_browser_test.cc",
"webxr_vr_frame_pose_browser_test.cc",
"webxr_vr_indicators_browser_test.cc",
"webxr_vr_input_browser_test.cc",
"webxr_vr_isolated_device_service_test.cc",
"webxr_vr_lifecycle_browser_test.cc",
"webxr_vr_permission_browser_test.cc",
"webxr_vr_permission_request_browser_test.cc",
"webxr_vr_pixel_browser_test.cc",
"webxr_vr_secondary_views_browser_test.cc",
"webxr_vr_tab_browser_test.cc",
"webxr_vr_transition_browser_test.cc",
]
deps += [
":vr_common",
"//chrome/browser/content_settings:content_settings_factory",
"//components/content_settings/core/browser",
"//device/vr:directx_helpers",
"//device/vr:openxr_data",
]
}
if (enable_openxr) {
deps += [
"//device/vr:openxr_test_helper",
"//third_party/openxr",
]
data_deps += [ "//device/vr:openxr_mock" ]
}
}
} else if (enable_openxr) {
source_set("android_browsertests") {
testonly = true
defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
# Infrastructure.
sources = [
"test/mock_xr_device_hook_base.cc",
"test/mock_xr_device_hook_base.h",
"test/mock_xr_input_source.cc",
"test/mock_xr_input_source.h",
"test/ui_utils.cc",
"test/ui_utils.h",
]
# Tests.
sources += [
"webxr_vr_frame_loop_browser_test.cc",
"webxr_vr_frame_pose_browser_test.cc",
"webxr_vr_indicators_browser_test.cc",
"webxr_vr_input_browser_test.cc",
"webxr_vr_layers_browser_test.cc",
"webxr_vr_lifecycle_browser_test.cc",
"webxr_vr_permission_browser_test.cc",
"webxr_vr_permission_request_browser_test.cc",
"webxr_vr_pixel_browser_test.cc",
"webxr_vr_secondary_views_browser_test.cc",
"webxr_vr_tab_browser_test.cc",
"webxr_vr_transition_browser_test.cc",
]
deps = [
":vr_common",
":xr_browser_tests_common",
"//chrome/browser/content_settings:content_settings_factory",
"//chrome/common:constants",
"//chrome/test:xr_android_emulator_tests_runner",
"//components/content_settings/browser",
"//components/content_settings/core/browser",
"//components/webxr",
"//components/webxr/android",
"//components/webxr/android:features_java",
"//components/webxr/android:xr_java",
"//device/vr",
"//device/vr:openxr_data",
"//device/vr:openxr_test_helper",
"//device/vr:vr_test_utils",
"//device/vr/buildflags",
"//device/vr/orientation",
"//device/vr/public/mojom:isolated_xr_service",
"//device/vr/public/mojom/test:test_mojom",
"//third_party/openxr",
]
}
}
}