chromium/ui/android/BUILD.gn

# Copyright 2015 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("//build/config/locales.gni")
import("//testing/test.gni")
import("//third_party/jni_zero/jni_zero.gni")
import("//tools/grit/grit_rule.gni")

assert(is_android)

component("android") {
  output_name = "ui_android"
  sources = [
    "animation_utils.h",
    "color_utils_android.cc",
    "color_utils_android.h",
    "delegated_frame_host_android.cc",
    "delegated_frame_host_android.h",
    "display_android_manager.cc",
    "display_android_manager.h",
    "edge_effect.cc",
    "edge_effect.h",
    "event_forwarder.cc",
    "event_forwarder.h",
    "handle_view_resources.cc",
    "handle_view_resources.h",
    "modal_dialog_bridge.cc",
    "modal_dialog_bridge.h",
    "overscroll_glow.cc",
    "overscroll_glow.h",
    "overscroll_refresh.cc",
    "overscroll_refresh.h",
    "overscroll_refresh_handler.cc",
    "overscroll_refresh_handler.h",
    "progress_bar_config.h",
    "resources/nine_patch_resource.cc",
    "resources/nine_patch_resource.h",
    "resources/resource.cc",
    "resources/resource.h",
    "resources/resource_factory.cc",
    "resources/resource_manager.h",
    "resources/resource_manager_impl.cc",
    "resources/resource_manager_impl.h",
    "resources/ui_resource_provider.cc",
    "resources/ui_resource_provider.h",
    "screen_android.h",
    "ui_android_export.h",
    "ui_android_feature_map.cc",
    "ui_android_features.cc",
    "ui_android_features.h",
    "view_android.cc",
    "view_android.h",
    "view_android_observer.h",
    "window_android.cc",
    "window_android.h",
    "window_android_compositor.h",
    "window_android_observer.h",
  ]

  defines = [ "UI_ANDROID_IMPLEMENTATION" ]

  deps = [
    ":java_enums_srcjar",
    ":ui_android_jni_headers",
    "//base",
    "//cc/slim",
    "//components/viz/client",
    "//components/viz/common",
    "//components/viz/host",
    "//services/viz/public/mojom",
    "//skia",
    "//third_party/android_opengl/etc1",
    "//third_party/blink/public:blink_headers",
    "//ui/base",
    "//ui/base/cursor",
    "//ui/base/cursor/mojom:cursor_type",
    "//ui/compositor",
    "//ui/display",
    "//ui/events",
    "//ui/events/devices",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/touch_selection",
    "//url",
  ]
}

java_cpp_features("java_features_srcjar") {
  # External code should depend on ":android_java" instead.
  visibility = [ ":*" ]
  sources = [ "//ui/android/ui_android_features.cc" ]
  template = "//ui/android/java_templates/UiAndroidFeatures.java.tmpl"
}

# A minimal library used to expose ui features to webview
android_library("ui_android_features_java") {
  srcjar_deps = [ ":java_features_srcjar" ]
}

static_library("test_support") {
  testonly = true
  sources = [
    "dummy_screen_android.cc",
    "dummy_screen_android.h",
  ]

  deps = [
    "//ui/android",
    "//ui/display",
  ]
}

generate_jni("ui_android_jni_headers") {
  sources = [
    "java/src/org/chromium/ui/ModalDialogBridge.java",
    "java/src/org/chromium/ui/OverscrollRefreshHandler.java",
    "java/src/org/chromium/ui/base/EventForwarder.java",
    "java/src/org/chromium/ui/base/LocalizationUtils.java",
    "java/src/org/chromium/ui/base/UiAndroidFeatureMap.java",
    "java/src/org/chromium/ui/base/ViewAndroidDelegate.java",
    "java/src/org/chromium/ui/base/WindowAndroid.java",
    "java/src/org/chromium/ui/display/DisplayAndroidManager.java",
    "java/src/org/chromium/ui/dragdrop/DropDataAndroid.java",
    "java/src/org/chromium/ui/events/devices/InputDeviceObserver.java",
    "java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java",
    "java/src/org/chromium/ui/gl/SurfaceTextureListener.java",
    "java/src/org/chromium/ui/resources/HandleViewResources.java",
    "java/src/org/chromium/ui/resources/ResourceFactory.java",
    "java/src/org/chromium/ui/resources/ResourceManager.java",
  ]
}

java_cpp_enum("java_enums_srcjar") {
  sources = [
    "../base/ime/text_input_action.h",
    "../base/ime/text_input_type.h",
    "../base/page_transition_types.h",
    "../base/pointer/pointer_device.h",
    "../base/ui_base_types.h",
    "../events/android/gesture_event_type.h",
    "../events/back_gesture_event.h",
    "../gfx/android/java_bitmap.h",
    "../gfx/overlay_transform.h",
    "overscroll_refresh.h",
    "resources/resource_manager.h",
    "resources/system_ui_resource_type.h",
  ]
}

java_strings_grd("ui_strings_grd") {
  grd_file = "java/strings/android_ui_strings.grd"
  outputs = [ "values/android_ui_strings.xml" ] +
            process_file_template(
                android_bundle_locales_as_resources,
                [ "values-{{source_name_part}}/android_ui_strings.xml" ])
}

