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

Commit 2206dba5 authored by Julia Tuttle's avatar Julia Tuttle
Browse files

Create old or new provider in Bubbles and CentralSurfacesImpl tests

Right now, these tests create a NotificationInterruptStateProvider
manually, and therefore they have to force disable the flag for the
refactored version of that code.

As we roll out the refactor, we want test coverage of the new code, so
change these tests to create the old or new code based on the flag
value.

Bug: 312476335
Test: atest BubblesTest CentralSurfacesImplTest
Flag: ACONFIG com.android.systemui.visual_interruptions_refactor STAGING
Change-Id: I61900e55fc8c4c6d4f08ffaae11ef98fcf4c50d7
parent 6980d0fa
Loading
Loading
Loading
Loading
+95 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 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.interruption

import android.hardware.display.AmbientDisplayConfiguration
import android.os.Handler
import android.os.PowerManager
import com.android.internal.logging.UiEventLogger
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.settings.UserTracker
import com.android.systemui.statusbar.notification.NotifPipelineFlags
import com.android.systemui.statusbar.policy.BatteryController
import com.android.systemui.statusbar.policy.DeviceProvisionedController
import com.android.systemui.statusbar.policy.HeadsUpManager
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.EventLog
import com.android.systemui.util.settings.GlobalSettings
import com.android.systemui.util.time.SystemClock

