Loading services/core/java/com/android/server/statusbar/StatusBarManagerService.java +28 −57 Original line number Diff line number Diff line Loading @@ -87,7 +87,6 @@ import android.service.quicksettings.TileService; import android.text.TextUtils; import android.util.ArrayMap; import android.util.IndentingPrintWriter; import android.util.IntArray; import android.util.Pair; import android.util.Slog; import android.util.SparseArray; Loading Loading @@ -125,7 +124,6 @@ import com.android.server.policy.GlobalActionsProvider; import com.android.server.power.ShutdownCheckPoints; import com.android.server.power.ShutdownThread; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.systemui.shared.Flags; import java.io.FileDescriptor; import java.io.PrintWriter; Loading Loading @@ -343,21 +341,17 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D @Override public void onDisplayAdded(int displayId) { if (Flags.statusBarConnectedDisplays()) { synchronized (mLock) { mDisplayUiState.put(displayId, new UiState()); } } } @Override public void onDisplayRemoved(int displayId) { if (Flags.statusBarConnectedDisplays()) { synchronized (mLock) { mDisplayUiState.remove(displayId); } } } @Override public void onDisplayChanged(int displayId) {} Loading Loading @@ -1366,66 +1360,53 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D return mTracingEnabled; } // TODO(b/117478341): make it aware of multi-display if needed. @Override public void disable(int what, IBinder token, String pkg) { disableForUser(what, token, pkg, mCurrentUserId); } /** * Disable additional status bar features for user for all displays. Pass the bitwise-or of the * {@code #DISABLE_*} flags. To re-enable everything, pass {@code #DISABLE_NONE}. * * Warning: Only pass {@code #DISABLE_*} flags into this function, do not use * {@code #DISABLE2_*} flags. */ // TODO(b/117478341): make it aware of multi-display if needed. @Override public void disableForUser(int what, IBinder token, String pkg, int userId) { enforceStatusBar(); enforceValidCallingUser(); synchronized (mLock) { IntArray displayIds = new IntArray(); for (int i = 0; i < mDisplayUiState.size(); i++) { displayIds.add(mDisplayUiState.keyAt(i)); } disableLocked(displayIds, userId, what, token, pkg, 1); disableLocked(DEFAULT_DISPLAY, userId, what, token, pkg, 1); } } // TODO(b/117478341): make it aware of multi-display if needed. /** * Disable additional status bar features. Pass the bitwise-or of the {@code #DISABLE2_*} flags. * To re-enable everything, pass {@code #DISABLE2_NONE}. * Disable additional status bar features. Pass the bitwise-or of the DISABLE2_* flags. * To re-enable everything, pass {@link #DISABLE2_NONE}. * * Warning: Only pass {@code #DISABLE2_*} flags into this function, do not use * {@code #DISABLE_*} flags. * Warning: Only pass DISABLE2_* flags into this function, do not use DISABLE_* flags. */ @Override public void disable2(int what, IBinder token, String pkg) { disable2ForUser(what, token, pkg, mCurrentUserId); } // TODO(b/117478341): make it aware of multi-display if needed. /** * Disable additional status bar features for a given user for all displays. Pass the bitwise-or * of the {@code #DISABLE2_*} flags. To re-enable everything, pass {@code #DISABLE2_NONE}. * Disable additional status bar features for a given user. Pass the bitwise-or of the * DISABLE2_* flags. To re-enable everything, pass {@link #DISABLE_NONE}. * * Warning: Only pass {@code #DISABLE2_*} flags into this function, do not use * {@code #DISABLE_*} flags. * Warning: Only pass DISABLE2_* flags into this function, do not use DISABLE_* flags. */ @Override public void disable2ForUser(int what, IBinder token, String pkg, int userId) { enforceStatusBar(); synchronized (mLock) { IntArray displayIds = new IntArray(); for (int i = 0; i < mDisplayUiState.size(); i++) { displayIds.add(mDisplayUiState.keyAt(i)); } disableLocked(displayIds, userId, what, token, pkg, 2); disableLocked(DEFAULT_DISPLAY, userId, what, token, pkg, 2); } } private void disableLocked(IntArray displayIds, int userId, int what, IBinder token, String pkg, int whichFlag) { private void disableLocked(int displayId, int userId, int what, IBinder token, String pkg, int whichFlag) { // It's important that the the callback and the call to mBar get done // in the same order when multiple threads are calling this function // so they are paired correctly. The messages on the handler will be Loading @@ -1435,28 +1416,19 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D // Ensure state for the current user is applied, even if passed a non-current user. final int net1 = gatherDisableActionsLocked(mCurrentUserId, 1); final int net2 = gatherDisableActionsLocked(mCurrentUserId, 2); boolean shouldCallNotificationOnSetDisabled = false; IStatusBar bar = mBar; for (int displayId : displayIds.toArray()) { final UiState state = getUiState(displayId); if (!state.disableEquals(net1, net2)) { shouldCallNotificationOnSetDisabled = true; state.setDisabled(net1, net2); mHandler.post(() -> mNotificationDelegate.onSetDisabled(net1)); IStatusBar bar = mBar; if (bar != null) { try { // TODO(b/388244660): Create IStatusBar#disableForAllDisplays to avoid // multiple IPC calls. bar.disable(displayId, net1, net2); } catch (RemoteException ex) { Slog.e(TAG, "Unable to disable Status bar.", ex); } } } } if (shouldCallNotificationOnSetDisabled) { mHandler.post(() -> mNotificationDelegate.onSetDisabled(net1)); } } /** * Get the currently applied disable flags, in the form of one Pair<Integer, Integer>. Loading Loading @@ -1610,8 +1582,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D if (SPEW) Slog.d(TAG, "setDisableFlags(0x" + Integer.toHexString(flags) + ")"); synchronized (mLock) { disableLocked(IntArray.wrap(new int[]{displayId}), mCurrentUserId, flags, mSysUiVisToken, cause, 1); disableLocked(displayId, mCurrentUserId, flags, mSysUiVisToken, cause, 1); } } Loading services/tests/servicestests/src/com/android/server/statusbar/StatusBarManagerServiceTest.java +0 −50 Original line number Diff line number Diff line Loading @@ -69,7 +69,6 @@ import android.os.Binder; import android.os.Looper; import android.os.RemoteException; import android.os.UserHandle; import android.platform.test.annotations.EnableFlags; import android.service.quicksettings.TileService; import android.testing.TestableContext; Loading @@ -80,7 +79,6 @@ import com.android.internal.statusbar.IStatusBar; import com.android.server.LocalServices; import com.android.server.policy.GlobalActionsProvider; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.systemui.shared.Flags; import libcore.junit.util.compat.CoreCompatChangeRule; Loading @@ -107,7 +105,6 @@ public class StatusBarManagerServiceTest { TEST_SERVICE); private static final CharSequence APP_NAME = "AppName"; private static final CharSequence TILE_LABEL = "Tile label"; private static final int SECONDARY_DISPLAY_ID = 2; @Rule public final TestableContext mContext = Loading Loading @@ -751,29 +748,6 @@ public class StatusBarManagerServiceTest { mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]); } @Test @EnableFlags(Flags.FLAG_STATUS_BAR_CONNECTED_DISPLAYS) public void testDisableForAllDisplays() throws Exception { int user1Id = 0; mockUidCheck(); mockCurrentUserCheck(user1Id); mStatusBarManagerService.onDisplayAdded(SECONDARY_DISPLAY_ID); int expectedFlags = DISABLE_MASK & DISABLE_BACK; String pkg = mContext.getPackageName(); // before disabling assertEquals(DISABLE_NONE, mStatusBarManagerService.getDisableFlags(mMockStatusBar, user1Id)[0]); // disable mStatusBarManagerService.disable(expectedFlags, mMockStatusBar, pkg); verify(mMockStatusBar).disable(0, expectedFlags, 0); verify(mMockStatusBar).disable(SECONDARY_DISPLAY_ID, expectedFlags, 0); } @Test public void testSetHomeDisabled() throws Exception { int expectedFlags = DISABLE_MASK & DISABLE_HOME; Loading Loading @@ -876,29 +850,6 @@ public class StatusBarManagerServiceTest { mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]); } @Test @EnableFlags(Flags.FLAG_STATUS_BAR_CONNECTED_DISPLAYS) public void testDisable2ForAllDisplays() throws Exception { int user1Id = 0; mockUidCheck(); mockCurrentUserCheck(user1Id); mStatusBarManagerService.onDisplayAdded(SECONDARY_DISPLAY_ID); int expectedFlags = DISABLE2_MASK & DISABLE2_NOTIFICATION_SHADE; String pkg = mContext.getPackageName(); // before disabling assertEquals(DISABLE_NONE, mStatusBarManagerService.getDisableFlags(mMockStatusBar, user1Id)[0]); // disable mStatusBarManagerService.disable2(expectedFlags, mMockStatusBar, pkg); verify(mMockStatusBar).disable(0, 0, expectedFlags); verify(mMockStatusBar).disable(SECONDARY_DISPLAY_ID, 0, expectedFlags); } @Test public void testSetQuickSettingsDisabled2() throws Exception { int expectedFlags = DISABLE2_MASK & DISABLE2_QUICK_SETTINGS; Loading Loading @@ -1141,7 +1092,6 @@ public class StatusBarManagerServiceTest { // disable mStatusBarManagerService.disableForUser(expectedUser1Flags, mMockStatusBar, pkg, user1Id); mStatusBarManagerService.disableForUser(expectedUser2Flags, mMockStatusBar, pkg, user2Id); // check that right flag is disabled assertEquals(expectedUser1Flags, mStatusBarManagerService.getDisableFlags(mMockStatusBar, user1Id)[0]); Loading Loading
services/core/java/com/android/server/statusbar/StatusBarManagerService.java +28 −57 Original line number Diff line number Diff line Loading @@ -87,7 +87,6 @@ import android.service.quicksettings.TileService; import android.text.TextUtils; import android.util.ArrayMap; import android.util.IndentingPrintWriter; import android.util.IntArray; import android.util.Pair; import android.util.Slog; import android.util.SparseArray; Loading Loading @@ -125,7 +124,6 @@ import com.android.server.policy.GlobalActionsProvider; import com.android.server.power.ShutdownCheckPoints; import com.android.server.power.ShutdownThread; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.systemui.shared.Flags; import java.io.FileDescriptor; import java.io.PrintWriter; Loading Loading @@ -343,21 +341,17 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D @Override public void onDisplayAdded(int displayId) { if (Flags.statusBarConnectedDisplays()) { synchronized (mLock) { mDisplayUiState.put(displayId, new UiState()); } } } @Override public void onDisplayRemoved(int displayId) { if (Flags.statusBarConnectedDisplays()) { synchronized (mLock) { mDisplayUiState.remove(displayId); } } } @Override public void onDisplayChanged(int displayId) {} Loading Loading @@ -1366,66 +1360,53 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D return mTracingEnabled; } // TODO(b/117478341): make it aware of multi-display if needed. @Override public void disable(int what, IBinder token, String pkg) { disableForUser(what, token, pkg, mCurrentUserId); } /** * Disable additional status bar features for user for all displays. Pass the bitwise-or of the * {@code #DISABLE_*} flags. To re-enable everything, pass {@code #DISABLE_NONE}. * * Warning: Only pass {@code #DISABLE_*} flags into this function, do not use * {@code #DISABLE2_*} flags. */ // TODO(b/117478341): make it aware of multi-display if needed. @Override public void disableForUser(int what, IBinder token, String pkg, int userId) { enforceStatusBar(); enforceValidCallingUser(); synchronized (mLock) { IntArray displayIds = new IntArray(); for (int i = 0; i < mDisplayUiState.size(); i++) { displayIds.add(mDisplayUiState.keyAt(i)); } disableLocked(displayIds, userId, what, token, pkg, 1); disableLocked(DEFAULT_DISPLAY, userId, what, token, pkg, 1); } } // TODO(b/117478341): make it aware of multi-display if needed. /** * Disable additional status bar features. Pass the bitwise-or of the {@code #DISABLE2_*} flags. * To re-enable everything, pass {@code #DISABLE2_NONE}. * Disable additional status bar features. Pass the bitwise-or of the DISABLE2_* flags. * To re-enable everything, pass {@link #DISABLE2_NONE}. * * Warning: Only pass {@code #DISABLE2_*} flags into this function, do not use * {@code #DISABLE_*} flags. * Warning: Only pass DISABLE2_* flags into this function, do not use DISABLE_* flags. */ @Override public void disable2(int what, IBinder token, String pkg) { disable2ForUser(what, token, pkg, mCurrentUserId); } // TODO(b/117478341): make it aware of multi-display if needed. /** * Disable additional status bar features for a given user for all displays. Pass the bitwise-or * of the {@code #DISABLE2_*} flags. To re-enable everything, pass {@code #DISABLE2_NONE}. * Disable additional status bar features for a given user. Pass the bitwise-or of the * DISABLE2_* flags. To re-enable everything, pass {@link #DISABLE_NONE}. * * Warning: Only pass {@code #DISABLE2_*} flags into this function, do not use * {@code #DISABLE_*} flags. * Warning: Only pass DISABLE2_* flags into this function, do not use DISABLE_* flags. */ @Override public void disable2ForUser(int what, IBinder token, String pkg, int userId) { enforceStatusBar(); synchronized (mLock) { IntArray displayIds = new IntArray(); for (int i = 0; i < mDisplayUiState.size(); i++) { displayIds.add(mDisplayUiState.keyAt(i)); } disableLocked(displayIds, userId, what, token, pkg, 2); disableLocked(DEFAULT_DISPLAY, userId, what, token, pkg, 2); } } private void disableLocked(IntArray displayIds, int userId, int what, IBinder token, String pkg, int whichFlag) { private void disableLocked(int displayId, int userId, int what, IBinder token, String pkg, int whichFlag) { // It's important that the the callback and the call to mBar get done // in the same order when multiple threads are calling this function // so they are paired correctly. The messages on the handler will be Loading @@ -1435,28 +1416,19 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D // Ensure state for the current user is applied, even if passed a non-current user. final int net1 = gatherDisableActionsLocked(mCurrentUserId, 1); final int net2 = gatherDisableActionsLocked(mCurrentUserId, 2); boolean shouldCallNotificationOnSetDisabled = false; IStatusBar bar = mBar; for (int displayId : displayIds.toArray()) { final UiState state = getUiState(displayId); if (!state.disableEquals(net1, net2)) { shouldCallNotificationOnSetDisabled = true; state.setDisabled(net1, net2); mHandler.post(() -> mNotificationDelegate.onSetDisabled(net1)); IStatusBar bar = mBar; if (bar != null) { try { // TODO(b/388244660): Create IStatusBar#disableForAllDisplays to avoid // multiple IPC calls. bar.disable(displayId, net1, net2); } catch (RemoteException ex) { Slog.e(TAG, "Unable to disable Status bar.", ex); } } } } if (shouldCallNotificationOnSetDisabled) { mHandler.post(() -> mNotificationDelegate.onSetDisabled(net1)); } } /** * Get the currently applied disable flags, in the form of one Pair<Integer, Integer>. Loading Loading @@ -1610,8 +1582,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D if (SPEW) Slog.d(TAG, "setDisableFlags(0x" + Integer.toHexString(flags) + ")"); synchronized (mLock) { disableLocked(IntArray.wrap(new int[]{displayId}), mCurrentUserId, flags, mSysUiVisToken, cause, 1); disableLocked(displayId, mCurrentUserId, flags, mSysUiVisToken, cause, 1); } } Loading
services/tests/servicestests/src/com/android/server/statusbar/StatusBarManagerServiceTest.java +0 −50 Original line number Diff line number Diff line Loading @@ -69,7 +69,6 @@ import android.os.Binder; import android.os.Looper; import android.os.RemoteException; import android.os.UserHandle; import android.platform.test.annotations.EnableFlags; import android.service.quicksettings.TileService; import android.testing.TestableContext; Loading @@ -80,7 +79,6 @@ import com.android.internal.statusbar.IStatusBar; import com.android.server.LocalServices; import com.android.server.policy.GlobalActionsProvider; import com.android.server.wm.ActivityTaskManagerInternal; import com.android.systemui.shared.Flags; import libcore.junit.util.compat.CoreCompatChangeRule; Loading @@ -107,7 +105,6 @@ public class StatusBarManagerServiceTest { TEST_SERVICE); private static final CharSequence APP_NAME = "AppName"; private static final CharSequence TILE_LABEL = "Tile label"; private static final int SECONDARY_DISPLAY_ID = 2; @Rule public final TestableContext mContext = Loading Loading @@ -751,29 +748,6 @@ public class StatusBarManagerServiceTest { mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]); } @Test @EnableFlags(Flags.FLAG_STATUS_BAR_CONNECTED_DISPLAYS) public void testDisableForAllDisplays() throws Exception { int user1Id = 0; mockUidCheck(); mockCurrentUserCheck(user1Id); mStatusBarManagerService.onDisplayAdded(SECONDARY_DISPLAY_ID); int expectedFlags = DISABLE_MASK & DISABLE_BACK; String pkg = mContext.getPackageName(); // before disabling assertEquals(DISABLE_NONE, mStatusBarManagerService.getDisableFlags(mMockStatusBar, user1Id)[0]); // disable mStatusBarManagerService.disable(expectedFlags, mMockStatusBar, pkg); verify(mMockStatusBar).disable(0, expectedFlags, 0); verify(mMockStatusBar).disable(SECONDARY_DISPLAY_ID, expectedFlags, 0); } @Test public void testSetHomeDisabled() throws Exception { int expectedFlags = DISABLE_MASK & DISABLE_HOME; Loading Loading @@ -876,29 +850,6 @@ public class StatusBarManagerServiceTest { mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]); } @Test @EnableFlags(Flags.FLAG_STATUS_BAR_CONNECTED_DISPLAYS) public void testDisable2ForAllDisplays() throws Exception { int user1Id = 0; mockUidCheck(); mockCurrentUserCheck(user1Id); mStatusBarManagerService.onDisplayAdded(SECONDARY_DISPLAY_ID); int expectedFlags = DISABLE2_MASK & DISABLE2_NOTIFICATION_SHADE; String pkg = mContext.getPackageName(); // before disabling assertEquals(DISABLE_NONE, mStatusBarManagerService.getDisableFlags(mMockStatusBar, user1Id)[0]); // disable mStatusBarManagerService.disable2(expectedFlags, mMockStatusBar, pkg); verify(mMockStatusBar).disable(0, 0, expectedFlags); verify(mMockStatusBar).disable(SECONDARY_DISPLAY_ID, 0, expectedFlags); } @Test public void testSetQuickSettingsDisabled2() throws Exception { int expectedFlags = DISABLE2_MASK & DISABLE2_QUICK_SETTINGS; Loading Loading @@ -1141,7 +1092,6 @@ public class StatusBarManagerServiceTest { // disable mStatusBarManagerService.disableForUser(expectedUser1Flags, mMockStatusBar, pkg, user1Id); mStatusBarManagerService.disableForUser(expectedUser2Flags, mMockStatusBar, pkg, user2Id); // check that right flag is disabled assertEquals(expectedUser1Flags, mStatusBarManagerService.getDisableFlags(mMockStatusBar, user1Id)[0]); Loading