android_resources("ui_java_resources") {
  sources = [
    "java/res/anim/emphasized.xml",
    "java/res/anim/menu_enter.xml",
    "java/res/anim/menu_enter_from_bottom.xml",
    "java/res/anim/menu_enter_from_bottom_left.xml",
    "java/res/anim/menu_enter_from_top_left.xml",
    "java/res/anim/menu_exit.xml",
    "java/res/anim/menu_exit_from_bottom.xml",
    "java/res/anim/menu_exit_from_bottom_left.xml",
    "java/res/anim/menu_exit_from_top_left.xml",
    "java/res/color/blue_when_enabled_dark.xml",
    "java/res/color/blue_when_enabled_list.xml",
    "java/res/color/default_text_color_light_list.xml",
    "java/res/color/default_text_color_list_baseline.xml",
    "java/res/color/default_text_color_on_accent1_baseline_list.xml",
    "java/res/color/default_text_color_secondary_light_list.xml",
    "java/res/color/default_text_color_secondary_list_baseline.xml",
    "java/res/color/filled_button_bg.xml",
    "java/res/color/filled_button_ripple_color.xml",
    "java/res/color/list_menu_item_icon_color_list.xml",
    "java/res/color/list_menu_item_text_color_list.xml",
    "java/res/color/text_button_ripple_color_list_baseline.xml",
    "java/res/drawable-hdpi/btn_close.png",
    "java/res/drawable-hdpi/ic_expand_less_black_24dp.png",
    "java/res/drawable-hdpi/ic_expand_more_black_24dp.png",
    "java/res/drawable-hdpi/popup_bg.9.png",
    "java/res/drawable-hdpi/popup_bg_8dp.9.png",
    "java/res/drawable-mdpi/btn_close.png",
    "java/res/drawable-mdpi/ic_expand_less_black_24dp.png",
    "java/res/drawable-mdpi/ic_expand_more_black_24dp.png",
    "java/res/drawable-mdpi/popup_bg.9.png",
    "java/res/drawable-mdpi/popup_bg_8dp.9.png",
    "java/res/drawable-xhdpi/btn_close.png",
    "java/res/drawable-xhdpi/ic_expand_less_black_24dp.png",
    "java/res/drawable-xhdpi/ic_expand_more_black_24dp.png",
    "java/res/drawable-xhdpi/popup_bg.9.png",
    "java/res/drawable-xhdpi/popup_bg_8dp.9.png",
    "java/res/drawable-xxhdpi/btn_close.png",
    "java/res/drawable-xxhdpi/ic_expand_less_black_24dp.png",
    "java/res/drawable-xxhdpi/ic_expand_more_black_24dp.png",
    "java/res/drawable-xxhdpi/popup_bg.9.png",
    "java/res/drawable-xxhdpi/popup_bg_8dp.9.png",
    "java/res/drawable-xxxhdpi/btn_close.png",
    "java/res/drawable-xxxhdpi/ic_expand_less_black_24dp.png",
    "java/res/drawable-xxxhdpi/ic_expand_more_black_24dp.png",
    "java/res/drawable-xxxhdpi/popup_bg.9.png",
    "java/res/drawable-xxxhdpi/popup_bg_8dp.9.png",
    "java/res/drawable/custom_toast_background.xml",
    "java/res/drawable/dialog_bg_baseline.xml",
    "java/res/drawable/drag_handlebar.xml",
    "java/res/drawable/drag_shadow_background.xml",
    "java/res/drawable/ic_apps_blue_24dp.xml",
    "java/res/drawable/ic_expand_more_horizontal_black_24dp.xml",
    "java/res/drawable/ic_globe_24dp.xml",
    "java/res/drawable/ic_globe_48dp.xml",
    "java/res/drawable/list_menu_background.xml",
    "java/res/drawable/menu_bg_baseline.xml",
    "java/res/drawable/transition_expand_less_expand_more_black_24dp.xml",
    "java/res/drawable/transition_expand_more_expand_less_black_24dp.xml",
    "java/res/font/accent_font.xml",
    "java/res/layout/custom_toast_layout.xml",
    "java/res/layout/dropdown_item.xml",
    "java/res/layout/horizontal_divider.xml",
    "java/res/layout/list_menu_item.xml",
    "java/res/layout/list_menu_layout.xml",
    "java/res/layout/list_section_divider.xml",
    "java/res/values-ldrtl/dimens.xml",
    "java/res/values-ldrtl/values.xml",
    "java/res/values-night/colors.xml",
    "java/res/values-night/dimens.xml",
    "java/res/values-sw600dp/dimens.xml",
    "java/res/values-sw600dp/values.xml",
    "java/res/values-sw720dp/values.xml",
    "java/res/values-v31/colors.xml",
    "java/res/values/attrs.xml",
    "java/res/values/color_palette.xml",
    "java/res/values/dimens.xml",
    "java/res/values/font_certs.xml",
    "java/res/values/ids.xml",
    "java/res/values/one_off_colors.xml",
    "java/res/values/overlayable.xml",
    "java/res/values/semantic_colors_adaptive.xml",
    "java/res/values/semantic_colors_non_adaptive.xml",
    "java/res/values/strings.xml",
    "java/res/values/styles.xml",
    "java/res/values/values.xml",
  ]

  deps = [ ":ui_strings_grd" ]
}