object VisualInterruptionDecisionProviderTestUtil {
    fun createProviderByFlag(
        ambientDisplayConfiguration: AmbientDisplayConfiguration,
        batteryController: BatteryController,
        deviceProvisionedController: DeviceProvisionedController,
        eventLog: EventLog,
        flags: NotifPipelineFlags,
        globalSettings: GlobalSettings,
        headsUpManager: HeadsUpManager,
        keyguardNotificationVisibilityProvider: KeyguardNotificationVisibilityProvider,
        keyguardStateController: KeyguardStateController,
        @Main mainHandler: Handler,
        newLogger: VisualInterruptionDecisionLogger,
        oldLogger: NotificationInterruptLogger,
        powerManager: PowerManager,
        statusBarStateController: StatusBarStateController,
        systemClock: SystemClock,
        uiEventLogger: UiEventLogger,
        userTracker: UserTracker
    ): VisualInterruptionDecisionProvider {
        return if (VisualInterruptionRefactor.isEnabled) {
            VisualInterruptionDecisionProviderImpl(
                ambientDisplayConfiguration,
                batteryController,
                deviceProvisionedController,
                eventLog,
                globalSettings,
                headsUpManager,
                keyguardNotificationVisibilityProvider,
                keyguardStateController,
                newLogger,
                mainHandler,
                powerManager,
                statusBarStateController,
                systemClock,
                uiEventLogger,
                userTracker
            )
        } else {
            NotificationInterruptStateProviderWrapper(
                NotificationInterruptStateProviderImpl(
                    powerManager,
                    ambientDisplayConfiguration,
                    batteryController,
                    statusBarStateController,
                    keyguardStateController,
                    headsUpManager,
                    oldLogger,
                    mainHandler,
                    flags,
                    keyguardNotificationVisibilityProvider,
                    uiEventLogger,
                    userTracker,
                    deviceProvisionedController,
                    systemClock,
                    globalSettings,
                    eventLog
                )
            )
        }
    }
}
+21 −22
Original line number Diff line number Diff line
@@ -155,9 +155,9 @@ import com.android.systemui.statusbar.notification.init.NotificationsController;
import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptLogger;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProviderImpl;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProviderWrapper;
import com.android.systemui.statusbar.notification.interruption.VisualInterruptionDecisionLogger;
import com.android.systemui.statusbar.notification.interruption.VisualInterruptionDecisionProvider;
import com.android.systemui.statusbar.notification.interruption.VisualInterruptionRefactor;
import com.android.systemui.statusbar.notification.interruption.VisualInterruptionDecisionProviderTestUtil;
import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
@@ -348,8 +348,6 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
        mFeatureFlags.set(Flags.ZJ_285570694_LOCKSCREEN_TRANSITION_FROM_AOD, true);
        when(mDozeParameters.getAlwaysOn()).thenReturn(true);
        mSetFlagsRule.disableFlags(com.android.systemui.Flags.FLAG_DEVICE_ENTRY_UDFPS_REFACTOR);
        // TODO: b/312476335 - Update to check flag and instantiate old or new implementation.
        mSetFlagsRule.disableFlags(VisualInterruptionRefactor.FLAG_NAME);

        IThermalService thermalService = mock(IThermalService.class);
        mPowerManager = new PowerManager(mContext, mPowerManagerService, thermalService,
@@ -358,24 +356,25 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
        mFakeGlobalSettings.putInt(HEADS_UP_NOTIFICATIONS_ENABLED, HEADS_UP_ON);

        mVisualInterruptionDecisionProvider =
                new NotificationInterruptStateProviderWrapper(
                        new TestableNotificationInterruptStateProviderImpl(
                                mPowerManager,
                VisualInterruptionDecisionProviderTestUtil.INSTANCE.createProviderByFlag(
                        mAmbientDisplayConfiguration,
                                mStatusBarStateController,
                                mKeyguardStateController,
                        mBatteryController,
                                mHeadsUpManager,
                                mock(NotificationInterruptLogger.class),
                                new Handler(TestableLooper.get(this).getLooper()),
                        mDeviceProvisionedController,
                        mFakeEventLog,
                        mock(NotifPipelineFlags.class),
                        mFakeGlobalSettings,
                        mHeadsUpManager,
                        mock(KeyguardNotificationVisibilityProvider.class),
                                mock(UiEventLogger.class),
                                mUserTracker,
                                mDeviceProvisionedController,
                        mKeyguardStateController,
                        new Handler(TestableLooper.get(this).getLooper()),
                        mock(VisualInterruptionDecisionLogger.class),
                        mock(NotificationInterruptLogger.class),
                        mPowerManager,
                        mStatusBarStateController,
                        mFakeSystemClock,
                                mFakeGlobalSettings,
                                mFakeEventLog));
                        mock(UiEventLogger.class),
                        mUserTracker);
        mVisualInterruptionDecisionProvider.start();

        mContext.addMockSystemService(TrustManager.class, mock(TrustManager.class));
        mContext.addMockSystemService(FingerprintManager.class, mock(FingerprintManager.class));
+19 −20
Original line number Diff line number Diff line
@@ -145,8 +145,9 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.No
import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider;
import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptLogger;
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProviderWrapper;
import com.android.systemui.statusbar.notification.interruption.VisualInterruptionRefactor;
import com.android.systemui.statusbar.notification.interruption.VisualInterruptionDecisionLogger;
import com.android.systemui.statusbar.notification.interruption.VisualInterruptionDecisionProvider;
import com.android.systemui.statusbar.notification.interruption.VisualInterruptionDecisionProviderTestUtil;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
import com.android.systemui.statusbar.notification.stack.domain.interactor.SharedNotificationContainerInteractor;
@@ -367,9 +368,6 @@ public class BubblesTest extends SysuiTestCase {
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);

        // TODO: b/312476335 - Update to check flag and instantiate old or new implementation.
        mSetFlagsRule.disableFlags(VisualInterruptionRefactor.FLAG_NAME);

        if (Transitions.ENABLE_SHELL_TRANSITIONS) {
            doReturn(true).when(mTransitions).isRegistered();
        }
@@ -535,25 +533,26 @@ public class BubblesTest extends SysuiTestCase {
        final FakeGlobalSettings fakeGlobalSettings = new FakeGlobalSettings();
        fakeGlobalSettings.putInt(HEADS_UP_NOTIFICATIONS_ENABLED, HEADS_UP_ON);

        TestableNotificationInterruptStateProviderImpl interruptionStateProvider =
                new TestableNotificationInterruptStateProviderImpl(
                        mock(PowerManager.class),
        final VisualInterruptionDecisionProvider interruptionDecisionProvider =
                VisualInterruptionDecisionProviderTestUtil.INSTANCE.createProviderByFlag(
                        mock(AmbientDisplayConfiguration.class),
                        mock(StatusBarStateController.class),
                        mock(KeyguardStateController.class),
                        mock(BatteryController.class),
                        mock(HeadsUpManager.class),
                        mock(NotificationInterruptLogger.class),
                        mock(Handler.class),
                        mock(DeviceProvisionedController.class),
                        new FakeEventLog(),
                        mock(NotifPipelineFlags.class),
                        fakeGlobalSettings,
                        mock(HeadsUpManager.class),
                        mock(KeyguardNotificationVisibilityProvider.class),
                        mock(UiEventLogger.class),
                        mock(UserTracker.class),
                        mock(DeviceProvisionedController.class),
                        mock(KeyguardStateController.class),
                        mock(Handler.class),
                        mock(VisualInterruptionDecisionLogger.class),
                        mock(NotificationInterruptLogger.class),
                        mock(PowerManager.class),
                        mock(StatusBarStateController.class),
                        mock(SystemClock.class),
                        fakeGlobalSettings,
                        new FakeEventLog()
                );
                        mock(UiEventLogger.class),
                        mock(UserTracker.class));
        interruptionDecisionProvider.start();

        mShellTaskOrganizer = new ShellTaskOrganizer(mock(ShellInit.class),
                mock(ShellCommandHandler.class),
@@ -602,7 +601,7 @@ public class BubblesTest extends SysuiTestCase {
                mock(INotificationManager.class),
                mIDreamManager,
                mVisibilityProvider,
                new NotificationInterruptStateProviderWrapper(interruptionStateProvider),
                interruptionDecisionProvider,
                mZenModeController,
                mLockscreenUserManager,
                mCommonNotifCollection,