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

Commit 38fa5aa8 authored by Caitlin Shkuratov's avatar Caitlin Shkuratov
Browse files

[Notif] Remove TestableHeadsUpManager, use implementation directly.

Bug: 378142453
Flag: EXEMPT refactor
Test: atest HeadsUpManagerImplOldTest HeadsUpManagerImplTest
Change-Id: Ib2d45661c2d1878332a31ef7f5ddc4164bb9b06e
parent bd2a7138
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper
import com.android.systemui.statusbar.policy.configurationController
import com.android.systemui.testKosmos
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.concurrency.mockExecutorHandler
import com.android.systemui.util.kotlin.JavaAdapter
import com.android.systemui.util.settings.FakeGlobalSettings
import com.android.systemui.util.time.FakeSystemClock
@@ -97,7 +98,7 @@ class AvalancheControllerTest : SysuiTestCase() {
            AvalancheController(dumpManager, mUiEventLoggerFake, mHeadsUpManagerLogger, mBgHandler)

        testableHeadsUpManager =
            TestableHeadsUpManager(
            HeadsUpManagerImpl(
                mContext,
                mLogger,
                kosmos.statusBarStateController,
@@ -105,9 +106,10 @@ class AvalancheControllerTest : SysuiTestCase() {
                GroupMembershipManagerImpl(),
                kosmos.visualStabilityProvider,
                kosmos.configurationController,
                mExecutor,
                mockExecutorHandler(mExecutor),
                mGlobalSettings,
                mSystemClock,
                mExecutor,
                mAccessibilityMgr,
                mUiEventLoggerFake,
                JavaAdapter(kosmos.testScope),
+23 −2
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.shared.NotificationThrottleHun
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper
import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.concurrency.mockExecutorHandler
import com.android.systemui.util.kotlin.JavaAdapter
import com.android.systemui.util.settings.FakeGlobalSettings
import com.android.systemui.util.time.FakeSystemClock
@@ -87,7 +88,7 @@ open class HeadsUpManagerImplOldTest(flags: FlagsParameterization?) : SysuiTestC
    @Mock protected var mRow: ExpandableNotificationRow? = null

    private fun createHeadsUpManager(): HeadsUpManagerImpl {
        return TestableHeadsUpManager(
        return HeadsUpManagerImpl(
            mContext,
            mLogger,
            mKosmos.statusBarStateController,
@@ -95,9 +96,10 @@ open class HeadsUpManagerImplOldTest(flags: FlagsParameterization?) : SysuiTestC
            GroupMembershipManagerImpl(),
            mKosmos.visualStabilityProvider,
            mKosmos.configurationController,
            mExecutor,
            mockExecutorHandler(mExecutor),
            mGlobalSettings,
            mSystemClock,
            mExecutor,
            mAccessibilityMgr,
            mUiEventLoggerFake,
            JavaAdapter(mKosmos.testScope),
@@ -150,6 +152,24 @@ open class HeadsUpManagerImplOldTest(flags: FlagsParameterization?) : SysuiTestC
    @Throws(Exception::class)
    override fun SysuiSetup() {
        super.SysuiSetup()
        mContext.getOrCreateTestableResources().apply {
            this.addOverride(R.integer.ambient_notification_extension_time, TEST_EXTENSION_TIME)
            this.addOverride(R.integer.touch_acceptance_delay, TEST_TOUCH_ACCEPTANCE_TIME)
            this.addOverride(
                R.integer.heads_up_notification_minimum_time,
                TEST_MINIMUM_DISPLAY_TIME,
            )
            this.addOverride(
                R.integer.heads_up_notification_minimum_time_with_throttling,
                TEST_MINIMUM_DISPLAY_TIME,
            )
            this.addOverride(R.integer.heads_up_notification_decay, TEST_AUTO_DISMISS_TIME)
            this.addOverride(
                R.integer.sticky_heads_up_notification_time,
                TEST_STICKY_AUTO_DISMISS_TIME,
            )
        }

        mAvalancheController =
            AvalancheController(dumpManager!!, mUiEventLoggerFake, mLogger, mBgHandler!!)
        Mockito.`when`(mShadeInteractor!!.isAnyExpanded).thenReturn(MutableStateFlow(true))
@@ -662,6 +682,7 @@ open class HeadsUpManagerImplOldTest(flags: FlagsParameterization?) : SysuiTestC
    companion object {
        const val TEST_TOUCH_ACCEPTANCE_TIME: Int = 200
        const val TEST_A11Y_AUTO_DISMISS_TIME: Int = 1000
        const val TEST_EXTENSION_TIME = 500

        const val TEST_MINIMUM_DISPLAY_TIME: Int = 400
        const val TEST_AUTO_DISMISS_TIME: Int = 600
+20 −4
Original line number Diff line number Diff line
@@ -111,6 +111,24 @@ class HeadsUpManagerImplTest(flags: FlagsParameterization) : HeadsUpManagerImplO

    @Before
    fun setUp() {
        mContext.getOrCreateTestableResources().apply {
            this.addOverride(R.integer.ambient_notification_extension_time, TEST_EXTENSION_TIME)
            this.addOverride(R.integer.touch_acceptance_delay, TEST_TOUCH_ACCEPTANCE_TIME)
            this.addOverride(
                R.integer.heads_up_notification_minimum_time,
                TEST_MINIMUM_DISPLAY_TIME,
            )
            this.addOverride(
                R.integer.heads_up_notification_minimum_time_with_throttling,
                TEST_MINIMUM_DISPLAY_TIME,
            )
            this.addOverride(R.integer.heads_up_notification_decay, TEST_AUTO_DISMISS_TIME)
            this.addOverride(
                R.integer.sticky_heads_up_notification_time,
                TEST_STICKY_AUTO_DISMISS_TIME,
            )
        }

        whenever(mShadeInteractor.isAnyExpanded).thenReturn(MutableStateFlow(false))
        whenever(mShadeInteractor.isQsExpanded).thenReturn(MutableStateFlow(false))
        whenever(mBypassController.bypassEnabled).thenReturn(false)
@@ -125,9 +143,7 @@ class HeadsUpManagerImplTest(flags: FlagsParameterization) : HeadsUpManagerImplO
            )
            .thenReturn(TEST_AUTO_DISMISS_TIME)
        mDependency.injectMockDependency(NotificationShadeWindowController::class.java)
        mContext
            .getOrCreateTestableResources()
            .addOverride(R.integer.ambient_notification_extension_time, 500)

        mAvalancheController =
            AvalancheController(dumpManager, mUiEventLogger, mHeadsUpManagerLogger, mBgHandler)
    }
@@ -190,7 +206,7 @@ class HeadsUpManagerImplTest(flags: FlagsParameterization) : HeadsUpManagerImplO
        val entry = HeadsUpManagerTestUtil.createEntry(/* id= */ 0, mContext)
        hmp.showNotification(entry)
        hmp.extendHeadsUp()
        mSystemClock.advanceTime((TEST_AUTO_DISMISS_TIME + hmp.mExtensionTime / 2).toLong())
        mSystemClock.advanceTime(((TEST_AUTO_DISMISS_TIME + TEST_EXTENSION_TIME) / 2).toLong())
        Assert.assertTrue(hmp.isHeadsUpEntry(entry.key))
    }

+0 −162
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.notification.headsup;

import static com.android.systemui.util.concurrency.MockExecutorHandlerKt.mockExecutorHandler;

import static org.mockito.Mockito.spy;

import android.content.Context;
import android.graphics.Region;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.internal.logging.UiEventLogger;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.shade.domain.interactor.ShadeInteractor;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.provider.VisualStabilityProvider;
import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager;
import com.android.systemui.statusbar.phone.KeyguardBypassController;
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.kotlin.JavaAdapter;
import com.android.systemui.util.settings.GlobalSettings;
import com.android.systemui.util.time.SystemClock;

class TestableHeadsUpManager extends HeadsUpManagerImpl {

    private HeadsUpEntry mLastCreatedEntry;

    TestableHeadsUpManager(
            Context context,
            HeadsUpManagerLogger logger,
            StatusBarStateController statusBarStateController,
            KeyguardBypassController bypassController,
            GroupMembershipManager groupMembershipManager,
            VisualStabilityProvider visualStabilityProvider,
            ConfigurationController configurationController,
            DelayableExecutor executor,
            GlobalSettings globalSettings,
            SystemClock systemClock,
            AccessibilityManagerWrapper accessibilityManagerWrapper,
            UiEventLogger uiEventLogger,
            JavaAdapter javaAdapter,
            ShadeInteractor shadeInteractor,
            AvalancheController avalancheController) {
        super(
                context,
                logger,
                statusBarStateController,
                bypassController,
                groupMembershipManager,
                visualStabilityProvider,
                configurationController,
                mockExecutorHandler(executor),
                globalSettings,
                systemClock,
                executor,
                accessibilityManagerWrapper,
                uiEventLogger,
                javaAdapter,
                shadeInteractor,
                avalancheController);

        mTouchAcceptanceDelay = HeadsUpManagerImplOldTest.TEST_TOUCH_ACCEPTANCE_TIME;
        mMinimumDisplayTime = HeadsUpManagerImplOldTest.TEST_MINIMUM_DISPLAY_TIME;
        mAutoDismissTime = HeadsUpManagerImplOldTest.TEST_AUTO_DISMISS_TIME;
        mStickyForSomeTimeAutoDismissTime = HeadsUpManagerImplOldTest.TEST_STICKY_AUTO_DISMISS_TIME;
    }

    @NonNull
    @Override
    protected HeadsUpEntry createHeadsUpEntry(NotificationEntry entry) {
        mLastCreatedEntry = spy(super.createHeadsUpEntry(entry));
        return mLastCreatedEntry;
    }

    // The following are only implemented by HeadsUpManagerPhone. If you need them, use that.
    @Override
    public void addHeadsUpPhoneListener(@NonNull OnHeadsUpPhoneListenerChange listener) {
        throw new UnsupportedOperationException();
    }

    @Override
    public void addSwipedOutNotification(@NonNull String key) {
        throw new UnsupportedOperationException();
    }

    @Override
    public void extendHeadsUp() {
        throw new UnsupportedOperationException();
    }

    @Nullable
    @Override
    public Region getTouchableRegion() {
        throw new UnsupportedOperationException();
    }

    @Override
    public boolean isHeadsUpAnimatingAwayValue() {
        throw new UnsupportedOperationException();
    }

    @Override
    public void onExpandingFinished() {
        throw new UnsupportedOperationException();
    }

    @Override
    public boolean removeNotification(@NonNull String key, boolean releaseImmediately,
            boolean animate, @NonNull String reason) {
        throw new UnsupportedOperationException();
    }

    @Override
    public void setAnimationStateHandler(@NonNull AnimationStateHandler handler) {
        throw new UnsupportedOperationException();
    }

    @Override
    public void setGutsShown(@NonNull NotificationEntry entry, boolean gutsShown) {
        throw new UnsupportedOperationException();
    }

    @Override
    public void setHeadsUpAnimatingAway(boolean headsUpAnimatingAway) {
        throw new UnsupportedOperationException();
    }

    @Override
    public void setRemoteInputActive(@NonNull NotificationEntry entry,
            boolean remoteInputActive) {
        throw new UnsupportedOperationException();
    }

    @Override
    public void setTrackingHeadsUp(boolean tracking) {
        throw new UnsupportedOperationException();
    }

    @Override
    public boolean shouldSwallowClick(@NonNull String key) {
        throw new UnsupportedOperationException();
    }
}
+3 −0
Original line number Diff line number Diff line
@@ -172,6 +172,9 @@
    <!-- Minimum display time for a heads up notification, in milliseconds. -->
    <integer name="heads_up_notification_minimum_time">2000</integer>

    <!-- Minimum display time for a heads up notification if throttling is enabled, in milliseconds. -->
    <integer name="heads_up_notification_minimum_time_with_throttling">500</integer>

    <!-- Display time for a sticky heads up notification, in milliseconds. -->
    <integer name="sticky_heads_up_notification_time">60000</integer>

Loading