java_group("ui_java") {
  deps = [
    ":ui_full_java",
    ":ui_utils_java",
  ]
}

# This is created explicitly for remoting_apk to avoid including
# unused JNI functions.
android_library("ui_utils_java") {
  sources = [
    "java/src/org/chromium/ui/KeyboardUtils.java",
    "java/src/org/chromium/ui/KeyboardVisibilityDelegate.java",
    "java/src/org/chromium/ui/MotionEventUtils.java",
    "java/src/org/chromium/ui/UiUtils.java",
  ]
  deps = [
    "//base:base_java",
    "//third_party/androidx:androidx_annotation_annotation_java",
    "//third_party/androidx:androidx_appcompat_appcompat_resources_java",
    "//third_party/androidx:androidx_core_core_java",
  ]
}

android_library("ui_no_recycler_view_java") {
  sources = [
    "java/src/org/chromium/ui/AsyncViewProvider.java",
    "java/src/org/chromium/ui/AsyncViewStub.java",
    "java/src/org/chromium/ui/DeferredViewStubInflationProvider.java",
    "java/src/org/chromium/ui/DropdownAdapter.java",
    "java/src/org/chromium/ui/DropdownDividerDrawable.java",
    "java/src/org/chromium/ui/DropdownItem.java",
    "java/src/org/chromium/ui/DropdownItemBase.java",
    "java/src/org/chromium/ui/DropdownPopupWindow.java",
    "java/src/org/chromium/ui/DropdownPopupWindowImpl.java",
    "java/src/org/chromium/ui/DropdownPopupWindowInterface.java",
    "java/src/org/chromium/ui/ElidedUrlTextView.java",
    "java/src/org/chromium/ui/HorizontalListDividerDrawable.java",
    "java/src/org/chromium/ui/InsetObserver.java",
    "java/src/org/chromium/ui/InsetsRectProvider.java",
    "java/src/org/chromium/ui/LayoutInflaterUtils.java",
    "java/src/org/chromium/ui/ModalDialogBridge.java",
    "java/src/org/chromium/ui/OverscrollRefreshHandler.java",
    "java/src/org/chromium/ui/UiSwitches.java",
    "java/src/org/chromium/ui/ViewProvider.java",
    "java/src/org/chromium/ui/animation/AnimationPerformanceTracker.java",
    "java/src/org/chromium/ui/animation/EmptyAnimationListener.java",
    "java/src/org/chromium/ui/base/ActivityIntentRequestTrackerDelegate.java",
    "java/src/org/chromium/ui/base/ActivityKeyboardVisibilityDelegate.java",
    "java/src/org/chromium/ui/base/ActivityWindowAndroid.java",
    "java/src/org/chromium/ui/base/ApplicationViewportInsetSupplier.java",
    "java/src/org/chromium/ui/base/Clipboard.java",
    "java/src/org/chromium/ui/base/ClipboardImpl.java",
    "java/src/org/chromium/ui/base/DeviceFormFactor.java",
    "java/src/org/chromium/ui/base/EventForwarder.java",
    "java/src/org/chromium/ui/base/EventOffsetHandler.java",
    "java/src/org/chromium/ui/base/IdleDetector.java",
    "java/src/org/chromium/ui/base/ImmutableWeakReference.java",
    "java/src/org/chromium/ui/base/IntentRequestTracker.java",
    "java/src/org/chromium/ui/base/IntentRequestTrackerImpl.java",
    "java/src/org/chromium/ui/base/LocalizationUtils.java",
    "java/src/org/chromium/ui/base/MimeTypeUtils.java",
    "java/src/org/chromium/ui/base/OverlayTransformApiHelper.java",
    "java/src/org/chromium/ui/base/PhotoPicker.java",
    "java/src/org/chromium/ui/base/PhotoPickerDelegate.java",
    "java/src/org/chromium/ui/base/PhotoPickerListener.java",
    "java/src/org/chromium/ui/base/ResourceBundle.java",
    "java/src/org/chromium/ui/base/SPenSupport.java",
    "java/src/org/chromium/ui/base/SelectFileDialog.java",
    "java/src/org/chromium/ui/base/TouchDevice.java",
    "java/src/org/chromium/ui/base/UiAndroidFeatureList.java",
    "java/src/org/chromium/ui/base/UiAndroidFeatureMap.java",
    "java/src/org/chromium/ui/base/ViewAndroidDelegate.java",
    "java/src/org/chromium/ui/base/ViewUtils.java",
    "java/src/org/chromium/ui/base/ViewportInsets.java",
    "java/src/org/chromium/ui/base/WindowAndroid.java",
    "java/src/org/chromium/ui/base/WindowDelegate.java",
    "java/src/org/chromium/ui/display/DisplayAndroid.java",
    "java/src/org/chromium/ui/display/DisplayAndroidManager.java",
    "java/src/org/chromium/ui/display/DisplaySwitches.java",
    "java/src/org/chromium/ui/display/DisplayUtil.java",
    "java/src/org/chromium/ui/display/PhysicalDisplayAndroid.java",
    "java/src/org/chromium/ui/dragdrop/AnimatedImageDragShadowBuilder.java",
    "java/src/org/chromium/ui/dragdrop/DragAndDropBrowserDelegate.java",
    "java/src/org/chromium/ui/dragdrop/DragAndDropDelegate.java",
    "java/src/org/chromium/ui/dragdrop/DragAndDropDelegateImpl.java",
    "java/src/org/chromium/ui/dragdrop/DragDropGlobalState.java",
    "java/src/org/chromium/ui/dragdrop/DragDropMetricUtils.java",
    "java/src/org/chromium/ui/dragdrop/DragEventDispatchHelper.java",
    "java/src/org/chromium/ui/dragdrop/DragStateTracker.java",
    "java/src/org/chromium/ui/dragdrop/DropDataAndroid.java",
    "java/src/org/chromium/ui/dragdrop/DropDataContentProvider.java",
    "java/src/org/chromium/ui/dragdrop/DropDataProviderImpl.java",
    "java/src/org/chromium/ui/dragdrop/DropDataProviderUtils.java",
    "java/src/org/chromium/ui/drawable/AnimationLooper.java",
    "java/src/org/chromium/ui/drawable/StateListDrawableBuilder.java",
    "java/src/org/chromium/ui/events/devices/InputDeviceObserver.java",
    "java/src/org/chromium/ui/gfx/Animation.java",
    "java/src/org/chromium/ui/gfx/BitmapHelper.java",
    "java/src/org/chromium/ui/gfx/ViewConfigurationHelper.java",
    "java/src/org/chromium/ui/gl/ScopedJavaSurfaceControl.java",
    "java/src/org/chromium/ui/gl/SurfaceTextureListener.java",
    "java/src/org/chromium/ui/gl/SurfaceTexturePlatformWrapper.java",
    "java/src/org/chromium/ui/interpolators/AndroidxInterpolators.java",
    "java/src/org/chromium/ui/interpolators/Interpolators.java",
    "java/src/org/chromium/ui/listmenu/BasicListMenu.java",
    "java/src/org/chromium/ui/listmenu/ListMenu.java",
    "java/src/org/chromium/ui/listmenu/ListMenuButton.java",
    "java/src/org/chromium/ui/listmenu/ListMenuButtonDelegate.java",
    "java/src/org/chromium/ui/listmenu/ListMenuItemAdapter.java",
    "java/src/org/chromium/ui/listmenu/ListMenuItemProperties.java",
    "java/src/org/chromium/ui/listmenu/ListMenuItemViewBinder.java",
    "java/src/org/chromium/ui/listmenu/ListSectionDividerProperties.java",
    "java/src/org/chromium/ui/listmenu/ListSectionDividerViewBinder.java",
    "java/src/org/chromium/ui/modaldialog/DialogDismissalCause.java",
    "java/src/org/chromium/ui/modaldialog/ModalDialogManager.java",
    "java/src/org/chromium/ui/modaldialog/ModalDialogManagerHolder.java",
    "java/src/org/chromium/ui/modaldialog/ModalDialogProperties.java",
    "java/src/org/chromium/ui/modaldialog/PendingDialogContainer.java",
    "java/src/org/chromium/ui/modaldialog/SimpleModalDialogController.java",
    "java/src/org/chromium/ui/modelutil/ForwardingListObservable.java",
    "java/src/org/chromium/ui/modelutil/LayoutViewBuilder.java",
    "java/src/org/chromium/ui/modelutil/LazyConstructionPropertyMcp.java",
    "java/src/org/chromium/ui/modelutil/ListModel.java",
    "java/src/org/chromium/ui/modelutil/ListModelBase.java",
    "java/src/org/chromium/ui/modelutil/ListModelChangeProcessor.java",
    "java/src/org/chromium/ui/modelutil/ListObservable.java",
    "java/src/org/chromium/ui/modelutil/ListObservableImpl.java",
    "java/src/org/chromium/ui/modelutil/MVCListAdapter.java",
    "java/src/org/chromium/ui/modelutil/ModelListAdapter.java",
    "java/src/org/chromium/ui/modelutil/ModelListPropertyChangeFilter.java",
    "java/src/org/chromium/ui/modelutil/PropertyKey.java",
    "java/src/org/chromium/ui/modelutil/PropertyListModel.java",
    "java/src/org/chromium/ui/modelutil/PropertyModel.java",
    "java/src/org/chromium/ui/modelutil/PropertyModelAnimatorFactory.java",
    "java/src/org/chromium/ui/modelutil/PropertyModelChangeProcessor.java",
    "java/src/org/chromium/ui/modelutil/PropertyObservable.java",
    "java/src/org/chromium/ui/modelutil/SimpleList.java",
    "java/src/org/chromium/ui/permissions/ActivityAndroidPermissionDelegate.java",
    "java/src/org/chromium/ui/permissions/AndroidPermissionDelegate.java",
    "java/src/org/chromium/ui/permissions/AndroidPermissionDelegateWithRequester.java",
    "java/src/org/chromium/ui/permissions/ContextualNotificationPermissionRequester.java",
    "java/src/org/chromium/ui/permissions/PermissionCallback.java",
    "java/src/org/chromium/ui/permissions/PermissionPrefs.java",
    "java/src/org/chromium/ui/resources/HandleViewResources.java",
    "java/src/org/chromium/ui/resources/LayoutResource.java",
    "java/src/org/chromium/ui/resources/Resource.java",
    "java/src/org/chromium/ui/resources/ResourceFactory.java",
    "java/src/org/chromium/ui/resources/ResourceLoader.java",
    "java/src/org/chromium/ui/resources/ResourceManager.java",
    "java/src/org/chromium/ui/resources/async/AsyncPreloadResourceLoader.java",
    "java/src/org/chromium/ui/resources/dynamics/BitmapDynamicResource.java",
    "java/src/org/chromium/ui/resources/dynamics/CaptureObserver.java",
    "java/src/org/chromium/ui/resources/dynamics/CaptureUtils.java",
    "java/src/org/chromium/ui/resources/dynamics/DynamicResource.java",
    "java/src/org/chromium/ui/resources/dynamics/DynamicResourceLoader.java",
    "java/src/org/chromium/ui/resources/dynamics/DynamicResourceReadyOnceCallback.java",
    "java/src/org/chromium/ui/resources/dynamics/DynamicResourceSnapshot.java",
    "java/src/org/chromium/ui/resources/dynamics/SoftwareDraw.java",
    "java/src/org/chromium/ui/resources/dynamics/ViewResourceAdapter.java",
    "java/src/org/chromium/ui/resources/dynamics/ViewResourceInflater.java",
    "java/src/org/chromium/ui/resources/statics/NinePatchData.java",
    "java/src/org/chromium/ui/resources/statics/StaticResource.java",
    "java/src/org/chromium/ui/resources/statics/StaticResourceLoader.java",
    "java/src/org/chromium/ui/resources/system/SystemResourceLoader.java",
    "java/src/org/chromium/ui/text/DownloadableFontTextAppearanceSpan.java",
    "java/src/org/chromium/ui/text/EmptyTextWatcher.java",
    "java/src/org/chromium/ui/text/NoUnderlineClickableSpan.java",
    "java/src/org/chromium/ui/text/SpanApplier.java",
    "java/src/org/chromium/ui/util/AccessibilityUtil.java",
    "java/src/org/chromium/ui/util/AttrUtils.java",
    "java/src/org/chromium/ui/util/ColorUtils.java",
    "java/src/org/chromium/ui/util/StyleUtils.java",
    "java/src/org/chromium/ui/util/TokenHolder.java",
    "java/src/org/chromium/ui/util/ValueUtils.java",
    "java/src/org/chromium/ui/util/WindowInsetsUtils.java",
    "java/src/org/chromium/ui/widget/AnchoredPopupWindow.java",
    "java/src/org/chromium/ui/widget/ButtonCompat.java",
    "java/src/org/chromium/ui/widget/CheckableImageView.java",
    "java/src/org/chromium/ui/widget/ChromeBulletSpan.java",
    "java/src/org/chromium/ui/widget/ChromeImageButton.java",
    "java/src/org/chromium/ui/widget/ChromeImageView.java",
    "java/src/org/chromium/ui/widget/LoadingView.java",
    "java/src/org/chromium/ui/widget/OptimizedFrameLayout.java",
    "java/src/org/chromium/ui/widget/RectProvider.java",
    "java/src/org/chromium/ui/widget/RippleBackgroundHelper.java",
    "java/src/org/chromium/ui/widget/TextViewWithClickableSpans.java",
    "java/src/org/chromium/ui/widget/TextViewWithLeading.java",
    "java/src/org/chromium/ui/widget/TextViewWithTightWrap.java",
    "java/src/org/chromium/ui/widget/Toast.java",
    "java/src/org/chromium/ui/widget/ToastManager.java",
    "java/src/org/chromium/ui/widget/UiWidgetFactory.java",
    "java/src/org/chromium/ui/widget/ViewLookupCachingFrameLayout.java",
    "java/src/org/chromium/ui/widget/ViewRectProvider.java",
  ]
  deps = [
    ":ui_android_features_java",
    ":ui_java_resources",
    ":ui_utils_java",
    "//base:base_java",
    "//base:content_uri_utils_java",
    "//build/android:build_java",
    "//components/url_formatter/android:url_formatter_java",
    "//third_party/android_deps:com_google_code_findbugs_jsr305_java",
    "//third_party/androidx:androidx_activity_activity_java",
    "//third_party/androidx:androidx_annotation_annotation_experimental_java",
    "//third_party/androidx:androidx_annotation_annotation_java",
    "//third_party/androidx:androidx_appcompat_appcompat_java",
    "//third_party/androidx:androidx_appcompat_appcompat_resources_java",
    "//third_party/androidx:androidx_asynclayoutinflater_asynclayoutinflater_java",
    "//third_party/androidx:androidx_core_core_animation_java",
    "//third_party/androidx:androidx_core_core_java",
    "//third_party/androidx:androidx_interpolator_interpolator_java",
    "//third_party/androidx:androidx_vectordrawable_vectordrawable_animated_java",
    "//third_party/jni_zero:jni_zero_java",
    "//ui/accessibility:ax_base_java",
    "//ui/base:clipboard_jni_headers_java",
    "//ui/base:select_file_dialog_jni_headers_java",
    "//ui/base/cursor/mojom:cursor_type_java",
    "//ui/base/ime/mojom:mojom_java",
    "//url:gurl_java",
  ]

  srcjar_deps = [
    ":java_enums_srcjar",
    ":ui_android_jni_headers",
  ]
  resources_package = "org.chromium.ui"
}

