[automerger skipped] Import translations. DO NOT MERGE ANYWHERE am: ccf3772fc3 -s ours

am skip reason: subject contains skip directive

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/ThemePicker/+/22926268

Change-Id: I90c8b36b7233961b8bd181fd7af267d00d22dc22
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index cb96607..7ec5eb8 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -106,7 +106,7 @@
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Canvia la quadrícula d\'aplicacions"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Colors del fons"</string>
     <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Icones, text i més poden combinar amb els colors del fons"</string>
-    <string name="wallpaper_color_title" msgid="5687965239180986458">"Color de fons de pantalla"</string>
+    <string name="wallpaper_color_title" msgid="5687965239180986458">"Color del fons de pantalla"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Colors bàsics"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Altres colors"</string>
     <string name="preset_color_subheader" msgid="8230588536141279371">"Tria qualsevol color per a les icones, el rellotge i més"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 73ff5d8..0a0d7fb 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -23,7 +23,7 @@
     <string name="clock_description" msgid="3563839327378948">"Pick a custom clock"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Change a custom clock"</string>
     <string name="clock_settings_title" msgid="2940654205471453913">"Clock settings"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock color &amp; size"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour &amp; size"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Colour"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Red"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 73ff5d8..0a0d7fb 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -23,7 +23,7 @@
     <string name="clock_description" msgid="3563839327378948">"Pick a custom clock"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Change a custom clock"</string>
     <string name="clock_settings_title" msgid="2940654205471453913">"Clock settings"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock color &amp; size"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour &amp; size"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Colour"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Red"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 73ff5d8..0a0d7fb 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -23,7 +23,7 @@
     <string name="clock_description" msgid="3563839327378948">"Pick a custom clock"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Change a custom clock"</string>
     <string name="clock_settings_title" msgid="2940654205471453913">"Clock settings"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock color &amp; size"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour &amp; size"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Colour"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Red"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index d250207..58bf265 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -37,7 +37,7 @@
     <string name="clock_color_teal" msgid="7499223425741344251">"ティール"</string>
     <string name="clock_size" msgid="5028923902364418263">"サイズ"</string>
     <string name="clock_size_dynamic" msgid="1023930312455061642">"動的"</string>
-    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"時計のサイズがロック画面の状況に応じて変わります"</string>
+    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"時計のサイズはロック画面の内容に応じて変わります"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"大"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"小"</string>
     <string name="grid_title" msgid="1688173478777254123">"アプリグリッド"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index f14763e..fa9267d 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -23,7 +23,7 @@
     <string name="clock_description" msgid="3563839327378948">"कस्टम क्लॉक निवडा"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"कस्टम क्लॉक बदला"</string>
     <string name="clock_settings_title" msgid="2940654205471453913">"क्लॉक सेटिंग्ज"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"घड्याळाचा रंग व आकार"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock चा रंग व आकार"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"रंग"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"लाल"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 7e2da90..14c8592 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -17,7 +17,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_name" msgid="1647136562008520313">"Hiasan latar &amp; gaya"</string>
+    <string name="app_name" msgid="1647136562008520313">"Kertas dinding &amp; gaya"</string>
     <string name="theme_title" msgid="2144932106319405101">"Gaya"</string>
     <string name="clock_title" msgid="1974314575211361352">"Jam Tersuai"</string>
     <string name="clock_description" msgid="3563839327378948">"Pilih jam tersuai"</string>
