# Copyright 2026 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/config/android/rules.gni") import("//chrome/common/features.gni") import("//third_party/grpc-java/grpc_java_library.gni") import("//third_party/jni_zero/jni_zero.gni") import("//tools/grit/grit_rule.gni") android_resources("xr_resources") { sources = [ "internal/res/color/immersive_video_button_tint.xml", "internal/res/drawable/ic_immersive_video_exit.xml", "internal/res/drawable/ic_panorama_horizontal.xml", "internal/res/drawable/immersive_video_card_background.xml", "internal/res/drawable/immersive_video_control_button_background.xml", "internal/res/drawable/immersive_video_orbiter_background.xml", "internal/res/layout/immersive_video_control_view.xml", "internal/res/layout/immersive_video_format_view.xml", "internal/res/values/colors.xml", "internal/res/values/styles.xml", ] } # Main Android library for the module android_library("java") { resources_package = "org.chromium.chrome.browser.modules.xr" sources = [ "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/ImmersiveVideoPlaybackActivity.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/ImmersiveVideoPlaybackCoordinator.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/ImmersiveVideoPlaybackDelegate.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/ImmersiveVideoPlaybackTypeUtils.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoControlAutoHideManager.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoControlCoordinator.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoControlMediator.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoControlProperties.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoControlSpatialView.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoControlView.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoControlViewBinder.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoFormatCoordinator.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoFormatMediator.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoFormatProperties.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoFormatSpatialView.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoFormatView.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoFormatViewBinder.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoHoverLayout.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoPlayerCoordinator.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoPlayerMediator.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoPlayerProperties.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoPlayerViewBinder.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoPoseManager.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoPoseStrategy.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoPoseStrategyHemisphere.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoPoseStrategyQuad.java", "internal/java/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoPoseStrategySphere.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrEntityHolderImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrFactoryImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrFloatSize3dImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrHeadPoseTracker.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrInteractableComponentImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrModuleProviderImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrMovableComponentImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrPanelEntityHolderImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrPixelDensityImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrPoseImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrQuaternionImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrResizableComponentImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrSceneCoreSessionInitializerImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrSceneCoreSessionManagerImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrSurfaceEntityHolderImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrSurfaceEntityUtils.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrTransformableEntityHolderImpl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/XrVector3Impl.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/custom_mesh/XrCurvedMeshGenerator.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/custom_mesh/XrCurvedMeshHolder.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/custom_mesh/XrCustomMeshGenerator.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/custom_mesh/XrCustomMeshHolder.java", "internal/java/src/org/chromium/chrome/browser/xr/scenecore/custom_mesh/XrSeamlessSphereMeshGenerator.java", ] deps = [ ":xr_resources", "//base:build_info_java", "//base:bundle_utils_java", "//base:callback_java", "//base:lifetime_java", "//base:log_java", "//base:resetters_java", "//base:supplier_java", "//base:task_executor_java", "//base:tasks_java", "//base:token_java", "//build/android:build_java", "//chrome/android:chrome_java", "//chrome/android:xr_java", "//chrome/browser/android/lifecycle:java", "//chrome/browser/tab:java", "//chrome/browser/ui/android/night_mode:java", "//chrome/browser/ui/android/strings:ui_strings_grd", "//components/browser_ui/styles/android:java", "//components/thin_webview:factory_java", "//components/thin_webview:java", "//content/public/android:content_java", "//third_party/android_deps:guava_java", "//third_party/android_deps:material_design_java", "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm_java", "//third_party/android_sdk:android_xr_extensions_java", "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/androidx:androidx_appcompat_appcompat_java", "//third_party/androidx:androidx_xr_arcore_arcore_java", "//third_party/androidx:androidx_xr_arcore_arcore_openxr_java", "//third_party/androidx:androidx_xr_runtime_runtime_java", "//third_party/androidx:androidx_xr_runtime_runtime_openxr_java", "//third_party/androidx:androidx_xr_scenecore_scenecore_java", "//third_party/androidx:androidx_xr_scenecore_scenecore_runtime_java", "//third_party/blink/public/mojom:mojom_platform_java", "//third_party/jni_zero:jni_zero_java", "//ui/accessibility:ax_base_java", "//ui/android:ui_java", ] } robolectric_binary("xr_immersive_playback_junit_tests") { # Needed by androidx.test.core.app.ActivityScenario android_manifest = "//chrome/android/junit/AndroidManifest.xml" package_name = "org.chromium.chrome" sources = [ "internal/junit/src/org/chromium/chrome/browser/media/immersive_playback/ImmersiveVideoPlaybackCoordinatorTest.java", "internal/junit/src/org/chromium/chrome/browser/media/immersive_playback/ImmersiveVideoPlaybackNightModeStateProviderUnitTest.java", "internal/junit/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoControlAutoHideManagerTest.java", "internal/junit/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoControlCoordinatorTest.java", "internal/junit/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoControlMediatorTest.java", "internal/junit/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoFormatCoordinatorTest.java", "internal/junit/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoPlayerCoordinatorTest.java", "internal/junit/src/org/chromium/chrome/browser/media/immersive_playback/components/ImmersiveVideoPoseManagerTest.java", ] deps = [ ":java", "//base:base_java_test_support", "//base:base_junit_test_support", "//base:resetters_java", "//base:supplier_java", "//chrome/android:chrome_app_java_resources", "//chrome/android:chrome_java", "//chrome/browser/android/lifecycle:java", "//chrome/browser/ui/android/night_mode:java", "//components/thin_webview:java", "//content/public/android:content_main_dex_java", "//third_party/android_deps:material_design_java", "//third_party/androidx:androidx_activity_activity_java", "//third_party/androidx:androidx_appcompat_appcompat_java", "//third_party/androidx:androidx_test_rules_java", "//third_party/androidx:androidx_xr_runtime_runtime_java", "//third_party/androidx:androidx_xr_scenecore_scenecore_java", "//third_party/androidx:androidx_xr_scenecore_scenecore_runtime_java", "//third_party/androidx:androidx_xr_scenecore_scenecore_testing_java", "//third_party/blink/public/mojom:mojom_platform_java", "//third_party/junit", "//third_party/mockito:mockito_java", "//ui/accessibility:ax_base_java", "//ui/android:ui_java_test_support", "//ui/android:ui_no_recycler_view_java", ] } robolectric_binary("xr_junit_tests") { # Needed by androidx.test.core.app.ActivityScenario android_manifest = "//chrome/android/junit/AndroidManifest.xml" package_name = "org.chromium.chrome" sources = [ "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/XrFactoryImplTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/XrHeadPoseTrackerTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/XrInteractableComponentImplTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/XrMeshDataTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/XrMovableComponentImplTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/XrPanelEntityHolderImplTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/XrPixelDensityImplTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/XrResizableComponentImplTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/XrSceneCoreSessionInitializerImplTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/XrSceneCoreSessionManagerImplTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/XrSurfaceEntityHolderImplTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/XrSurfaceEntityUtilsTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/custom_mesh/XrCurvedMeshGeneratorTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/custom_mesh/XrCustomMeshHolderTest.java", "internal/junit/src/org/chromium/chrome/browser/xr/scenecore/custom_mesh/XrSeamlessSphereMeshGeneratorTest.java", ] deps = [ ":java", "//base:base_java_test_support", "//base:base_junit_test_support", "//base:callback_java", "//chrome/android:chrome_app_java_resources", "//chrome/android:chrome_java", "//chrome/browser/android/lifecycle:java", "//third_party/androidx:androidx_activity_activity_java", "//third_party/androidx:androidx_xr_runtime_runtime_java", "//third_party/androidx:androidx_xr_scenecore_scenecore_java", "//third_party/androidx:androidx_xr_scenecore_scenecore_runtime_java", "//third_party/androidx:androidx_xr_scenecore_scenecore_testing_java", "//third_party/junit", "//third_party/mockito:mockito_java", "//ui/android:ui_no_recycler_view_java", ] } java_group("javatests_manifest_java") { testonly = true mergeable_android_manifests = [ "internal/java/AndroidManifest.xml" ] } android_library("javatests") { testonly = true resources_package = "org.chromium.chrome" sources = [ "internal/javatests/src/org/chromium/chrome/browser/media/immersive_playback/ImmersiveVideoPlaybackActivityTest.java" ] deps = [ ":java", ":javatests_manifest_java", "//base:flagged_apis_java", "//chrome/android/javatests:chrome_test_java_helper", "//components/thin_webview:java", ] }