android_library("ui_recycler_view_java") {
  sources = [
    "java/src/org/chromium/ui/modelutil/RecyclerViewAdapter.java",
    "java/src/org/chromium/ui/modelutil/SimpleRecyclerViewAdapter.java",
    "java/src/org/chromium/ui/modelutil/SimpleRecyclerViewMcp.java",
    "java/src/org/chromium/ui/modelutil/SimpleRecyclerViewMcpBase.java",
  ]
  deps = [
    ":ui_no_recycler_view_java",
    "//third_party/androidx:androidx_annotation_annotation_java",
    "//third_party/androidx:androidx_recyclerview_recyclerview_java",
  ]
}

java_group("ui_full_java") {
  deps = [
    ":ui_no_recycler_view_java",
    ":ui_recycler_view_java",
  ]
}

robolectric_library("ui_junit_test_support") {
  sources = [
    "junit/src/org/chromium/ui/resources/dynamics/DynamicResourceTestUtils.java",
    "junit/src/org/chromium/ui/shadows/ShadowAnimatedStateListDrawable.java",
    "junit/src/org/chromium/ui/shadows/ShadowAppCompatResources.java",
    "junit/src/org/chromium/ui/shadows/ShadowAsyncLayoutInflater.java",
    "junit/src/org/chromium/ui/shadows/ShadowColorUtils.java",
  ]
  deps = [
    ":ui_java",
    "//base:base_java",
    "//third_party/androidx:androidx_annotation_annotation_java",
    "//third_party/androidx:androidx_appcompat_appcompat_resources_java",
    "//third_party/androidx:androidx_asynclayoutinflater_asynclayoutinflater_java",
    "//third_party/junit",
  ]
}

