Loading packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarModule.kt +6 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import com.android.systemui.log.LogBuffer import com.android.systemui.log.LogBufferFactory import com.android.systemui.statusbar.data.StatusBarDataLayerModule import com.android.systemui.statusbar.phone.LightBarController import com.android.systemui.statusbar.phone.StatusBarSignalPolicy import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallLog import com.android.systemui.statusbar.ui.SystemBarUtilsProxyImpl Loading Loading @@ -51,6 +52,11 @@ abstract class StatusBarModule { @ClassKey(LightBarController::class) abstract fun bindLightBarController(impl: LightBarController): CoreStartable @Binds @IntoMap @ClassKey(StatusBarSignalPolicy::class) abstract fun bindStatusBarSignalPolicy(impl: StatusBarSignalPolicy): CoreStartable companion object { @Provides @SysUISingleton Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +5 −1 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import static com.android.systemui.Flags.keyboardShortcutHelperRewrite; import static com.android.systemui.Flags.lightRevealMigration; import static com.android.systemui.Flags.newAodTransition; import static com.android.systemui.Flags.relockWithPowerButtonImmediately; import static com.android.systemui.Flags.statusBarSignalPolicyRefactor; import static com.android.systemui.charging.WirelessChargingAnimation.UNKNOWN_BATTERY_LEVEL; import static com.android.systemui.flags.Flags.SHORTCUT_LIST_SEARCH_LAYOUT; import static com.android.systemui.statusbar.NotificationLockscreenUserManager.PERMISSION_SELF; Loading Loading @@ -870,7 +871,10 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { mBubblesOptional.ifPresent(this::initBubbles); mKeyguardBypassController.listenForQsExpandedChange(); if (!statusBarSignalPolicyRefactor()) { mStatusBarSignalPolicy.init(); } mKeyguardIndicationController.init(); mColorExtractor.addOnColorsChangedListener(mOnColorsChangedListener); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java +24 −6 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.util.ArraySet; import android.util.Log; import com.android.settingslib.mobile.TelephonyIcons; import com.android.systemui.CoreStartable; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.res.R; import com.android.systemui.statusbar.connectivity.IconState; Loading @@ -44,10 +45,13 @@ import java.util.Objects; import javax.inject.Inject; /** Controls the signal policies for icons shown in the statusbar. **/ /** Controls the signal policies for icons shown in the statusbar. */ @SysUISingleton public class StatusBarSignalPolicy implements SignalCallback, SecurityController.SecurityControllerCallback, Tunable { public class StatusBarSignalPolicy implements SignalCallback, SecurityController.SecurityControllerCallback, Tunable, CoreStartable { private static final String TAG = "StatusBarSignalPolicy"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); Loading @@ -71,9 +75,9 @@ public class StatusBarSignalPolicy implements SignalCallback, private boolean mHideAirplane; private boolean mHideMobile; private boolean mHideEthernet; private boolean mActivityEnabled; private final boolean mActivityEnabled; private ArrayList<CallIndicatorIconState> mCallIndicatorStates = new ArrayList<>(); private final ArrayList<CallIndicatorIconState> mCallIndicatorStates = new ArrayList<>(); private boolean mInitialized; @Inject Loading Loading @@ -107,9 +111,23 @@ public class StatusBarSignalPolicy implements SignalCallback, mActivityEnabled = mContext.getResources().getBoolean(R.bool.config_showActivity); } @Override public void start() { if (!statusBarSignalPolicyRefactor()) { return; } mTunerService.addTunable(this, StatusBarIconController.ICON_HIDE_LIST); mNetworkController.addCallback(this); mSecurityController.addCallback(this); mJavaAdapter.alwaysCollectFlow( mAirplaneModeInteractor.isAirplaneMode(), this::updateAirplaneModeIcon); } /** Call to initialize and register this class with the system. */ public void init() { if (mInitialized) { if (mInitialized || statusBarSignalPolicyRefactor()) { return; } mInitialized = true; Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarSignalPolicyTest.kt +24 −4 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ import com.android.systemui.statusbar.phone.StatusBarSignalPolicy import com.android.systemui.statusbar.phone.StatusBarSignalPolicy_Factory import com.android.systemui.statusbar.phone.ui.StatusBarIconController import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.airplaneModeInteractor import com.android.systemui.statusbar.policy.securityController import com.android.systemui.statusbar.policy.SecurityController import com.android.systemui.tuner.TunerService import com.android.systemui.util.CarrierConfigTracker import com.android.systemui.util.kotlin.JavaAdapter Loading Loading @@ -60,8 +60,8 @@ class StatusBarSignalPolicyTest : SysuiTestCase() { private val javaAdapter = JavaAdapter(testScope.backgroundScope) private val airplaneModeInteractor = kosmos.airplaneModeInteractor private val securityController = kosmos.securityController private val securityController = mock<SecurityController>() private val tunerService = mock<TunerService>() private val statusBarIconController = mock<StatusBarIconController>() private val networkController = mock<NetworkController>() Loading Loading @@ -90,7 +90,7 @@ class StatusBarSignalPolicyTest : SysuiTestCase() { @EnableFlags(FLAG_STATUS_BAR_SIGNAL_POLICY_REFACTOR) fun airplaneModeViaInteractor_statusBarSignalPolicyRefactorFlagEnabled_iconUpdated() = testScope.runTest { underTest.init() underTest.start() airplaneModeInteractor.setIsAirplaneMode(true) runCurrent() verify(statusBarIconController).setIconVisibility(slotAirplane, true) Loading @@ -104,7 +104,7 @@ class StatusBarSignalPolicyTest : SysuiTestCase() { @EnableFlags(FLAG_STATUS_BAR_SIGNAL_POLICY_REFACTOR) fun airplaneModeViaSignalCallback_statusBarSignalPolicyRefactorFlagEnabled_iconNotUpdated() = testScope.runTest { underTest.init() underTest.start() runCurrent() clearInvocations(statusBarIconController) Loading @@ -119,6 +119,16 @@ class StatusBarSignalPolicyTest : SysuiTestCase() { verifyZeroInteractions(statusBarIconController) } @Test @EnableFlags(FLAG_STATUS_BAR_SIGNAL_POLICY_REFACTOR) fun statusBarSignalPolicyInitialization_statusBarSignalPolicyRefactorFlagEnabled_initNoOp() = testScope.runTest { // Make sure StatusBarSignalPolicy.init does no initialization when // the refactor flag is disabled. underTest.init() verifyZeroInteractions(securityController, networkController, tunerService) } @Test @DisableFlags(FLAG_STATUS_BAR_SIGNAL_POLICY_REFACTOR) fun airplaneModeViaSignalCallback_statusBarSignalPolicyRefactorFlagDisabled_iconUpdated() = Loading Loading @@ -150,4 +160,14 @@ class StatusBarSignalPolicyTest : SysuiTestCase() { runCurrent() verifyZeroInteractions(statusBarIconController) } @Test @DisableFlags(FLAG_STATUS_BAR_SIGNAL_POLICY_REFACTOR) fun statusBarSignalPolicyInitialization_statusBarSignalPolicyRefactorFlagDisabled_startNoOp() = testScope.runTest { // Make sure StatusBarSignalPolicy.start does no initialization when // the refactor flag is disabled. underTest.start() verifyZeroInteractions(securityController, networkController, tunerService) } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarModule.kt +6 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import com.android.systemui.log.LogBuffer import com.android.systemui.log.LogBufferFactory import com.android.systemui.statusbar.data.StatusBarDataLayerModule import com.android.systemui.statusbar.phone.LightBarController import com.android.systemui.statusbar.phone.StatusBarSignalPolicy import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallLog import com.android.systemui.statusbar.ui.SystemBarUtilsProxyImpl Loading Loading @@ -51,6 +52,11 @@ abstract class StatusBarModule { @ClassKey(LightBarController::class) abstract fun bindLightBarController(impl: LightBarController): CoreStartable @Binds @IntoMap @ClassKey(StatusBarSignalPolicy::class) abstract fun bindStatusBarSignalPolicy(impl: StatusBarSignalPolicy): CoreStartable companion object { @Provides @SysUISingleton Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +5 −1 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import static com.android.systemui.Flags.keyboardShortcutHelperRewrite; import static com.android.systemui.Flags.lightRevealMigration; import static com.android.systemui.Flags.newAodTransition; import static com.android.systemui.Flags.relockWithPowerButtonImmediately; import static com.android.systemui.Flags.statusBarSignalPolicyRefactor; import static com.android.systemui.charging.WirelessChargingAnimation.UNKNOWN_BATTERY_LEVEL; import static com.android.systemui.flags.Flags.SHORTCUT_LIST_SEARCH_LAYOUT; import static com.android.systemui.statusbar.NotificationLockscreenUserManager.PERMISSION_SELF; Loading Loading @@ -870,7 +871,10 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { mBubblesOptional.ifPresent(this::initBubbles); mKeyguardBypassController.listenForQsExpandedChange(); if (!statusBarSignalPolicyRefactor()) { mStatusBarSignalPolicy.init(); } mKeyguardIndicationController.init(); mColorExtractor.addOnColorsChangedListener(mOnColorsChangedListener); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java +24 −6 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.util.ArraySet; import android.util.Log; import com.android.settingslib.mobile.TelephonyIcons; import com.android.systemui.CoreStartable; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.res.R; import com.android.systemui.statusbar.connectivity.IconState; Loading @@ -44,10 +45,13 @@ import java.util.Objects; import javax.inject.Inject; /** Controls the signal policies for icons shown in the statusbar. **/ /** Controls the signal policies for icons shown in the statusbar. */ @SysUISingleton public class StatusBarSignalPolicy implements SignalCallback, SecurityController.SecurityControllerCallback, Tunable { public class StatusBarSignalPolicy implements SignalCallback, SecurityController.SecurityControllerCallback, Tunable, CoreStartable { private static final String TAG = "StatusBarSignalPolicy"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); Loading @@ -71,9 +75,9 @@ public class StatusBarSignalPolicy implements SignalCallback, private boolean mHideAirplane; private boolean mHideMobile; private boolean mHideEthernet; private boolean mActivityEnabled; private final boolean mActivityEnabled; private ArrayList<CallIndicatorIconState> mCallIndicatorStates = new ArrayList<>(); private final ArrayList<CallIndicatorIconState> mCallIndicatorStates = new ArrayList<>(); private boolean mInitialized; @Inject Loading Loading @@ -107,9 +111,23 @@ public class StatusBarSignalPolicy implements SignalCallback, mActivityEnabled = mContext.getResources().getBoolean(R.bool.config_showActivity); } @Override public void start() { if (!statusBarSignalPolicyRefactor()) { return; } mTunerService.addTunable(this, StatusBarIconController.ICON_HIDE_LIST); mNetworkController.addCallback(this); mSecurityController.addCallback(this); mJavaAdapter.alwaysCollectFlow( mAirplaneModeInteractor.isAirplaneMode(), this::updateAirplaneModeIcon); } /** Call to initialize and register this class with the system. */ public void init() { if (mInitialized) { if (mInitialized || statusBarSignalPolicyRefactor()) { return; } mInitialized = true; Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarSignalPolicyTest.kt +24 −4 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ import com.android.systemui.statusbar.phone.StatusBarSignalPolicy import com.android.systemui.statusbar.phone.StatusBarSignalPolicy_Factory import com.android.systemui.statusbar.phone.ui.StatusBarIconController import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.airplaneModeInteractor import com.android.systemui.statusbar.policy.securityController import com.android.systemui.statusbar.policy.SecurityController import com.android.systemui.tuner.TunerService import com.android.systemui.util.CarrierConfigTracker import com.android.systemui.util.kotlin.JavaAdapter Loading Loading @@ -60,8 +60,8 @@ class StatusBarSignalPolicyTest : SysuiTestCase() { private val javaAdapter = JavaAdapter(testScope.backgroundScope) private val airplaneModeInteractor = kosmos.airplaneModeInteractor private val securityController = kosmos.securityController private val securityController = mock<SecurityController>() private val tunerService = mock<TunerService>() private val statusBarIconController = mock<StatusBarIconController>() private val networkController = mock<NetworkController>() Loading Loading @@ -90,7 +90,7 @@ class StatusBarSignalPolicyTest : SysuiTestCase() { @EnableFlags(FLAG_STATUS_BAR_SIGNAL_POLICY_REFACTOR) fun airplaneModeViaInteractor_statusBarSignalPolicyRefactorFlagEnabled_iconUpdated() = testScope.runTest { underTest.init() underTest.start() airplaneModeInteractor.setIsAirplaneMode(true) runCurrent() verify(statusBarIconController).setIconVisibility(slotAirplane, true) Loading @@ -104,7 +104,7 @@ class StatusBarSignalPolicyTest : SysuiTestCase() { @EnableFlags(FLAG_STATUS_BAR_SIGNAL_POLICY_REFACTOR) fun airplaneModeViaSignalCallback_statusBarSignalPolicyRefactorFlagEnabled_iconNotUpdated() = testScope.runTest { underTest.init() underTest.start() runCurrent() clearInvocations(statusBarIconController) Loading @@ -119,6 +119,16 @@ class StatusBarSignalPolicyTest : SysuiTestCase() { verifyZeroInteractions(statusBarIconController) } @Test @EnableFlags(FLAG_STATUS_BAR_SIGNAL_POLICY_REFACTOR) fun statusBarSignalPolicyInitialization_statusBarSignalPolicyRefactorFlagEnabled_initNoOp() = testScope.runTest { // Make sure StatusBarSignalPolicy.init does no initialization when // the refactor flag is disabled. underTest.init() verifyZeroInteractions(securityController, networkController, tunerService) } @Test @DisableFlags(FLAG_STATUS_BAR_SIGNAL_POLICY_REFACTOR) fun airplaneModeViaSignalCallback_statusBarSignalPolicyRefactorFlagDisabled_iconUpdated() = Loading Loading @@ -150,4 +160,14 @@ class StatusBarSignalPolicyTest : SysuiTestCase() { runCurrent() verifyZeroInteractions(statusBarIconController) } @Test @DisableFlags(FLAG_STATUS_BAR_SIGNAL_POLICY_REFACTOR) fun statusBarSignalPolicyInitialization_statusBarSignalPolicyRefactorFlagDisabled_startNoOp() = testScope.runTest { // Make sure StatusBarSignalPolicy.start does no initialization when // the refactor flag is disabled. underTest.start() verifyZeroInteractions(securityController, networkController, tunerService) } }