Fix kotlin nullable errors in Launcher3
Fix kotlin nullable errors that were exposed by setting the retention
of android.annotation.NonNull and android.annotation.Nullable to
class retention.
Bug: 294110802
Test: builds
Change-Id: I26edfec35dca14abe90b08e3c74de0446eda95d2
Merged-In: I26edfec35dca14abe90b08e3c74de0446eda95d2
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)