android_library("ui_java_test_support") {
  testonly = true
  sources = [
    "javatests/src/org/chromium/ui/test/transit/SoftKeyboardCondition.java",
    "javatests/src/org/chromium/ui/test/transit/SoftKeyboardElement.java",
    "javatests/src/org/chromium/ui/test/util/BlankUiTestActivity.java",
    "javatests/src/org/chromium/ui/test/util/BlankUiTestActivityTestCase.java",
    "javatests/src/org/chromium/ui/test/util/DeviceRestriction.java",
    "javatests/src/org/chromium/ui/test/util/GmsCoreVersionRestriction.java",
    "javatests/src/org/chromium/ui/test/util/MockitoHelper.java",
    "javatests/src/org/chromium/ui/test/util/NightModeTestUtils.java",
    "javatests/src/org/chromium/ui/test/util/RenderTestRule.java",
    "javatests/src/org/chromium/ui/test/util/UiDisableIf.java",
    "javatests/src/org/chromium/ui/test/util/UiDisableIfSkipCheck.java",
    "javatests/src/org/chromium/ui/test/util/UiRestriction.java",
    "javatests/src/org/chromium/ui/test/util/ViewUtils.java",
    "javatests/src/org/chromium/ui/test/util/modaldialog/FakeModalDialogManager.java",
    "javatests/src/org/chromium/ui/test/util/modelutil/FakeViewProvider.java",
    "junit/src/org/chromium/ui/base/TestActivity.java",
  ]
  deps = [
    ":ui_java",
    "//base:base_java",
    "//base:base_java_test_support",
    "//base/test:public_transit_java",
    "//components/browser_ui/modaldialog/android:java",
    "//third_party/android_deps:com_google_code_findbugs_jsr305_java",

    # For androidx.test.espresso.ViewInteraction
    "//third_party/android_deps:espresso_java",
    "//third_party/android_deps:material_design_java",
    "//third_party/androidx:androidx_annotation_annotation_java",
    "//third_party/androidx:androidx_appcompat_appcompat_java",
    "//third_party/androidx:androidx_appcompat_appcompat_resources_java",
    "//third_party/androidx:androidx_test_monitor_java",
    "//third_party/androidx:androidx_vectordrawable_vectordrawable_animated_java",
    "//third_party/hamcrest:hamcrest_core_java",
    "//third_party/hamcrest:hamcrest_library_java",
    "//third_party/jni_zero:jni_zero_java",
    "//third_party/junit",
    "//third_party/mockito:mockito_java",
    "//ui/android:ui_no_recycler_view_java",
  ]
}

