1 /* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.systemui.statusbar.notification.interruption 17 18 import android.content.pm.PackageManager 19 import android.hardware.display.AmbientDisplayConfiguration 20 import android.os.Handler 21 import android.os.PowerManager 22 import com.android.internal.logging.UiEventLogger 23 import com.android.systemui.dagger.qualifiers.Main 24 import com.android.systemui.plugins.statusbar.StatusBarStateController 25 import com.android.systemui.settings.UserTracker 26 import com.android.systemui.statusbar.notification.NotifPipelineFlags 27 import com.android.systemui.statusbar.policy.BatteryController 28 import com.android.systemui.statusbar.policy.DeviceProvisionedController 29 import com.android.systemui.statusbar.policy.HeadsUpManager 30 import com.android.systemui.statusbar.policy.KeyguardStateController 31 import com.android.systemui.util.EventLog 32 import com.android.systemui.util.settings.GlobalSettings 33 import com.android.systemui.util.settings.SystemSettings 34 import com.android.systemui.util.time.SystemClock 35 import com.android.wm.shell.bubbles.Bubbles 36 import java.util.Optional 37 38 object VisualInterruptionDecisionProviderTestUtil { createProviderByFlagnull39 fun createProviderByFlag( 40 ambientDisplayConfiguration: AmbientDisplayConfiguration, 41 batteryController: BatteryController, 42 deviceProvisionedController: DeviceProvisionedController, 43 eventLog: EventLog, 44 flags: NotifPipelineFlags, 45 globalSettings: GlobalSettings, 46 headsUpManager: HeadsUpManager, 47 keyguardNotificationVisibilityProvider: KeyguardNotificationVisibilityProvider, 48 keyguardStateController: KeyguardStateController, 49 @Main mainHandler: Handler, 50 newLogger: VisualInterruptionDecisionLogger, 51 oldLogger: NotificationInterruptLogger, 52 powerManager: PowerManager, 53 statusBarStateController: StatusBarStateController, 54 systemClock: SystemClock, 55 uiEventLogger: UiEventLogger, 56 userTracker: UserTracker, 57 avalancheProvider: AvalancheProvider, 58 systemSettings: SystemSettings, 59 packageManager: PackageManager, 60 bubbles: Optional<Bubbles>, 61 ): VisualInterruptionDecisionProvider { 62 return if (VisualInterruptionRefactor.isEnabled) { 63 VisualInterruptionDecisionProviderImpl( 64 ambientDisplayConfiguration, 65 batteryController, 66 deviceProvisionedController, 67 eventLog, 68 globalSettings, 69 headsUpManager, 70 keyguardNotificationVisibilityProvider, 71 keyguardStateController, 72 newLogger, 73 mainHandler, 74 powerManager, 75 statusBarStateController, 76 systemClock, 77 uiEventLogger, 78 userTracker, 79 avalancheProvider, 80 systemSettings, 81 packageManager, 82 bubbles 83 ) 84 } else { 85 NotificationInterruptStateProviderWrapper( 86 NotificationInterruptStateProviderImpl( 87 powerManager, 88 ambientDisplayConfiguration, 89 batteryController, 90 statusBarStateController, 91 keyguardStateController, 92 headsUpManager, 93 oldLogger, 94 mainHandler, 95 flags, 96 keyguardNotificationVisibilityProvider, 97 uiEventLogger, 98 userTracker, 99 deviceProvisionedController, 100 systemClock, 101 globalSettings, 102 eventLog, 103 bubbles 104 ) 105 ) 106 } 107 } 108 } 109