[CD Taskbar] Fix TaskbarDividerView Crash

Fix crash due to taskbarActivityContext being initialized too late.

Flag: EXEMPT not adding new behavior
Bug: 402671805
Test: Manual
Change-Id: I1e6fcbac823dbd436579f1be2558b7855778a44c
This commit is contained in:
Sukesh Ram
2025-03-12 12:13:19 -07:00
parent 0b5f6698c9
commit fa0955dd50
2 changed files with 8 additions and 15 deletions
@@ -63,17 +63,14 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
false,
) as TaskbarDividerPopupView<*>
return taskMenuViewWithArrow.populateForView(
view,
horizontalPosition,
taskbarActivityContext,
)
return taskMenuViewWithArrow.populateForView(view, horizontalPosition)
}
}
private lateinit var dividerView: View
private var horizontalPosition = 0.0f
private lateinit var taskbarActivityContext: TaskbarActivityContext
private val taskbarActivityContext: TaskbarActivityContext =
ActivityContext.lookupContext(context)
private val popupCornerRadius = Themes.getDialogCornerRadius(context)
private val arrowWidth = resources.getDimension(R.dimen.popup_arrow_width)
@@ -82,6 +79,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
private val minPaddingFromScreenEdge =
resources.getDimension(R.dimen.taskbar_pinning_popup_menu_min_padding_from_screen_edge)
// TODO: add test for isTransientTaskbar & long presses divider and ensures the popup shows up.
private var alwaysShowTaskbarOn = !taskbarActivityContext.isTransientTaskbar
private var didPreferenceChange = false
private var verticalOffsetForPopupView =
@@ -117,7 +115,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
}
alwaysShowTaskbarSwitch.setOnClickListener { view -> (view.parent as View).performClick() }
if (ActivityContext.lookupContext<TaskbarActivityContext>(context).isGestureNav) {
if (taskbarActivityContext.isGestureNav) {
taskbarSwitchOption.setOnClickListener {
alwaysShowTaskbarSwitch.isChecked = !alwaysShowTaskbarOn
onClickAlwaysShowTaskbarSwitchOption()
@@ -179,13 +177,8 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
return false
}
private fun populateForView(
view: View,
horizontalPosition: Float,
taskbar: TaskbarActivityContext,
): TaskbarDividerPopupView<*> {
private fun populateForView(view: View, horizontalPosition: Float): TaskbarDividerPopupView<*> {
dividerView = view
taskbarActivityContext = taskbar
this@TaskbarDividerPopupView.horizontalPosition = horizontalPosition
tryUpdateBackground()
return this
@@ -68,7 +68,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
)
backgroundTintList = ColorStateList.valueOf(TRANSPARENT)
setIconDrawable(drawable)
if (activityContext.isTransientTaskbar) {
if (!activityContext.isTransientTaskbar) {
setPadding(dpToPx(activityContext.taskbarSpecsEvaluator.taskbarIconPadding.toFloat()))
}
setForegroundTint(activityContext.getColor(R.color.all_apps_button_color))
@@ -105,7 +105,7 @@ constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
@DimenRes
fun getAllAppsButtonTranslationXOffset(isTransientTaskbar: Boolean): Int {
return if (isTransientTaskbar && activityContext.isTransientTaskbar) {
return if (isTransientTaskbar) {
R.dimen.transient_taskbar_all_apps_button_translation_x_offset
} else {
R.dimen.taskbar_all_apps_search_button_translation_x_offset