android_resources("ui_junit_resources") {
  testonly = true
  sources = [
    "junit/res/font/custom_font.xml",
    "junit/res/layout/inflated_view.xml",
    "junit/res/layout/layout_view_builder_test.xml",
    "junit/res/layout/main_view.xml",
    "junit/res/values/strings.xml",
    "junit/res/values/styles.xml",
  ]
  android_manifest = "junit/AndroidManifest.xml"
}

robolectric_library("ui_android_junit_tests") {
  testonly = true
  resources_package = "org.chromium.ui"
  sources = [
    "java/src/org/chromium/ui/text/DownloadableFontTextAppearanceSpanTest.java",
    "junit/src/org/chromium/ui/AsyncViewProviderTest.java",
    "junit/src/org/chromium/ui/AsyncViewStubTest.java",
    "junit/src/org/chromium/ui/InsetObserverTest.java",
    "junit/src/org/chromium/ui/InsetsRectProviderTest.java",
    "junit/src/org/chromium/ui/animation/AnimationPerformanceTrackerUnitTest.java",
    "junit/src/org/chromium/ui/base/ActivityKeyboardVisibilityDelegateUnitTest.java",
    "junit/src/org/chromium/ui/base/ApplicationViewportInsetSupplierTest.java",
    "junit/src/org/chromium/ui/base/ClipboardTest.java",
    "junit/src/org/chromium/ui/base/EventForwarderTest.java",
    "junit/src/org/chromium/ui/base/EventOffsetHandlerTest.java",
    "junit/src/org/chromium/ui/base/LocalizationUtilsTest.java",
    "junit/src/org/chromium/ui/base/MimeTypeUtilsTest.java",
    "junit/src/org/chromium/ui/base/SelectFileDialogTest.java",
    "junit/src/org/chromium/ui/display/DisplayUtilTest.java",
    "junit/src/org/chromium/ui/dragdrop/AnimatedImageDragShadowBuilderUnitTest.java",
    "junit/src/org/chromium/ui/dragdrop/DragAndDropDelegateImplUnitTest.java",
    "junit/src/org/chromium/ui/dragdrop/DragDropGlobalStateTest.java",
    "junit/src/org/chromium/ui/dragdrop/DragEventDispatchHelperUnitTest.java",
    "junit/src/org/chromium/ui/dragdrop/DropDataAndroidUnitTest.java",
    "junit/src/org/chromium/ui/dragdrop/DropDataContentProviderTest.java",
    "junit/src/org/chromium/ui/dragdrop/DropDataProviderImplTest.java",
    "junit/src/org/chromium/ui/drawable/AnimationLooperTest.java",
    "junit/src/org/chromium/ui/drawable/StateListDrawableBuilderTest.java",
    "junit/src/org/chromium/ui/modaldialog/ModalDialogManagerTest.java",
    "junit/src/org/chromium/ui/modaldialog/PendingDialogContainerTest.java",
    "junit/src/org/chromium/ui/modelutil/LazyConstructionPropertyMcpTest.java",
    "junit/src/org/chromium/ui/modelutil/ModelListAdapterTest.java",
    "junit/src/org/chromium/ui/modelutil/ModelListPropertyChangeFilterTest.java",
    "junit/src/org/chromium/ui/modelutil/PropertyListModelTest.java",
    "junit/src/org/chromium/ui/modelutil/PropertyModelTest.java",
    "junit/src/org/chromium/ui/modelutil/SimpleListObservableTest.java",
    "junit/src/org/chromium/ui/modelutil/SimpleRecyclerViewAdapterTest.java",
    "junit/src/org/chromium/ui/permissions/ActivityAndroidPermissionDelegateTest.java",
    "junit/src/org/chromium/ui/resources/dynamics/BitmapDynamicResourceTest.java",
    "junit/src/org/chromium/ui/resources/dynamics/ViewResourceAdapterTest.java",
    "junit/src/org/chromium/ui/shadows/ShadowAppCompatResourcesTest.java",
    "junit/src/org/chromium/ui/text/SpanApplierTest.java",
    "junit/src/org/chromium/ui/util/ColorUtilsTest.java",
    "junit/src/org/chromium/ui/util/StyleUtilsTest.java",
    "junit/src/org/chromium/ui/util/TokenHolderTest.java",
    "junit/src/org/chromium/ui/util/WindowInsetsUtilsUnitTest.java",
    "junit/src/org/chromium/ui/widget/AnchoredPopupWindowTest.java",
    "junit/src/org/chromium/ui/widget/LoadingViewTest.java",
    "junit/src/org/chromium/ui/widget/ToastManagerTest.java",
    "junit/src/org/chromium/ui/widget/ToastTest.java",
    "junit/src/org/chromium/ui/widget/ViewLookupCachingFrameLayoutTest.java",
    "junit/src/org/chromium/ui/widget/ViewRectProviderTest.java",
  ]
  deps = [
    ":ui_android_features_java",
    ":ui_java",
    ":ui_java_resources",
    ":ui_java_test_support",
    ":ui_junit_resources",
    ":ui_junit_test_support",
    "//base:base_java",
    "//base:base_java_test_support",
    "//base:base_junit_test_support",
    "//base/test:test_support_java",
    "//build/android:build_java",
    "//third_party/androidx:androidx_activity_activity_java",
    "//third_party/androidx:androidx_annotation_annotation_java",
    "//third_party/androidx:androidx_appcompat_appcompat_resources_java",
    "//third_party/androidx:androidx_asynclayoutinflater_asynclayoutinflater_java",
    "//third_party/androidx:androidx_core_core_java",
    "//third_party/androidx:androidx_lifecycle_lifecycle_common_java",
    "//third_party/androidx:androidx_test_core_java",
    "//third_party/androidx:androidx_test_ext_junit_java",
    "//third_party/androidx:androidx_test_runner_java",
    "//third_party/hamcrest:hamcrest_java",
    "//third_party/jni_zero:jni_zero_java",
    "//third_party/junit:junit",
    "//third_party/mockito:mockito_java",
    "//ui/accessibility:ax_base_java",
    "//ui/base/ime/mojom:mojom_java",
    "//url:gurl_java",
    "//url:gurl_junit_test_support",
  ]
}

