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

Commit 89d2efd2 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add StatusBarManager disable API Unit Tests." into main

parents 2787bdac d7dec5d0
Loading
Loading
Loading
Loading
+378 −0
Original line number Diff line number Diff line
@@ -18,6 +18,20 @@ package com.android.server.statusbar;

import static android.app.ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE;
import static android.app.ActivityManager.PROCESS_STATE_TOP;
import static android.app.StatusBarManager.DISABLE2_GLOBAL_ACTIONS;
import static android.app.StatusBarManager.DISABLE2_MASK;
import static android.app.StatusBarManager.DISABLE2_NONE;
import static android.app.StatusBarManager.DISABLE2_NOTIFICATION_SHADE;
import static android.app.StatusBarManager.DISABLE2_QUICK_SETTINGS;
import static android.app.StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS;
import static android.app.StatusBarManager.DISABLE_BACK;
import static android.app.StatusBarManager.DISABLE_CLOCK;
import static android.app.StatusBarManager.DISABLE_HOME;
import static android.app.StatusBarManager.DISABLE_MASK;
import static android.app.StatusBarManager.DISABLE_NONE;
import static android.app.StatusBarManager.DISABLE_RECENT;
import static android.app.StatusBarManager.DISABLE_SEARCH;
import static android.app.StatusBarManager.DISABLE_SYSTEM_INFO;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
@@ -137,6 +151,7 @@ public class StatusBarManagerServiceTest {
        LocalServices.addService(PackageManagerInternal.class, mPackageManagerInternal);

        when(mMockStatusBar.asBinder()).thenReturn(mMockStatusBar);
        when(mMockStatusBar.isBinderAlive()).thenReturn(true);
        when(mApplicationInfo.loadLabel(any())).thenReturn(APP_NAME);
        mockHandleIncomingUser();

@@ -722,6 +737,369 @@ public class StatusBarManagerServiceTest {
        verify(mOverlayManager, never()).setEnabledExclusiveInCategory(anyString(), anyInt());
    }

    @Test
    public void testGetDisableFlags() throws Exception {
        String packageName = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        mStatusBarManagerService.disable(DISABLE_NONE, mMockStatusBar, packageName);
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
    }

    @Test
    public void testSetHomeDisabled() throws Exception {
        int expectedFlags = DISABLE_MASK & DISABLE_HOME;
        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
        // disable
        mStatusBarManagerService.disable(expectedFlags, mMockStatusBar, pkg);
        // check that disable works
        assertEquals(expectedFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
    }

    @Test
    public void testSetSystemInfoDisabled() throws Exception {
        int expectedFlags = DISABLE_MASK & DISABLE_SYSTEM_INFO;
        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
        // disable
        mStatusBarManagerService.disable(expectedFlags, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
    }

    @Test
    public void testSetRecentDisabled() throws Exception {
        int expectedFlags = DISABLE_MASK & DISABLE_RECENT;
        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
        // disable
        mStatusBarManagerService.disable(expectedFlags, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
    }

    @Test
    public void testSetBackDisabled() throws Exception {
        int expectedFlags = DISABLE_MASK & DISABLE_BACK;
        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
        // disable
        mStatusBarManagerService.disable(expectedFlags, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
    }

    @Test
    public void testSetClockDisabled() throws Exception {
        int expectedFlags = DISABLE_MASK & DISABLE_CLOCK;
        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
        // disable home
        mStatusBarManagerService.disable(expectedFlags, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
    }

    @Test
    public void testSetSearchDisabled() throws Exception {
        int expectedFlags = DISABLE_MASK & DISABLE_SEARCH;
        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE, mStatusBarManagerService.getDisableFlags(mMockStatusBar,
                userId)[0]);
        // disable
        mStatusBarManagerService.disable(expectedFlags, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
    }

    @Test
    public void testSetQuickSettingsDisabled2() throws Exception {
        int expectedFlags = DISABLE2_MASK & DISABLE2_QUICK_SETTINGS;
        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE2_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
        // disable
        mStatusBarManagerService.disable2(expectedFlags, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
    }

    @Test
    public void testSetSystemIconsDisabled2() throws Exception {
        int expectedFlags = DISABLE2_MASK & DISABLE2_QUICK_SETTINGS;
        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE, mStatusBarManagerService.getDisableFlags(mMockStatusBar,
                userId)[1]);
        // disable
        mStatusBarManagerService.disable2(expectedFlags, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
    }

    @Test
    public void testSetNotificationShadeDisabled2() throws Exception {
        int expectedFlags = DISABLE2_MASK & DISABLE2_NOTIFICATION_SHADE;
        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE, mStatusBarManagerService.getDisableFlags(mMockStatusBar,
                userId)[1]);
        // disable
        mStatusBarManagerService.disable2(expectedFlags, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
    }


    @Test
    public void testSetGlobalActionsDisabled2() throws Exception {
        int expectedFlags = DISABLE2_MASK & DISABLE2_GLOBAL_ACTIONS;
        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE, mStatusBarManagerService.getDisableFlags(mMockStatusBar,
                userId)[1]);
        // disable
        mStatusBarManagerService.disable2(expectedFlags, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
    }

    @Test
    public void testSetRotateSuggestionsDisabled2() throws Exception {
        int expectedFlags = DISABLE2_MASK & DISABLE2_ROTATE_SUGGESTIONS;
        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
        // disable
        mStatusBarManagerService.disable2(expectedFlags, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
    }

    @Test
    public void testSetTwoDisable2Flags() throws Exception {
        int expectedFlags = DISABLE2_MASK & DISABLE2_ROTATE_SUGGESTIONS & DISABLE2_QUICK_SETTINGS;
        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
        // disable
        mStatusBarManagerService.disable2(expectedFlags, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
    }

    @Test
    public void testSetTwoDisableFlagsRemoveOne() throws Exception {
        int twoFlags = DISABLE_MASK & DISABLE_HOME & DISABLE_BACK;
        int expectedFlag = DISABLE_MASK & DISABLE_HOME;

        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
        // disable
        mStatusBarManagerService.disable(twoFlags, mMockStatusBar, pkg);
        mStatusBarManagerService.disable(DISABLE_NONE, mMockStatusBar, pkg);
        mStatusBarManagerService.disable(expectedFlag, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlag,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
    }

    @Test
    public void testSetTwoDisable2FlagsRemoveOne() throws Exception {
        int twoFlags = DISABLE2_MASK & DISABLE2_ROTATE_SUGGESTIONS & DISABLE2_QUICK_SETTINGS;
        int expectedFlag = DISABLE2_MASK & DISABLE2_QUICK_SETTINGS;

        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE, mStatusBarManagerService.getDisableFlags(mMockStatusBar,
                userId)[1]);
        // disable
        mStatusBarManagerService.disable2(twoFlags, mMockStatusBar, pkg);
        mStatusBarManagerService.disable2(DISABLE2_NONE, mMockStatusBar, pkg);
        mStatusBarManagerService.disable2(expectedFlag, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(expectedFlag,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
    }

    @Test
    public void testDisableBothFlags() throws Exception {
        int disableFlags = DISABLE_MASK & DISABLE_BACK & DISABLE_HOME;
        int disable2Flags = DISABLE2_MASK & DISABLE2_QUICK_SETTINGS & DISABLE2_ROTATE_SUGGESTIONS;

        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE, mStatusBarManagerService.getDisableFlags(mMockStatusBar,
                userId)[0]);
        assertEquals(DISABLE2_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
        // disable
        mStatusBarManagerService.disable(disableFlags, mMockStatusBar, pkg);
        mStatusBarManagerService.disable2(disable2Flags, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(disableFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
        assertEquals(disable2Flags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
    }

    @Test
    public void testDisableBothFlagsEnable1Flags() throws Exception {
        int disableFlags = DISABLE_MASK & DISABLE_BACK & DISABLE_HOME;
        int disable2Flags = DISABLE2_MASK & DISABLE2_QUICK_SETTINGS & DISABLE2_ROTATE_SUGGESTIONS;

        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
        assertEquals(DISABLE2_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
        // disable
        mStatusBarManagerService.disable(disableFlags, mMockStatusBar, pkg);
        mStatusBarManagerService.disable2(disable2Flags, mMockStatusBar, pkg);
        // re-enable one
        mStatusBarManagerService.disable(DISABLE_NONE, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
        assertEquals(disable2Flags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
    }

    @Test
    public void testDisableBothFlagsEnable2Flags() throws Exception {
        int disableFlags = DISABLE_MASK & DISABLE_BACK & DISABLE_HOME;
        int disable2Flags = DISABLE2_MASK & DISABLE2_QUICK_SETTINGS & DISABLE2_ROTATE_SUGGESTIONS;

        String pkg = mContext.getPackageName();
        int userId = 0;
        mockUidCheck();
        mockCurrentUserCheck(userId);
        // before disabling
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
        assertEquals(DISABLE2_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
        // disable
        mStatusBarManagerService.disable(disableFlags, mMockStatusBar, pkg);
        mStatusBarManagerService.disable2(disable2Flags, mMockStatusBar, pkg);
        // re-enable one
        mStatusBarManagerService.disable2(DISABLE_NONE, mMockStatusBar, pkg);
        // check that right flag is disabled
        assertEquals(disableFlags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[0]);
        assertEquals(DISABLE2_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, userId)[1]);
    }

    @Test
    public void testDifferentUsersDisable() throws Exception {
        int user1Id = 0;
        mockUidCheck();
        mockCurrentUserCheck(user1Id);
        int user2Id = 14;
        mockComponentInfo(user2Id);
        mockEverything(user2Id);

        int expectedUser1Flags = DISABLE_MASK & DISABLE_BACK;
        int expectedUser2Flags = DISABLE_MASK & DISABLE_HOME;
        String pkg = mContext.getPackageName();

        // before disabling
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, user1Id)[0]);
        assertEquals(DISABLE_NONE,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, user2Id)[0]);
        // 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]);
        assertEquals(expectedUser2Flags,
                mStatusBarManagerService.getDisableFlags(mMockStatusBar, user2Id)[0]);
    }


    private void mockUidCheck() {
        mockUidCheck(TEST_PACKAGE);
    }