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

Commit 917ca3da authored by Ankit Shetgaonkar's avatar Ankit Shetgaonkar Committed by Android (Google) Code Review
Browse files

Revert "Make StatusBarManagerService#disableForUser methods work on all"

This reverts commit 2f28621b.

Reason for revert: Testing for possible test breakage b/390751592

Change-Id: I5908ed78fea17eaf9a46a845bce0f95665977d17
parent 2f28621b
Loading
Loading
Loading
Loading
+28 −57
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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) {}
@@ -1326,66 +1320,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
@@ -1395,28 +1376,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>.
@@ -1567,8 +1539,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);
        }
    }

+0 −50
Original line number Diff line number Diff line
@@ -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;

@@ -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;

@@ -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 =
@@ -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;
@@ -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;
@@ -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]);