test("ui_android_unittests") {
  sources = [
    # Clipboard unittests are run here for Android as gtests on Android are not
    # sharded. On other OSs these are run as part of interactive_ui_tests.
    "//ui/base/clipboard/clipboard_unittest.cc",
    "color_utils_android_unittest.cc",
    "modal_dialog_bridge_unittest.cc",
    "overscroll_refresh_unittest.cc",
    "resources/resource_manager_impl_unittest.cc",
    "run_all_unittests.cc",
    "view_android_unittest.cc",
  ]
  deps = [
    ":android",
    ":java_enums_srcjar",
    ":ui_java",
    ":ui_java_test_support",
    ":ui_javatest_jni_headers",
    "//base",
    "//base/test:test_support",
    "//cc",
    "//cc:test_support",
    "//components/viz/host:host",
    "//components/viz/test:test_support",
    "//skia",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/base",
    "//ui/base/clipboard",
    "//ui/base/clipboard:clipboard_test_support",
    "//ui/compositor",
    "//ui/events",
    "//ui/gfx",
    "//ui/resources:ui_test_pak",
  ]
}

android_library("clipboard_java_test_support") {
  testonly = true

  srcjar_deps = [ ":ui_javatest_jni_headers" ]
  sources =
      [ "javatests/src/org/chromium/ui/base/ClipboardAndroidTestSupport.java" ]

  deps = [
    "//base:base_java_test_support",
    "//build/android:build_java",
    "//third_party/jni_zero:jni_zero_java",
  ]
}

