# 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/android/modules/buildflags.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") } assert(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/spinner.cc", "elements/spinner.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/radial_gradient_quad_renderer.cc", "renderers/radial_gradient_quad_renderer.h", "renderers/texture_copy_renderer.cc", "renderers/texture_copy_renderer.h", "renderers/textured_quad_renderer.cc", "renderers/textured_quad_renderer.h", "renderers/transparent_quad_renderer.cc", "renderers/transparent_quad_renderer.h", "skia_surface_provider.cc", "skia_surface_provider.h", "skia_surface_provider_factory.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", ] deps = [ ":vr_base", "//base", "//chrome/app:generated_resources", "//chrome/app/vector_icons", "//chrome/browser/vr/vector_icons", "//chrome/common:constants", "//components/vector_icons", "//device/base", "//device/vr:vr_base", "//device/vr/buildflags:buildflags", "//media", "//net", "//skia", "//ui/gfx/animation/keyframe", ] if (use_native_partitions) { # Mark symbols in this library as belonging to the VR partition. Only # exported symbols (module entrypoints) are affected. cflags = [ "-fsymbol-partition=vr_partition" ] } if (is_android) { sources += [ "jni_onload.cc" ] } defines = [ "VR_UI_IMPLEMENTATION" ] if (use_command_buffer) { sources += [ "cmd_buffer_surface_provider.cc", "cmd_buffer_surface_provider.h", "skia_surface_provider_factory_cmd_buffer.cc", ] deps += [ "//gpu/command_buffer/client:gles2_implementation", "//gpu/skia_bindings", ] } else { sources += [ "native_gl_surface_provider.cc", "native_gl_surface_provider.h", "skia_surface_provider_factory_native_gl.cc", ] deps += [ "//ui/gl/init" ] } } component("vr_common") { sources = [ "base_scheduler_delegate.cc", "base_scheduler_delegate.h", "browser_renderer.cc", "browser_renderer.h", "browser_renderer_browser_interface.h", "frame_type.h", "gesture_detector.cc", "gesture_detector.h", "graphics_delegate.h", "input_delegate.h", "platform_controller.h", "scheduler_browser_renderer_interface.h", "scheduler_delegate.h", "vr_export.h", "vr_web_contents_observer.cc", "vr_web_contents_observer.h", ] sources += [ "input_delegate_for_testing.cc", "input_delegate_for_testing.h", "platform_controller_for_testing.cc", "platform_controller_for_testing.h", ] public_deps = [ ":vr_base", "//device/vr/public/mojom:isolated_xr_service", ] deps = [ "//base", "//cc/paint", "//chrome/common:constants", "//components/omnibox/browser", "//components/omnibox/browser", "//components/ukm/content", "//content/public/browser", "//device/base", "//device/vr:vr_util", "//device/vr/buildflags: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", ] if (is_win) { sources += [ "win/graphics_delegate_win.cc", "win/graphics_delegate_win.h", "win/input_delegate_win.cc", "win/input_delegate_win.h", "win/scheduler_delegate_win.cc", "win/scheduler_delegate_win.h", "win/vr_browser_renderer_thread_win.cc", "win/vr_browser_renderer_thread_win.h", ] deps += [ "//services/viz/public/cpp/gpu" ] # Windows doesn't have app bundles, so include the UI directly. deps += [ ":vr_ui" ] } defines = [ "VR_IMPLEMENTATION" ] if (!use_command_buffer) { sources += [ "base_graphics_delegate.cc", "base_graphics_delegate.h", ] deps += [ "//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", "input_event.cc", "input_event.h", "macros.h", "model/camera_model.h", "model/capturing_state_model.h", "model/controller_model.cc", "model/controller_model.h", "model/web_vr_model.h", "pose_util.cc", "pose_util.h", "render_info.h", "scheduler_ui_interface.h", "ui_browser_interface.h", "ui_initial_state.cc", "ui_initial_state.h", "ui_interface.h", "ui_test_input.h", "vr_base_export.h", "vr_geometry_util.cc", "vr_geometry_util.h", ] defines = [ "VR_BASE_IMPLEMENTATION" ] public_deps = [ "//components/omnibox/browser", "//components/strings:components_strings_grit", "//content/public/common", "//device/vr:vr_gl_bindings", "//device/vr/public/cpp", "//ui/base", ] deps = [ "//base", "//chrome/app:generated_resources", "//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", ] if (is_android) { deps += [ "//chrome/android/features/vr:split_jni_headers" ] } } test("vr_common_unittests") { sources = [ "base_scheduler_delegate_unittest.cc", "browser_renderer_unittest.cc", "databinding/binding_unittest.cc", "elements/linear_layout_unittest.cc", "elements/rect_unittest.cc", "elements/scaled_depth_adjuster_unittest.cc", "elements/spinner_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", "gesture_detector_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", ] deps = [ ":vr_test_support", "//chrome/app/vector_icons", "//chrome/browser", "//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", ] } if (is_win) { configs += [ "//build/config/win:delayloads" ] } } 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/mock_ui_browser_interface.cc", "test/mock_ui_browser_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/769373): 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:gpu", "//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 # //chrome/test: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", ] deps = [ ":vr_common", "//chrome/common:constants", "//chrome/test:xr_browser_tests_common", "//device/vr:vr", "//device/vr/buildflags:buildflags", "//device/vr/orientation", "//device/vr/public/mojom:isolated_xr_service", "//device/vr/public/mojom:test_mojom", ] data_deps = [] # Windows-only tests and dependencies. if (is_win) { # Infrastructure. sources += [ "test/browser_test_browser_renderer_browser_interface.cc", "test/browser_test_browser_renderer_browser_interface.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_isolated_device_service_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", "//components/content_settings/core/browser", "//device/vr:directx_helpers", "//device/vr:openxr_data", ] if (enable_openxr) { deps += [ "//third_party/openxr" ] data_deps += [ "//device/vr:openxr_mock" ] } } } }