diff --git a/src/com/android/customization/picker/clock/ui/binder/ClockCarouselViewBinder.kt b/src/com/android/customization/picker/clock/ui/binder/ClockCarouselViewBinder.kt
index 7bdd4fc..f455600 100644
--- a/src/com/android/customization/picker/clock/ui/binder/ClockCarouselViewBinder.kt
+++ b/src/com/android/customization/picker/clock/ui/binder/ClockCarouselViewBinder.kt
@@ -106,9 +106,7 @@
             LifecycleEventObserver { source, event ->
                 when (event) {
                     Lifecycle.Event.ON_RESUME -> {
-                        clockViewFactory.registerTimeTicker(source) {
-                            !carouselView.isCarouselInTransition
-                        }
+                        clockViewFactory.registerTimeTicker(source)
                     }
                     Lifecycle.Event.ON_PAUSE -> {
                         clockViewFactory.unregisterTimeTicker(source)
diff --git a/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt b/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
index 7233c80..88d6d8e 100644
--- a/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
+++ b/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
@@ -118,7 +118,7 @@
         ClockSettingsBinder.bind(
             view,
             ViewModelProvider(
-                    activity,
+                    this,
                     injector.getClockSettingsViewModelFactory(
                         context,
                         injector.getWallpaperColorsViewModel(),
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
index 059e498..3cf5471 100644
--- a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
+++ b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
@@ -36,8 +36,6 @@
         attrs,
     ) {
 
-    var isCarouselInTransition = false
-
     val carousel: Carousel
     private val motionLayout: MotionLayout
     private lateinit var adapter: ClockCarouselAdapter
@@ -72,7 +70,6 @@
                     startId: Int,
                     endId: Int
                 ) {
-                    isCarouselInTransition = true
                     val scalingDownClockId = adapter.clockIds[carousel.currentIndex]
                     val scalingUpIdx =
                         if (endId == R.id.next) (carousel.currentIndex + 1) % adapter.count()
@@ -125,7 +122,6 @@
                 }
 
                 override fun onTransitionCompleted(motionLayout: MotionLayout?, currentId: Int) {
-                    isCarouselInTransition = false
                     setCardAnimationState(currentId == R.id.start)
                 }
 
@@ -197,8 +193,6 @@
 
             clockHostView.removeAllViews()
             val clockView = onGetClockController(clockIds[index]).largeClock.view
-            // Making sure the large clock tick to the correct time
-            onGetClockController(clockIds[index]).largeClock.events.onTimeTick()
             // The clock view might still be attached to an existing parent. Detach before adding to
             // another parent.
             (clockView.parent as? ViewGroup)?.removeView(clockView)
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt b/src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt
index cf154d5..3c7bab1 100644
--- a/src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt
+++ b/src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt
@@ -67,21 +67,13 @@
     }
 
     fun registerTimeTicker(owner: LifecycleOwner) {
-        registerTimeTicker(owner, null)
-    }
-
-    fun registerTimeTicker(owner: LifecycleOwner, shouldTimeTick: (() -> Boolean)?) {
         val hashCode = owner.hashCode()
         if (timeTickListeners.keys.contains(hashCode)) {
             return
         }
 
         timeTickListeners[hashCode] =
-            TimeTicker.registerNewReceiver(activity.applicationContext) {
-                if (shouldTimeTick == null || shouldTimeTick()) {
-                    onTimeTick()
-                }
-            }
+            TimeTicker.registerNewReceiver(activity.applicationContext) { onTimeTick() }
     }
 
     private fun onTimeTick() {
diff --git a/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt b/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt
index 3dba27e..3eadec5 100644
--- a/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt
+++ b/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt
@@ -92,6 +92,22 @@
                 launch {
                     viewModel.colorOptions.collect { colorOptions ->
                         colorOptionAdapter.setItems(colorOptions)
+                        // the same recycler view is used for different color types tabs
+                        // the scroll state of each tab should be independent of others
+                        var indexToFocus = 0
+                        colorOptions.forEachIndexed { index, colorOption ->
+                            if (colorOption.isSelected.value) {
+                                indexToFocus = index
+                            }
+                        }
+                        val linearLayoutManager =
+                            object : LinearLayoutManager(view.context, HORIZONTAL, false) {
+                                override fun onLayoutCompleted(state: RecyclerView.State?) {
+                                    super.onLayoutCompleted(state)
+                                    scrollToPosition(indexToFocus)
+                                }
+                            }
+                        colorOptionContainerView.layoutManager = linearLayoutManager
                     }
                 }
             }
diff --git a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
index 029d76e..0a52e8f 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
@@ -64,7 +64,7 @@
     private val quickAffordanceInteractor: KeyguardQuickAffordancePickerInteractor,
     private val wallpaperInteractor: WallpaperInteractor,
     private val wallpaperInfoFactory: CurrentWallpaperInfoFactory,
-    activityStarter: (Intent) -> Unit,
+    private val activityStarter: (Intent) -> Unit,
 ) : ViewModel() {
 
     @SuppressLint("StaticFieldLeak") private val applicationContext = context.applicationContext
@@ -361,7 +361,7 @@
                             style = ButtonStyle.Primary,
                             onClicked = {
                                 actionComponentName.toIntent()?.let { intent ->
-                                    applicationContext.startActivity(intent)
+                                    activityStarter(intent)
                                 }
                             }
                         ),
diff --git a/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt b/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
index 155b912..1b241ca 100644
--- a/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
+++ b/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
@@ -282,9 +282,14 @@
             assertThat(dialog()?.buttons?.first()?.text)
                 .isEqualTo(Text.Loaded(enablementActionText))
 
+            // When the button is clicked, we expect an intent of the given enablement action
+            // component name is launched.
+            dialog()?.buttons?.first()?.onClicked?.invoke()
+            assertThat(latestStartedActivityIntent?.`package`).isEqualTo(packageName)
+            assertThat(latestStartedActivityIntent?.action).isEqualTo(action)
+
             // Once we report that the dialog has been dismissed by the user, we expect there to be
-            // no
-            // dialog to be shown:
+            // no dialog to be shown:
             underTest.onDialogDismissed()
             assertThat(dialog()).isNull()
         }