android_resources("test_java_resources") {
  testonly = true
  sources = [
    "test/java/res/layout/text_view_with_leading_bad_text_appearance.xml",
    "test/java/res/layout/text_view_with_leading_direct.xml",
    "test/java/res/layout/text_view_with_leading_no_leading.xml",
    "test/java/res/layout/text_view_with_leading_style.xml",
    "test/java/res/layout/text_view_with_leading_style_into_text_appearance.xml",
    "test/java/res/layout/text_view_with_leading_text_appearance.xml",
    "test/java/res/values/attrs.xml",
    "test/java/res/values/styles.xml",
  ]
}

android_library("ui_unit_device_javatests") {
  testonly = true
  resources_package = "org.chromium.ui"

  sources = [
    "java/src/org/chromium/ui/listmenu/ListMenuButtonTest.java",
    "java/src/org/chromium/ui/widget/TextViewWithTightWrapTest.java",
    "javatests/src/org/chromium/ui/base/ClipboardAndroidTest.java",
    "javatests/src/org/chromium/ui/util/WindowInsetsUtilsJavaUnitTest.java",
    "junit/src/org/chromium/ui/widget/TextViewWithLeadingTest.java",
  ]

  deps = [
    ":clipboard_java_test_support",
    ":test_java_resources",
    ":ui_android_features_java",
    ":ui_java",
    ":ui_java_test_support",
    "//base:base_java",
    "//base:base_java_test_support",
    "//components/browser_ui/widget/android:java_resources",
    "//content/public/test/android:content_java_test_support",
    "//third_party/androidx:androidx_annotation_annotation_java",
    "//third_party/androidx:androidx_core_core_java",
    "//third_party/androidx:androidx_test_core_java",
    "//third_party/androidx:androidx_test_runner_java",
    "//third_party/hamcrest:hamcrest_java",
    "//third_party/hamcrest:hamcrest_library_java",
    "//third_party/junit",
    "//third_party/mockito:mockito_java",
  ]
}

generate_jni("ui_javatest_jni_headers") {
  testonly = true

  sources = [
    "javatests/src/org/chromium/ui/base/ClipboardAndroidTestSupport.java",
    "javatests/src/org/chromium/ui/test/util/modaldialog/FakeModalDialogManager.java",
  ]
}