Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bb792754 authored by Ahmed Mehfooz's avatar Ahmed Mehfooz Committed by Android (Google) Code Review
Browse files

Merge "[SB][Chips] Enable isHidden field for all call chips" into main

parents 8450f06d dff57ea7
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1758,6 +1758,16 @@ flag {
    bug: "202516970"
}

flag {
    name: "status_bar_call_chip_use_is_hidden"
    namespace: "systemui"
    description: "Enables isHidden field for all call chips"
    bug: "427747840"
    metadata {
       purpose: PURPOSE_BUGFIX
    }
}

flag {
    name: "media_projection_grey_error_text"
    namespace: "systemui"
+58 −3
Original line number Diff line number Diff line
@@ -322,7 +322,7 @@ class CallChipViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
        }

    @Test
    @DisableFlags(StatusBarChipsReturnAnimations.FLAG_NAME)
    @DisableFlags(StatusBarChipsReturnAnimations.FLAG_NAME, StatusBarCallChipUseIsHidden.FLAG_NAME)
    fun chipLegacy_inCallWithVisibleApp_zeroStartTime_isHiddenAsInactive() =
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
@@ -332,6 +332,24 @@ class CallChipViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Inactive::class.java)
        }

    @Test
    @DisableFlags(StatusBarChipsReturnAnimations.FLAG_NAME)
    @EnableFlags(StatusBarCallChipUseIsHidden.FLAG_NAME)
    @EnableChipsModernization
    fun chipLegacy_useIsHidden_inCallWithVisibleApp_zeroStartTime_isHiddenAsIconOnly() =
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)

            addOngoingCallState(startTimeMs = 0, isAppVisible = true)

            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
            val activeChip = latest as OngoingActivityChipModel.Active

            assertThat(activeChip.isHidden).isTrue()
            assertThat(activeChip.content)
                .isInstanceOf(OngoingActivityChipModel.Content.IconOnly::class.java)
        }

    @Test
    @EnableFlags(StatusBarChipsReturnAnimations.FLAG_NAME)
    @EnableChipsModernization
@@ -348,7 +366,7 @@ class CallChipViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
        }

    @Test
    @DisableFlags(StatusBarChipsReturnAnimations.FLAG_NAME)
    @DisableFlags(StatusBarChipsReturnAnimations.FLAG_NAME, StatusBarCallChipUseIsHidden.FLAG_NAME)
    fun chipLegacy_inCallWithVisibleApp_negativeStartTime_isHiddenAsInactive() =
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
@@ -374,7 +392,25 @@ class CallChipViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
        }

    @Test
    @EnableFlags(StatusBarCallChipUseIsHidden.FLAG_NAME)
    @EnableChipsModernization
    @DisableFlags(StatusBarChipsReturnAnimations.FLAG_NAME)
    fun chipLegacy_useIsHidden_animationsDisabled_negativeStartTime_isHiddenAsIconOnly() =
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)

            addOngoingCallState(startTimeMs = -2, isAppVisible = true)

            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
            val activeChip = latest as OngoingActivityChipModel.Active

            assertThat(activeChip.isHidden).isTrue()
            assertThat(activeChip.content)
                .isInstanceOf(OngoingActivityChipModel.Content.IconOnly::class.java)
        }

    @Test
    @DisableFlags(StatusBarChipsReturnAnimations.FLAG_NAME, StatusBarCallChipUseIsHidden.FLAG_NAME)
    fun chipLegacy_inCallWithVisibleApp_positiveStartTime_isHiddenAsInactive() =
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)
@@ -399,6 +435,24 @@ class CallChipViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
            assertThat((latest as OngoingActivityChipModel.Active).isImportantForPrivacy).isFalse()
        }

    @Test
    @EnableFlags(StatusBarCallChipUseIsHidden.FLAG_NAME)
    @EnableChipsModernization
    @DisableFlags(StatusBarChipsReturnAnimations.FLAG_NAME)
    fun chipLegacy_useIsHidden_animationsDisabled_positiveStartTime_isHiddenAsTimer() =
        kosmos.runTest {
            val latest by collectLastValue(underTest.chip)

            addOngoingCallState(startTimeMs = 345, isAppVisible = true)

            assertThat(latest).isInstanceOf(OngoingActivityChipModel.Active::class.java)
            val activeChip = latest as OngoingActivityChipModel.Active

            assertThat(activeChip.isHidden).isTrue()
            assertThat(activeChip.content)
                .isInstanceOf(OngoingActivityChipModel.Content.Timer::class.java)
        }

    @Test
    fun chip_inCall_startTimeConvertedToElapsedRealtime() =
        kosmos.runTest {
@@ -1469,6 +1523,7 @@ class CallChipViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
            get() = buildList {
                addAll(
                    FlagsParameterization.allCombinationsOf(
                        StatusBarCallChipUseIsHidden.FLAG_NAME,
                        StatusBarRootModernization.FLAG_NAME,
                        StatusBarChipsModernization.FLAG_NAME,
                        StatusBarChipsReturnAnimations.FLAG_NAME,
+7 −3
Original line number Diff line number Diff line
@@ -162,19 +162,23 @@ constructor(
                ) { callState, headsUpState ->
                    when (callState) {
                        is OngoingCallModel.NoCall -> OngoingActivityChipModel.Inactive()
                        is OngoingCallModel.InCall ->
                            if (callState.isAppVisible) {
                        is OngoingCallModel.InCall -> {
                            val useLegacyInactiveBehavior =
                                callState.isAppVisible && !StatusBarCallChipUseIsHidden.isEnabled

                            if (useLegacyInactiveBehavior) {
                                OngoingActivityChipModel.Inactive()
                            } else {
                                prepareChip(
                                    state = callState,
                                    headsUpState = headsUpState,
                                    systemClock = systemClock,
                                    isHidden = false,
                                    isHidden = callState.isAppVisible,
                                )
                            }
                        }
                    }
                }
                .stateIn(
                    scope,
                    SharingStarted.WhileSubscribed(),
+31 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.statusbar.chips.call.ui.viewmodel

import com.android.systemui.Flags
import com.android.systemui.statusbar.phone.ongoingcall.StatusBarChipsModernization

/** Helper for reading or using the status_bar_call_chip_use_is_hidden flag state. */
object StatusBarCallChipUseIsHidden {
    /** The aconfig flag name */
    const val FLAG_NAME = Flags.FLAG_STATUS_BAR_CALL_CHIP_USE_IS_HIDDEN

    /** Is the feature enabled. */
    @JvmStatic
    inline val isEnabled
        get() = StatusBarChipsModernization.isEnabled && Flags.statusBarCallChipUseIsHidden()
}