Merge "Fix kotlin nullable errors in Launcher3" into main
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltip.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltip.kt
index 7dda73f..bab014d 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltip.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltip.kt
@@ -83,8 +83,8 @@
     override fun onFinishInflate() {
         super.onFinishInflate()
 
-        content = findViewById(R.id.content)
-        arrow = findViewById(R.id.arrow)
+        content = requireViewById(R.id.content)
+        arrow = requireViewById(R.id.arrow)
         arrow.background =
             RoundedArrowDrawable(
                 arrowWidth,
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt
index 22ed284..277e444 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt
@@ -95,7 +95,7 @@
         tooltipStep = TOOLTIP_STEP_FEATURES
         inflateTooltip(R.layout.taskbar_edu_swipe)
         tooltip?.run {
-            findViewById<LottieAnimationView>(R.id.swipe_animation).supportLightTheme()
+            requireViewById<LottieAnimationView>(R.id.swipe_animation).supportLightTheme()
             show()
         }
     }
@@ -114,10 +114,10 @@
         tooltipStep = TOOLTIP_STEP_NONE
         inflateTooltip(R.layout.taskbar_edu_features)
         tooltip?.run {
-            val splitscreenAnim = findViewById<LottieAnimationView>(R.id.splitscreen_animation)
-            val suggestionsAnim = findViewById<LottieAnimationView>(R.id.suggestions_animation)
-            val settingsAnim = findViewById<LottieAnimationView>(R.id.settings_animation)
-            val settingsEdu = findViewById<View>(R.id.settings_edu)
+            val splitscreenAnim = requireViewById<LottieAnimationView>(R.id.splitscreen_animation)
+            val suggestionsAnim = requireViewById<LottieAnimationView>(R.id.suggestions_animation)
+            val settingsAnim = requireViewById<LottieAnimationView>(R.id.settings_animation)
+            val settingsEdu = requireViewById<View>(R.id.settings_edu)
             splitscreenAnim.supportLightTheme()
             suggestionsAnim.supportLightTheme()
             settingsAnim.supportLightTheme()
@@ -175,7 +175,7 @@
     private fun createAccessibilityDelegate() =
         object : View.AccessibilityDelegate() {
             override fun performAccessibilityAction(
-                host: View?,
+                host: View,
                 action: Int,
                 args: Bundle?
             ): Boolean {
@@ -186,22 +186,22 @@
                 return super.performAccessibilityAction(host, action, args)
             }
 
-            override fun onPopulateAccessibilityEvent(host: View?, event: AccessibilityEvent?) {
+            override fun onPopulateAccessibilityEvent(host: View, event: AccessibilityEvent) {
                 super.onPopulateAccessibilityEvent(host, event)
-                if (event?.eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
-                    event.text?.add(host?.context?.getText(R.string.taskbar_edu_a11y_title))
+                if (event.eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
+                    event.text.add(host.context?.getText(R.string.taskbar_edu_a11y_title))
                 }
             }
 
             override fun onInitializeAccessibilityNodeInfo(
-                host: View?,
-                info: AccessibilityNodeInfo?
+                host: View,
+                info: AccessibilityNodeInfo
             ) {
                 super.onInitializeAccessibilityNodeInfo(host, info)
-                info?.addAction(
+                info.addAction(
                     AccessibilityNodeInfo.AccessibilityAction(
                         R.id.close,
-                        host?.context?.getText(R.string.taskbar_edu_close)
+                        host.context?.getText(R.string.taskbar_edu_close)
                     )
                 )
             }
diff --git a/quickstep/src/com/android/launcher3/taskbar/VoiceInteractionWindowController.kt b/quickstep/src/com/android/launcher3/taskbar/VoiceInteractionWindowController.kt
index 5eb240e..5a5ff8e 100644
--- a/quickstep/src/com/android/launcher3/taskbar/VoiceInteractionWindowController.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/VoiceInteractionWindowController.kt
@@ -192,13 +192,13 @@
         removeOnAttachStateChangeListener(pendingAttachedToWindowListener)
         pendingAttachedToWindowListener =
             object : View.OnAttachStateChangeListener {
-                override fun onViewAttachedToWindow(v: View?) {
+                override fun onViewAttachedToWindow(v: View) {
                     onAttachedToWindow()
                     removeOnAttachStateChangeListener(this)
                     pendingAttachedToWindowListener = null
                 }
 
-                override fun onViewDetachedFromWindow(v: View?) {}
+                override fun onViewDetachedFromWindow(v: View) {}
             }
         addOnAttachStateChangeListener(pendingAttachedToWindowListener)
     }
diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/AbstractNavButtonLayoutter.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/AbstractNavButtonLayoutter.kt
index 27a4988..e704e51 100644
--- a/quickstep/src/com/android/launcher3/taskbar/navbutton/AbstractNavButtonLayoutter.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/AbstractNavButtonLayoutter.kt
@@ -40,7 +40,7 @@
     protected val endContextualContainer: ViewGroup,
     protected val startContextualContainer: ViewGroup
 ) : NavButtonLayoutter {
-    protected val homeButton: ImageView = navButtonContainer.findViewById(R.id.home)
-    protected val recentsButton: ImageView = navButtonContainer.findViewById(R.id.recent_apps)
-    protected val backButton: ImageView = navButtonContainer.findViewById(R.id.back)
+    protected val homeButton: ImageView = navButtonContainer.requireViewById(R.id.home)
+    protected val recentsButton: ImageView = navButtonContainer.requireViewById(R.id.recent_apps)
+    protected val backButton: ImageView = navButtonContainer.requireViewById(R.id.back)
 }
diff --git a/quickstep/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactory.kt b/quickstep/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactory.kt
index 2092721..b730b21 100644
--- a/quickstep/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactory.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/navbutton/NavButtonLayoutFactory.kt
@@ -60,11 +60,12 @@
             isThreeButtonNav: Boolean,
             phoneMode: Boolean
         ): NavButtonLayoutter {
-            val navButtonContainer = navButtonsView.findViewById<LinearLayout>(ID_END_NAV_BUTTONS)
+            val navButtonContainer =
+                navButtonsView.requireViewById<LinearLayout>(ID_END_NAV_BUTTONS)
             val endContextualContainer =
-                navButtonsView.findViewById<ViewGroup>(ID_END_CONTEXTUAL_BUTTONS)
+                navButtonsView.requireViewById<ViewGroup>(ID_END_CONTEXTUAL_BUTTONS)
             val startContextualContainer =
-                navButtonsView.findViewById<ViewGroup>(ID_START_CONTEXTUAL_BUTTONS)
+                navButtonsView.requireViewById<ViewGroup>(ID_START_CONTEXTUAL_BUTTONS)
             val isPhoneNavMode = phoneMode && isThreeButtonNav
             return when {
                 isPhoneNavMode -> {
diff --git a/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt b/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt
index 428bd95..acf8da7 100644
--- a/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt
+++ b/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt
@@ -121,7 +121,7 @@
 
     override fun onFinishInflate() {
         super.onFinishInflate()
-        optionLayout = findViewById(R.id.menu_option_layout)
+        optionLayout = requireViewById(R.id.menu_option_layout)
     }
 
     private fun populateAndShowForTask(
@@ -193,8 +193,8 @@
             mActivityContext.layoutInflater.inflate(R.layout.task_view_menu_option, this, false)
                 as LinearLayout
         menuOption.setIconAndLabelFor(
-            menuOptionView.findViewById(R.id.icon),
-            menuOptionView.findViewById(R.id.text)
+            menuOptionView.requireViewById(R.id.icon),
+            menuOptionView.requireViewById(R.id.text)
         )
         val lp = menuOptionView.layoutParams as LayoutParams
         lp.width = menuWidth
diff --git a/tests/src/com/android/launcher3/model/GridSizeMigrationUtilTest.kt b/tests/src/com/android/launcher3/model/GridSizeMigrationUtilTest.kt
index f24f0da..6c6a5fa 100644
--- a/tests/src/com/android/launcher3/model/GridSizeMigrationUtilTest.kt
+++ b/tests/src/com/android/launcher3/model/GridSizeMigrationUtilTest.kt
@@ -181,7 +181,7 @@
         intentIndex = c.getColumnIndex(INTENT)
         val cellXIndex = c.getColumnIndex(CELLX)
         val cellYIndex = c.getColumnIndex(CELLY)
-        val locMap = HashMap<String, Point>()
+        val locMap = HashMap<String?, Point>()
         while (c.moveToNext()) {
             locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
                 Point(c.getInt(cellXIndex), c.getInt(cellYIndex))
@@ -424,13 +424,13 @@
         c.close()
     }
 
-    private fun parseLocMap(context: Context, c: Cursor): Map<String, Triple<Int, Int, Int>> {
+    private fun parseLocMap(context: Context, c: Cursor): Map<String?, Triple<Int, Int, Int>> {
         // Check workspace items
         val intentIndex = c.getColumnIndex(INTENT)
         val screenIndex = c.getColumnIndex(SCREEN)
         val cellXIndex = c.getColumnIndex(CELLX)
         val cellYIndex = c.getColumnIndex(CELLY)
-        val locMap = mutableMapOf<String, Triple<Int, Int, Int>>()
+        val locMap = mutableMapOf<String?, Triple<Int, Int, Int>>()
         while (c.moveToNext()) {
             locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
                 Triple(c.getInt(screenIndex), c.getInt(cellXIndex), c.getInt(cellYIndex))
@@ -606,7 +606,7 @@
         val screenIndex = c.getColumnIndex(SCREEN)
 
         // Get in which screen the icon is
-        val locMap = HashMap<String, Int>()
+        val locMap = HashMap<String?, Int>()
         while (c.moveToNext()) {
             locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
                 c.getInt(screenIndex)
@@ -668,7 +668,7 @@
         val screenIndex = c.getColumnIndex(SCREEN)
 
         // Get in which screen the icon is
-        val locMap = HashMap<String, Int>()
+        val locMap = HashMap<String?, Int>()
         while (c.moveToNext()) {
             locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
                 c.getInt(screenIndex)
@@ -728,7 +728,7 @@
         val screenIndex = c.getColumnIndex(SCREEN)
 
         // Get in which screen the icon is
-        val locMap = HashMap<String, Int>()
+        val locMap = HashMap<String?, Int>()
         while (c.moveToNext()) {
             locMap[Intent.parseUri(c.getString(intentIndex), 0).getPackage()] =
                 c.getInt(screenIndex)