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

Commit b89bb9d8 authored by Nishith  Khanna's avatar Nishith Khanna
Browse files

Merge remote-tracking branch 'origin/lineage-22.2' into a15

parents df7b659b c12fff5f
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -256,6 +256,10 @@ public final class NotificationHistory implements Parcelable {
            mParcel.setDataPosition(0);
            mParcel.appendFrom(data, data.dataPosition(), listByteLength);
            mParcel.setDataSize(mParcel.dataPosition());
            if (positionInParcel > mParcel.dataSize()) {
                throw new IllegalStateException(
                    "Obtained an invalid position value(" + positionInParcel + " from Parcel.");
            }
            mParcel.setDataPosition(positionInParcel);
        }
    }
+1 −0
Original line number Diff line number Diff line
@@ -84,6 +84,7 @@ import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers
import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.Mock
+53 −42
Original line number Diff line number Diff line
@@ -271,7 +271,7 @@ public class BackgroundActivityStartControllerExemptionTests {
        // setup state
        when(mVisibleActivityProcessTracker.hasVisibleActivity(eq(callingUid))).thenReturn(true);
        when(mVisibleActivityProcessTracker.hasVisibleNotPinnedActivity(eq(callingUid)))
                .thenReturn(true);
                .thenReturn(false);
        when(mService.getBalAppSwitchesState()).thenReturn(APP_SWITCH_ALLOW);

        // prepare call
@@ -284,7 +284,7 @@ public class BackgroundActivityStartControllerExemptionTests {
                originatingPendingIntent, allowBalExemptionForSystemProcess, mResultRecord, intent,
                checkedOptions);
        assertThat(balState.toString()).contains("callingUidHasVisibleActivity: true");
        assertThat(balState.toString()).contains("callingUidHasVisibleNotPinnedActivity: true");
        assertThat(balState.toString()).contains("callingUidHasVisibleNotPinnedActivity: false");
        assertThat(balState.toString()).contains("callingUidHasNonAppVisibleWindow: false");

        // call
@@ -295,11 +295,11 @@ public class BackgroundActivityStartControllerExemptionTests {
        // assertions
        assertWithMessage(balState + " -> " + callerVerdict)
                .that(callerVerdict.getCode())
                .isEqualTo(BAL_ALLOW_VISIBLE_WINDOW);
                .isEqualTo(BAL_BLOCK);
    }

    @Test
    public void testCaller_appHasVisibleWindow() {
    public void testCaller_appHasVisiblePinnedWindow() {
        int callingUid = REGULAR_UID_1;
        int callingPid = REGULAR_PID_1;
        final String callingPackage = REGULAR_PACKAGE_1;
@@ -309,7 +309,7 @@ public class BackgroundActivityStartControllerExemptionTests {
        // setup state
        when(mVisibleActivityProcessTracker.hasVisibleActivity(eq(callingUid))).thenReturn(true);
        when(mVisibleActivityProcessTracker.hasVisibleNotPinnedActivity(eq(callingUid)))
                .thenReturn(false);
                .thenReturn(true);
        when(mService.getBalAppSwitchesState()).thenReturn(APP_SWITCH_ALLOW);

        // prepare call
@@ -322,7 +322,7 @@ public class BackgroundActivityStartControllerExemptionTests {
                originatingPendingIntent, allowBalExemptionForSystemProcess, mResultRecord, intent,
                checkedOptions);
        assertThat(balState.toString()).contains("callingUidHasVisibleActivity: true");
        assertThat(balState.toString()).contains("callingUidHasVisibleNotPinnedActivity: false");
        assertThat(balState.toString()).contains("callingUidHasVisibleNotPinnedActivity: true");
        assertThat(balState.toString()).contains("callingUidHasNonAppVisibleWindow: false");

        // call
@@ -333,11 +333,11 @@ public class BackgroundActivityStartControllerExemptionTests {
        // assertions
        assertWithMessage(balState + " -> " + callerVerdict)
                .that(callerVerdict.getCode())
                .isEqualTo(BAL_BLOCK);
                .isEqualTo(BAL_ALLOW_VISIBLE_WINDOW);
    }

    @Test
    public void testCaller_appHasVisiblePinnedWindow() {
    public void testRealCaller_appHasVisibleWindow() {
        int callingUid = REGULAR_UID_1;
        int callingPid = REGULAR_PID_1;
        final String callingPackage = REGULAR_PACKAGE_1;
@@ -345,9 +345,10 @@ public class BackgroundActivityStartControllerExemptionTests {
        int realCallingPid = REGULAR_PID_2;

        // setup state
        when(mVisibleActivityProcessTracker.hasVisibleActivity(eq(callingUid))).thenReturn(true);
        when(mVisibleActivityProcessTracker.hasVisibleNotPinnedActivity(eq(callingUid)))
        when(mVisibleActivityProcessTracker.hasVisibleActivity(eq(realCallingUid)))
                .thenReturn(true);
        when(mVisibleActivityProcessTracker.hasVisibleNotPinnedActivity(eq(realCallingUid)))
                .thenReturn(false);
        when(mService.getBalAppSwitchesState()).thenReturn(APP_SWITCH_ALLOW);

        // prepare call
@@ -360,23 +361,21 @@ public class BackgroundActivityStartControllerExemptionTests {
                callingPid, callingPackage, realCallingUid, realCallingPid, mCallerApp,
                originatingPendingIntent, allowBalExemptionForSystemProcess, mResultRecord, intent,
                checkedOptions);
        assertThat(balState.toString()).contains("callingUidHasVisibleActivity: true");
        assertThat(balState.toString()).contains("callingUidHasVisibleNotPinnedActivity: true");
        assertThat(balState.toString()).contains("callingUidHasNonAppVisibleWindow: false");
        assertThat(balState.toString()).contains("realCallingUidHasVisibleActivity: true");
        assertThat(balState.toString()).contains("realCallingUidHasNonAppVisibleWindow: false");

        // call
        BalVerdict callerVerdict = mController.checkBackgroundActivityStartAllowedByCaller(
        BalVerdict realCallerVerdict = mController.checkBackgroundActivityStartAllowedBySender(
                balState);
        balState.setResultForCaller(callerVerdict);
        balState.setResultForRealCaller(realCallerVerdict);

        // assertions
        assertWithMessage(balState + " -> " + callerVerdict)
                .that(callerVerdict.getCode())
                .isEqualTo(BAL_ALLOW_VISIBLE_WINDOW);
        assertWithMessage(balState.toString()).that(realCallerVerdict.getCode()).isEqualTo(
                BAL_ALLOW_NON_APP_VISIBLE_WINDOW);
    }

    @Test
    public void testRealCaller_appHasVisibleWindow() {
    public void testCaller_appHasNonAppVisibleWindow() {
        int callingUid = REGULAR_UID_1;
        int callingPid = REGULAR_PID_1;
        final String callingPackage = REGULAR_PACKAGE_1;
@@ -384,8 +383,7 @@ public class BackgroundActivityStartControllerExemptionTests {
        int realCallingPid = REGULAR_PID_2;

        // setup state
        when(mVisibleActivityProcessTracker.hasVisibleActivity(eq(realCallingUid))).thenReturn(
                true);
        mActiveUids.onNonAppSurfaceVisibilityChanged(callingUid, true);
        when(mService.getBalAppSwitchesState()).thenReturn(APP_SWITCH_ALLOW);

        // prepare call
@@ -398,21 +396,21 @@ public class BackgroundActivityStartControllerExemptionTests {
                callingPid, callingPackage, realCallingUid, realCallingPid, mCallerApp,
                originatingPendingIntent, allowBalExemptionForSystemProcess, mResultRecord, intent,
                checkedOptions);
        assertThat(balState.toString()).contains("realCallingUidHasVisibleActivity: true");
        assertThat(balState.toString()).contains("realCallingUidHasNonAppVisibleWindow: false");
        assertThat(balState.toString()).contains("callingUidHasVisibleActivity: false");
        assertThat(balState.toString()).contains("callingUidHasNonAppVisibleWindow: true");

        // call
        BalVerdict realCallerVerdict = mController.checkBackgroundActivityStartAllowedBySender(
        BalVerdict callerVerdict = mController.checkBackgroundActivityStartAllowedByCaller(
                balState);
        balState.setResultForRealCaller(realCallerVerdict);
        balState.setResultForCaller(callerVerdict);

        // assertions
        assertWithMessage(balState.toString()).that(realCallerVerdict.getCode()).isEqualTo(
        assertWithMessage(balState.toString()).that(callerVerdict.getCode()).isEqualTo(
                BAL_ALLOW_NON_APP_VISIBLE_WINDOW);
    }

    @Test
    public void testCaller_appHasNonAppVisibleWindow() {
    public void testRealCaller_appHasNonAppVisibleWindow() {
        int callingUid = REGULAR_UID_1;
        int callingPid = REGULAR_PID_1;
        final String callingPackage = REGULAR_PACKAGE_1;
@@ -420,34 +418,36 @@ public class BackgroundActivityStartControllerExemptionTests {
        int realCallingPid = REGULAR_PID_2;

        // setup state
        mActiveUids.onNonAppSurfaceVisibilityChanged(callingUid, true);
        mActiveUids.onNonAppSurfaceVisibilityChanged(realCallingUid, true);
        when(mService.getBalAppSwitchesState()).thenReturn(APP_SWITCH_ALLOW);

        // prepare call
        PendingIntentRecord originatingPendingIntent = mPendingIntentRecord;
        BackgroundStartPrivileges allowBalExemptionForSystemProcess =
                BackgroundStartPrivileges.NONE;
        boolean allowBalExemptionForSystemProcess = false;
        Intent intent = TEST_INTENT;
        ActivityOptions checkedOptions = mCheckedOptions;
        BackgroundActivityStartController.BalState balState = mController.new BalState(callingUid,
                callingPid, callingPackage, realCallingUid, realCallingPid, mCallerApp,
                originatingPendingIntent, allowBalExemptionForSystemProcess, mResultRecord, intent,
                checkedOptions);
        assertThat(balState.toString()).contains("callingUidHasVisibleActivity: false");
        assertThat(balState.toString()).contains("callingUidHasNonAppVisibleWindow: true");
        assertThat(balState.toString()).contains("realCallingUidHasVisibleActivity: true");
        assertThat(balState.toString())
                .contains("realCallingUidHasVisibleNotPinnedActivity: false");
        assertThat(balState.toString()).contains("realCallingUidHasNonAppVisibleWindow: false");

        // call
        BalVerdict callerVerdict = mController.checkBackgroundActivityStartAllowedByCaller(
        BalVerdict realCallerVerdict = mController.checkBackgroundActivityStartAllowedByRealCaller(
                balState);
        balState.setResultForCaller(callerVerdict);
        balState.setResultForRealCaller(realCallerVerdict);

        // assertions
        assertWithMessage(balState.toString()).that(callerVerdict.getCode()).isEqualTo(
                BAL_ALLOW_NON_APP_VISIBLE_WINDOW);
        assertWithMessage(balState + " -> " + realCallerVerdict)
                .that(realCallerVerdict.getCode())
                .isEqualTo(BAL_BLOCK);
    }

    @Test
    public void testRealCaller_appHasNonAppVisibleWindow() {
    public void testRealCaller_appHasNotPinnedVisibleWindow() {
        int callingUid = REGULAR_UID_1;
        int callingPid = REGULAR_PID_1;
        final String callingPackage = REGULAR_PACKAGE_1;
@@ -455,7 +455,10 @@ public class BackgroundActivityStartControllerExemptionTests {
        int realCallingPid = REGULAR_PID_2;

        // setup state
        mActiveUids.onNonAppSurfaceVisibilityChanged(realCallingUid, true);
        when(mVisibleActivityProcessTracker.hasVisibleActivity(eq(realCallingUid)))
                .thenReturn(true);
        when(mVisibleActivityProcessTracker.hasVisibleNotPinnedActivity(eq(realCallingUid)))
                .thenReturn(true);
        when(mService.getBalAppSwitchesState()).thenReturn(APP_SWITCH_ALLOW);

        // prepare call
@@ -468,6 +471,7 @@ public class BackgroundActivityStartControllerExemptionTests {
                originatingPendingIntent, allowBalExemptionForSystemProcess, mResultRecord, intent,
                checkedOptions);
        assertThat(balState.toString()).contains("realCallingUidHasVisibleActivity: true");
        assertThat(balState.toString()).contains("realCallingUidHasVisibleNotPinnedActivity: true");
        assertThat(balState.toString()).contains("realCallingUidHasNonAppVisibleWindow: false");

        // call
@@ -476,8 +480,9 @@ public class BackgroundActivityStartControllerExemptionTests {
        balState.setResultForRealCaller(realCallerVerdict);

        // assertions
        assertWithMessage(balState.toString()).that(realCallerVerdict.getCode()).isEqualTo(
                BAL_ALLOW_VISIBLE_WINDOW);
        assertWithMessage(balState + " -> " + realCallerVerdict)
                .that(realCallerVerdict.getCode())
                .isEqualTo(BAL_ALLOW_VISIBLE_WINDOW);
    }

    @Test
@@ -561,6 +566,8 @@ public class BackgroundActivityStartControllerExemptionTests {

        // setup state
        when(mVisibleActivityProcessTracker.hasVisibleActivity(eq(callingUid))).thenReturn(true);
        when(mVisibleActivityProcessTracker.hasVisibleNotPinnedActivity(eq(callingUid)))
                .thenReturn(true);
        when(mService.getBalAppSwitchesState()).thenReturn(APP_SWITCH_ALLOW);

        // prepare call
@@ -575,6 +582,7 @@ public class BackgroundActivityStartControllerExemptionTests {
                originatingPendingIntent, allowBalExemptionForSystemProcess, mResultRecord, intent,
                checkedOptions);
        assertThat(balState.toString()).contains("callingUidHasVisibleActivity: true");
        assertThat(balState.toString()).contains("callingUidHasVisibleNotPinnedActivity: true");
        assertThat(balState.toString()).contains("callingUidHasNonAppVisibleWindow: false");

        // call
@@ -597,8 +605,10 @@ public class BackgroundActivityStartControllerExemptionTests {
        int realCallingPid = REGULAR_PID_2;

        // setup state
        when(mVisibleActivityProcessTracker.hasVisibleActivity(eq(realCallingUid))).thenReturn(
                true);
        when(mVisibleActivityProcessTracker.hasVisibleActivity(eq(realCallingUid)))
                .thenReturn(true);
        when(mVisibleActivityProcessTracker.hasVisibleNotPinnedActivity(eq(realCallingUid)))
                .thenReturn(true);
        when(mService.getBalAppSwitchesState()).thenReturn(APP_SWITCH_ALLOW);

        // prepare call
@@ -613,6 +623,7 @@ public class BackgroundActivityStartControllerExemptionTests {
                originatingPendingIntent, allowBalExemptionForSystemProcess, mResultRecord, intent,
                checkedOptions);
        assertThat(balState.toString()).contains("realCallingUidHasVisibleActivity: true");
        assertThat(balState.toString()).contains("realCallingUidHasVisibleNotPinnedActivity: true");
        assertThat(balState.toString()).contains("realCallingUidHasNonAppVisibleWindow: false");

        // call
+0 −1
Original line number Diff line number Diff line
@@ -69,7 +69,6 @@ public class VisibleActivityProcessTrackerTests extends WindowTestsBase {
        assertThat(mTracker.hasVisibleActivity(wpc.mUid)).isFalse();
    }


    @Test
    public void hasVisibleNotPinnedActivity_whenProcessHasNoActivities_returnsFalse() {
        WindowProcessController wpc = createWindowProcessController();