Commit 84739b3d authored by Clark DuVall's avatar Clark DuVall Committed by Commit Bot

Remove recycler view deps from base WebView APK

Recycler view is only being used in WebLayer. When experimenting with
WebLayer in a DFM, the recycler view code still gets added to the base
APK since R8 does not (yet) have support for adding proguard rules that
only apply to a DFM instead of globally.

This change removes all recycler view deps from WebView, and splits out
the code from //ui/android that depends on recycler view since most
places that use ui/android don't actually need it.

See go/chrome-webview-isolated-splits for more info.

Bug: 1105096
Change-Id: I808cba5530a4d211361db0beab8ab1e9aa57137f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2363873Reviewed-by: default avatarMounir Lamouri <mlamouri@chromium.org>
Reviewed-by: default avatarRichard Coles <torne@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Commit-Queue: Clark DuVall <cduvall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#801444}
parent 64525c93
...@@ -53,6 +53,19 @@ standalone_system_webview_apk_tmpl("system_webview_apk") { ...@@ -53,6 +53,19 @@ standalone_system_webview_apk_tmpl("system_webview_apk") {
standalone_system_webview_apk_tmpl("system_webview_no_weblayer_apk") { standalone_system_webview_apk_tmpl("system_webview_no_weblayer_apk") {
exclude_weblayer_java = true exclude_weblayer_java = true
apk_name = "SystemWebViewNoWebLayer" apk_name = "SystemWebViewNoWebLayer"
# Adding deps on recycler view in the base WebView APK will end up keeping the
# Java in the base APK instead of the WebLayer DFM, even though it is not
# needed in the base APK.
#
# If you hit this check and are adding a dep to //ui/android:ui_java, use
# //ui/android:ui_no_recycler_view instead. If you hit this check because you
# are adding //third_party/android_deps:android_support_*, use the androidx
# version of the dep instead.
# TODO(b/165810905): Use per-feature -keep rules in R8 once supported, then
# this can be removed.
assert_no_deps =
[ "//third_party/android_deps:androidx_recyclerview_recyclerview_java" ]
} }
if (enable_webview_bundles) { if (enable_webview_bundles) {
...@@ -571,7 +584,7 @@ android_library("browser_java") { ...@@ -571,7 +584,7 @@ android_library("browser_java") {
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/android_deps:protobuf_lite_runtime_java", "//third_party/android_deps:protobuf_lite_runtime_java",
"//third_party/blink/public:blink_headers_java", "//third_party/blink/public:blink_headers_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
"//url:gurl_java", "//url:gurl_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
......
...@@ -24,7 +24,7 @@ android_library("glue_java") { ...@@ -24,7 +24,7 @@ android_library("glue_java") {
"//content/public/android:content_java", "//content/public/android:content_java",
"//net/android:net_java", "//net/android:net_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
"//url:gurl_java", "//url:gurl_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
......
...@@ -33,7 +33,7 @@ android_library("nonembedded_java") { ...@@ -33,7 +33,7 @@ android_library("nonembedded_java") {
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/android_deps:com_google_code_findbugs_jsr305_java", "//third_party/android_deps:com_google_code_findbugs_jsr305_java",
"//third_party/android_deps:protobuf_lite_runtime_java", "//third_party/android_deps:protobuf_lite_runtime_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
} }
...@@ -72,7 +72,7 @@ android_library("devui_java") { ...@@ -72,7 +72,7 @@ android_library("devui_java") {
"//third_party/android_deps:androidx_lifecycle_lifecycle_common_java", "//third_party/android_deps:androidx_lifecycle_lifecycle_common_java",
"//third_party/android_deps:androidx_lifecycle_lifecycle_viewmodel_java", "//third_party/android_deps:androidx_lifecycle_lifecycle_viewmodel_java",
"//third_party/android_deps:androidx_savedstate_savedstate_java", "//third_party/android_deps:androidx_savedstate_savedstate_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
] ]
resources_package = "org.chromium.android_webview.devui" resources_package = "org.chromium.android_webview.devui"
} }
......
...@@ -3483,7 +3483,6 @@ if (is_android) { ...@@ -3483,7 +3483,6 @@ if (is_android) {
deps = [ deps = [
":jni_java", ":jni_java",
"//third_party/android_deps:android_support_v4_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/android_deps:androidx_collection_collection_java", "//third_party/android_deps:androidx_collection_collection_java",
"//third_party/android_deps:androidx_core_core_java", "//third_party/android_deps:androidx_core_core_java",
......
...@@ -40,10 +40,10 @@ android_library("autofill_java") { ...@@ -40,10 +40,10 @@ android_library("autofill_java") {
":autofill_java_resources", ":autofill_java_resources",
"//base:base_java", "//base:base_java",
"//content/public/android:content_java", "//content/public/android:content_java",
"//third_party/android_deps:android_support_v7_appcompat_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/android_deps:androidx_appcompat_appcompat_resources_java", "//third_party/android_deps:androidx_appcompat_appcompat_resources_java",
"//ui/android:ui_java", "//third_party/android_deps:androidx_core_core_java",
"//ui/android:ui_no_recycler_view_java",
] ]
sources = [ sources = [
"java/src/org/chromium/components/autofill/AutofillDelegate.java", "java/src/org/chromium/components/autofill/AutofillDelegate.java",
......
...@@ -14,7 +14,7 @@ android_library("java") { ...@@ -14,7 +14,7 @@ android_library("java") {
"//components/version_info/android:version_constants_java", "//components/version_info/android:version_constants_java",
"//content/public/android:content_java", "//content/public/android:content_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
sources = [ sources = [
......
...@@ -105,7 +105,7 @@ android_library("content_view_java") { ...@@ -105,7 +105,7 @@ android_library("content_view_java") {
"//base:base_java", "//base:base_java",
"//content/public/android:content_java", "//content/public/android:content_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
] ]
sources = [ sources = [
"java/src/org/chromium/components/embedder_support/view/ContentView.java", "java/src/org/chromium/components/embedder_support/view/ContentView.java",
...@@ -117,7 +117,7 @@ android_library("view_java") { ...@@ -117,7 +117,7 @@ android_library("view_java") {
"//base:base_java", "//base:base_java",
"//base:jni_java", "//base:jni_java",
"//content/public/android:content_java", "//content/public/android:content_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
sources = [ "java/src/org/chromium/components/embedder_support/view/ContentViewRenderView.java" ] sources = [ "java/src/org/chromium/components/embedder_support/view/ContentViewRenderView.java" ]
...@@ -181,7 +181,7 @@ android_library("web_contents_delegate_java") { ...@@ -181,7 +181,7 @@ android_library("web_contents_delegate_java") {
"//content/public/android:content_java", "//content/public/android:content_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/android_deps:androidx_core_core_java", "//third_party/android_deps:androidx_core_core_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
] ]
resources_package = "org.chromium.components.embedder_support.delegate" resources_package = "org.chromium.components.embedder_support.delegate"
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
...@@ -229,7 +229,7 @@ android_library("context_menu_java") { ...@@ -229,7 +229,7 @@ android_library("context_menu_java") {
"//content/public/android:content_java", "//content/public/android:content_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/blink/public:blink_headers_java", "//third_party/blink/public:blink_headers_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
sources = [ "java/src/org/chromium/components/embedder_support/contextmenu/ContextMenuParams.java" ] sources = [ "java/src/org/chromium/components/embedder_support/contextmenu/ContextMenuParams.java" ]
......
...@@ -15,7 +15,7 @@ android_library("location_java") { ...@@ -15,7 +15,7 @@ android_library("location_java") {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
] ]
sources = [ "java/src/org/chromium/components/location/LocationUtils.java" ] sources = [ "java/src/org/chromium/components/location/LocationUtils.java" ]
srcjar_deps = [ ":location_settings_dialog_enums_java" ] srcjar_deps = [ ":location_settings_dialog_enums_java" ]
...@@ -26,7 +26,7 @@ android_library("settings_java") { ...@@ -26,7 +26,7 @@ android_library("settings_java") {
":location_java", ":location_java",
"//base:base_java", "//base:base_java",
"//base:jni_java", "//base:jni_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
] ]
sources = sources =
[ "java/src/org/chromium/components/location/LocationSettings.java" ] [ "java/src/org/chromium/components/location/LocationSettings.java" ]
......
...@@ -642,7 +642,7 @@ if (is_android) { ...@@ -642,7 +642,7 @@ if (is_android) {
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//base:jni_java", "//base:jni_java",
"//ui/android:ui_full_java", "//ui/android:ui_no_recycler_view_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
sources = [ sources = [
......
...@@ -109,7 +109,8 @@ android_library("content_java") { ...@@ -109,7 +109,8 @@ android_library("content_java") {
"//third_party/blink/public/mojom:android_mojo_bindings_java", "//third_party/blink/public/mojom:android_mojo_bindings_java",
"//third_party/blink/public/mojom:mojom_core_java", "//third_party/blink/public/mojom:mojom_core_java",
"//third_party/blink/public/mojom:mojom_platform_java", "//third_party/blink/public/mojom:mojom_platform_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
"//ui/android:ui_utils_java",
"//ui/gfx/geometry/mojom:mojom_java", "//ui/gfx/geometry/mojom:mojom_java",
"//url:gurl_java", "//url:gurl_java",
"//url:origin_java", "//url:origin_java",
......
...@@ -42,7 +42,7 @@ if (is_android) { ...@@ -42,7 +42,7 @@ if (is_android) {
sources = [ "android/java/src/org/chromium/device/screen_orientation/ScreenOrientationListener.java" ] sources = [ "android/java/src/org/chromium/device/screen_orientation/ScreenOrientationListener.java" ]
deps = [ deps = [
"//base:base_java", "//base:base_java",
"//ui/android:ui_java", "//ui/android:ui_no_recycler_view_java",
] ]
} }
} }
...@@ -220,7 +220,7 @@ android_library("ui_utils_java") { ...@@ -220,7 +220,7 @@ android_library("ui_utils_java") {
] ]
} }
android_library("ui_full_java") { android_library("ui_no_recycler_view_java") {
sources = [ sources = [
"java/src/org/chromium/ui/AsyncViewProvider.java", "java/src/org/chromium/ui/AsyncViewProvider.java",
"java/src/org/chromium/ui/AsyncViewStub.java", "java/src/org/chromium/ui/AsyncViewStub.java",
...@@ -298,11 +298,7 @@ android_library("ui_full_java") { ...@@ -298,11 +298,7 @@ android_library("ui_full_java") {
"java/src/org/chromium/ui/modelutil/PropertyModel.java", "java/src/org/chromium/ui/modelutil/PropertyModel.java",
"java/src/org/chromium/ui/modelutil/PropertyModelChangeProcessor.java", "java/src/org/chromium/ui/modelutil/PropertyModelChangeProcessor.java",
"java/src/org/chromium/ui/modelutil/PropertyObservable.java", "java/src/org/chromium/ui/modelutil/PropertyObservable.java",
"java/src/org/chromium/ui/modelutil/RecyclerViewAdapter.java",
"java/src/org/chromium/ui/modelutil/SimpleList.java", "java/src/org/chromium/ui/modelutil/SimpleList.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",
"java/src/org/chromium/ui/resources/HandleViewResources.java", "java/src/org/chromium/ui/resources/HandleViewResources.java",
"java/src/org/chromium/ui/resources/LayoutResource.java", "java/src/org/chromium/ui/resources/LayoutResource.java",
"java/src/org/chromium/ui/resources/Resource.java", "java/src/org/chromium/ui/resources/Resource.java",
...@@ -349,11 +345,12 @@ android_library("ui_full_java") { ...@@ -349,11 +345,12 @@ android_library("ui_full_java") {
":ui_utils_java", ":ui_utils_java",
"//base:base_java", "//base:base_java",
"//base:jni_java", "//base:jni_java",
"//third_party/android_deps:android_support_v7_appcompat_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/android_deps:androidx_appcompat_appcompat_java",
"//third_party/android_deps:androidx_appcompat_appcompat_resources_java", "//third_party/android_deps:androidx_appcompat_appcompat_resources_java",
"//third_party/android_deps:androidx_asynclayoutinflater_asynclayoutinflater_java", "//third_party/android_deps:androidx_asynclayoutinflater_asynclayoutinflater_java",
"//third_party/android_deps:androidx_recyclerview_recyclerview_java", "//third_party/android_deps:androidx_core_core_java",
"//third_party/android_deps:androidx_vectordrawable_vectordrawable_animated_java",
"//ui/base/cursor/mojom:cursor_type_java", "//ui/base/cursor/mojom:cursor_type_java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
...@@ -361,6 +358,28 @@ android_library("ui_full_java") { ...@@ -361,6 +358,28 @@ android_library("ui_full_java") {
resources_package = "org.chromium.ui" 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",
]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
deps = [
":ui_no_recycler_view_java",
"//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/android_deps:androidx_recyclerview_recyclerview_java",
]
}
java_group("ui_full_java") {
deps = [
":ui_no_recycler_view_java",
":ui_recycler_view_java",
]
}
android_library("ui_java_test_support") { android_library("ui_java_test_support") {
testonly = true testonly = true
sources = [ sources = [
......
...@@ -5,15 +5,14 @@ ...@@ -5,15 +5,14 @@
package org.chromium.ui.modelutil; package org.chromium.ui.modelutil;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
/** /**
* A model change processor for use with a {@link ListObservable} model. The * A model change processor for use with a {@link ListObservable} model. The
* {@link ListModelChangeProcessor} should be registered as a list observer of the model. * {@link ListModelChangeProcessor} should be registered as a list observer of the model.
* Internally uses a view binder to bind model properties to a view like a TabLayout. * Internally uses a view binder to bind model properties to a view like a TabLayout.
* *
* Do not use this class to fill {@link RecyclerView}s - consider using the * Do not use this class to fill {@link androidx.recyclerview.widget.RecyclerView}s - consider using
* {@link SimpleRecyclerViewMcp} which was specifically designed for that use case! * the {@link SimpleRecyclerViewMcp} which was specifically designed for that use case!
* *
* @param <M> The {@link ListObservable} model. * @param <M> The {@link ListObservable} model.
* @param <V> The view object that is changing. * @param <V> The view object that is changing.
...@@ -65,4 +64,4 @@ public class ListModelChangeProcessor<M extends ListObservable, V> ...@@ -65,4 +64,4 @@ public class ListModelChangeProcessor<M extends ListObservable, V>
assert source == mModel; assert source == mModel;
mViewBinder.onItemsChanged(mModel, mView, index, count); mViewBinder.onItemsChanged(mModel, mView, index, count);
} }
} }
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment