Loading packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +48 −28 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ import com.android.settingslib.fuelgauge.BatteryStatus; import com.android.systemui.R; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dock.DockManager; import com.android.systemui.keyguard.KeyguardIndication; Loading Loading @@ -132,6 +133,7 @@ public class KeyguardIndicationController { private final DevicePolicyManager mDevicePolicyManager; private final UserManager mUserManager; protected final @Main DelayableExecutor mExecutor; protected final @Background DelayableExecutor mBackgroundExecutor; private final LockPatternUtils mLockPatternUtils; private final IActivityManager mIActivityManager; private final FalsingManager mFalsingManager; Loading Loading @@ -203,6 +205,7 @@ public class KeyguardIndicationController { IBatteryStats iBatteryStats, UserManager userManager, @Main DelayableExecutor executor, @Background DelayableExecutor bgExecutor, FalsingManager falsingManager, LockPatternUtils lockPatternUtils, ScreenLifecycle screenLifecycle, Loading @@ -220,6 +223,7 @@ public class KeyguardIndicationController { mBatteryInfo = iBatteryStats; mUserManager = userManager; mExecutor = executor; mBackgroundExecutor = bgExecutor; mLockPatternUtils = lockPatternUtils; mIActivityManager = iActivityManager; mFalsingManager = falsingManager; Loading Loading @@ -328,8 +332,12 @@ public class KeyguardIndicationController { private void updateDisclosure() { if (mOrganizationOwnedDevice) { mBackgroundExecutor.execute(() -> { final CharSequence organizationName = getOrganizationOwnedDeviceOrganizationName(); final CharSequence disclosure = getDisclosureText(organizationName); mExecutor.execute(() -> { if (mKeyguardStateController.isShowing()) { mRotateTextViewController.updateIndication( INDICATION_TYPE_DISCLOSURE, new KeyguardIndication.Builder() Loading @@ -337,6 +345,9 @@ public class KeyguardIndicationController { .setTextColor(mInitialTextColorState) .build(), /* updateImmediately */ false); } }); }); } else { mRotateTextViewController.hideIndication(INDICATION_TYPE_DISCLOSURE); } Loading Loading @@ -364,6 +375,9 @@ public class KeyguardIndicationController { } private void updateOwnerInfo() { // Check device owner info on a bg thread. // It makes multiple IPCs that could block the thread it's run on. mBackgroundExecutor.execute(() -> { String info = mLockPatternUtils.getDeviceOwnerInfo(); if (info == null) { // Use the current user owner information if enabled. Loading @@ -373,17 +387,23 @@ public class KeyguardIndicationController { info = mLockPatternUtils.getOwnerInfo(KeyguardUpdateMonitor.getCurrentUser()); } } if (!TextUtils.isEmpty(info)) { // Update the UI on the main thread. final String finalInfo = info; mExecutor.execute(() -> { if (!TextUtils.isEmpty(finalInfo) && mKeyguardStateController.isShowing()) { mRotateTextViewController.updateIndication( INDICATION_TYPE_OWNER_INFO, new KeyguardIndication.Builder() .setMessage(info) .setMessage(finalInfo) .setTextColor(mInitialTextColorState) .build(), false); } else { mRotateTextViewController.hideIndication(INDICATION_TYPE_OWNER_INFO); } }); }); } private void updateBattery(boolean animate) { Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java +13 −2 Original line number Diff line number Diff line Loading @@ -229,8 +229,8 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { mController = new KeyguardIndicationController(mContext, mWakeLockBuilder, mKeyguardStateController, mStatusBarStateController, mKeyguardUpdateMonitor, mDockManager, mBroadcastDispatcher, mDevicePolicyManager, mIBatteryStats, mUserManager, mExecutor, mFalsingManager, mLockPatternUtils, mScreenLifecycle, mIActivityManager, mKeyguardBypassController); mUserManager, mExecutor, mExecutor, mFalsingManager, mLockPatternUtils, mScreenLifecycle, mIActivityManager, mKeyguardBypassController); mController.init(); mController.setIndicationArea(mIndicationArea); verify(mStatusBarStateController).addCallback(mStatusBarStateListenerCaptor.capture()); Loading Loading @@ -331,6 +331,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { when(mDevicePolicyManager.isDeviceManaged()).thenReturn(false); when(mDevicePolicyManager.isOrganizationOwnedDeviceWithManagedProfile()).thenReturn(false); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyHideIndication(INDICATION_TYPE_DISCLOSURE); } Loading @@ -341,6 +342,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { when(mDevicePolicyManager.isDeviceManaged()).thenReturn(true); when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(null); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mDisclosureGeneric); } Loading @@ -353,6 +355,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { new UserInfo(10, /* name */ null, /* flags */ FLAG_MANAGED_PROFILE))); when(mDevicePolicyManager.getOrganizationNameForUser(eq(10))).thenReturn(null); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mDisclosureGeneric); } Loading @@ -363,6 +366,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { when(mDevicePolicyManager.isDeviceManaged()).thenReturn(true); when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(ORGANIZATION_NAME); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mDisclosureWithOrganization); } Loading @@ -375,6 +379,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { new UserInfo(10, /* name */ null, FLAG_MANAGED_PROFILE))); when(mDevicePolicyManager.getOrganizationNameForUser(eq(10))).thenReturn(ORGANIZATION_NAME); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mDisclosureWithOrganization); } Loading @@ -387,6 +392,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { when(mDevicePolicyManager.isDeviceManaged()).thenReturn(true); when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(null); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mDisclosureGeneric); reset(mRotateTextViewController); Loading @@ -394,12 +400,14 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { when(mDevicePolicyManager.isDeviceManaged()).thenReturn(true); when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(ORGANIZATION_NAME); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mDisclosureWithOrganization); reset(mRotateTextViewController); when(mDevicePolicyManager.isDeviceManaged()).thenReturn(false); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyHideIndication(INDICATION_TYPE_DISCLOSURE); } Loading @@ -413,6 +421,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { when(mDevicePolicyManager.getDeviceOwnerType(DEVICE_OWNER_COMPONENT)) .thenReturn(DEVICE_OWNER_TYPE_FINANCED); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mFinancedDisclosureWithOrganization); } Loading Loading @@ -734,6 +743,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { // WHEN asked to update the indication area mController.setVisible(true); mExecutor.runAllReady(); // THEN the owner info should be hidden verifyHideIndication(INDICATION_TYPE_OWNER_INFO); Loading Loading @@ -763,6 +773,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { // WHEN keyguard showing changed called mKeyguardStateControllerCallback.onKeyguardShowingChanged(); mExecutor.runAllReady(); // THEN persistent messages are updated (in this case, most messages are hidden since // no info is provided) - verify that this happens Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +48 −28 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ import com.android.settingslib.fuelgauge.BatteryStatus; import com.android.systemui.R; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dock.DockManager; import com.android.systemui.keyguard.KeyguardIndication; Loading Loading @@ -132,6 +133,7 @@ public class KeyguardIndicationController { private final DevicePolicyManager mDevicePolicyManager; private final UserManager mUserManager; protected final @Main DelayableExecutor mExecutor; protected final @Background DelayableExecutor mBackgroundExecutor; private final LockPatternUtils mLockPatternUtils; private final IActivityManager mIActivityManager; private final FalsingManager mFalsingManager; Loading Loading @@ -203,6 +205,7 @@ public class KeyguardIndicationController { IBatteryStats iBatteryStats, UserManager userManager, @Main DelayableExecutor executor, @Background DelayableExecutor bgExecutor, FalsingManager falsingManager, LockPatternUtils lockPatternUtils, ScreenLifecycle screenLifecycle, Loading @@ -220,6 +223,7 @@ public class KeyguardIndicationController { mBatteryInfo = iBatteryStats; mUserManager = userManager; mExecutor = executor; mBackgroundExecutor = bgExecutor; mLockPatternUtils = lockPatternUtils; mIActivityManager = iActivityManager; mFalsingManager = falsingManager; Loading Loading @@ -328,8 +332,12 @@ public class KeyguardIndicationController { private void updateDisclosure() { if (mOrganizationOwnedDevice) { mBackgroundExecutor.execute(() -> { final CharSequence organizationName = getOrganizationOwnedDeviceOrganizationName(); final CharSequence disclosure = getDisclosureText(organizationName); mExecutor.execute(() -> { if (mKeyguardStateController.isShowing()) { mRotateTextViewController.updateIndication( INDICATION_TYPE_DISCLOSURE, new KeyguardIndication.Builder() Loading @@ -337,6 +345,9 @@ public class KeyguardIndicationController { .setTextColor(mInitialTextColorState) .build(), /* updateImmediately */ false); } }); }); } else { mRotateTextViewController.hideIndication(INDICATION_TYPE_DISCLOSURE); } Loading Loading @@ -364,6 +375,9 @@ public class KeyguardIndicationController { } private void updateOwnerInfo() { // Check device owner info on a bg thread. // It makes multiple IPCs that could block the thread it's run on. mBackgroundExecutor.execute(() -> { String info = mLockPatternUtils.getDeviceOwnerInfo(); if (info == null) { // Use the current user owner information if enabled. Loading @@ -373,17 +387,23 @@ public class KeyguardIndicationController { info = mLockPatternUtils.getOwnerInfo(KeyguardUpdateMonitor.getCurrentUser()); } } if (!TextUtils.isEmpty(info)) { // Update the UI on the main thread. final String finalInfo = info; mExecutor.execute(() -> { if (!TextUtils.isEmpty(finalInfo) && mKeyguardStateController.isShowing()) { mRotateTextViewController.updateIndication( INDICATION_TYPE_OWNER_INFO, new KeyguardIndication.Builder() .setMessage(info) .setMessage(finalInfo) .setTextColor(mInitialTextColorState) .build(), false); } else { mRotateTextViewController.hideIndication(INDICATION_TYPE_OWNER_INFO); } }); }); } private void updateBattery(boolean animate) { Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java +13 −2 Original line number Diff line number Diff line Loading @@ -229,8 +229,8 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { mController = new KeyguardIndicationController(mContext, mWakeLockBuilder, mKeyguardStateController, mStatusBarStateController, mKeyguardUpdateMonitor, mDockManager, mBroadcastDispatcher, mDevicePolicyManager, mIBatteryStats, mUserManager, mExecutor, mFalsingManager, mLockPatternUtils, mScreenLifecycle, mIActivityManager, mKeyguardBypassController); mUserManager, mExecutor, mExecutor, mFalsingManager, mLockPatternUtils, mScreenLifecycle, mIActivityManager, mKeyguardBypassController); mController.init(); mController.setIndicationArea(mIndicationArea); verify(mStatusBarStateController).addCallback(mStatusBarStateListenerCaptor.capture()); Loading Loading @@ -331,6 +331,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { when(mDevicePolicyManager.isDeviceManaged()).thenReturn(false); when(mDevicePolicyManager.isOrganizationOwnedDeviceWithManagedProfile()).thenReturn(false); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyHideIndication(INDICATION_TYPE_DISCLOSURE); } Loading @@ -341,6 +342,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { when(mDevicePolicyManager.isDeviceManaged()).thenReturn(true); when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(null); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mDisclosureGeneric); } Loading @@ -353,6 +355,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { new UserInfo(10, /* name */ null, /* flags */ FLAG_MANAGED_PROFILE))); when(mDevicePolicyManager.getOrganizationNameForUser(eq(10))).thenReturn(null); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mDisclosureGeneric); } Loading @@ -363,6 +366,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { when(mDevicePolicyManager.isDeviceManaged()).thenReturn(true); when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(ORGANIZATION_NAME); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mDisclosureWithOrganization); } Loading @@ -375,6 +379,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { new UserInfo(10, /* name */ null, FLAG_MANAGED_PROFILE))); when(mDevicePolicyManager.getOrganizationNameForUser(eq(10))).thenReturn(ORGANIZATION_NAME); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mDisclosureWithOrganization); } Loading @@ -387,6 +392,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { when(mDevicePolicyManager.isDeviceManaged()).thenReturn(true); when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(null); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mDisclosureGeneric); reset(mRotateTextViewController); Loading @@ -394,12 +400,14 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { when(mDevicePolicyManager.isDeviceManaged()).thenReturn(true); when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(ORGANIZATION_NAME); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mDisclosureWithOrganization); reset(mRotateTextViewController); when(mDevicePolicyManager.isDeviceManaged()).thenReturn(false); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyHideIndication(INDICATION_TYPE_DISCLOSURE); } Loading @@ -413,6 +421,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { when(mDevicePolicyManager.getDeviceOwnerType(DEVICE_OWNER_COMPONENT)) .thenReturn(DEVICE_OWNER_TYPE_FINANCED); sendUpdateDisclosureBroadcast(); mExecutor.runAllReady(); verifyIndicationMessage(INDICATION_TYPE_DISCLOSURE, mFinancedDisclosureWithOrganization); } Loading Loading @@ -734,6 +743,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { // WHEN asked to update the indication area mController.setVisible(true); mExecutor.runAllReady(); // THEN the owner info should be hidden verifyHideIndication(INDICATION_TYPE_OWNER_INFO); Loading Loading @@ -763,6 +773,7 @@ public class KeyguardIndicationControllerTest extends SysuiTestCase { // WHEN keyguard showing changed called mKeyguardStateControllerCallback.onKeyguardShowingChanged(); mExecutor.runAllReady(); // THEN persistent messages are updated (in this case, most messages are hidden since // no info is provided) - verify that this happens Loading