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

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

Merge "Lock Private space at the end of PS setup." into main

parents d1f24c84 242ae4fb
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.util.ArraySet;
import android.util.Log;

import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;

import com.android.internal.annotations.GuardedBy;

@@ -226,6 +227,26 @@ public class PrivateSpaceMaintainer {
                HIDE_PRIVATE_SPACE_ENTRY_POINT_DISABLED_VAL);
    }

    /**
     * Returns true if private space exists and quiet mode is successfully enabled, otherwise
     * returns false
     */
    public synchronized boolean lockPrivateSpace() {
        if (isPrivateProfileRunning()) {
            return mUserManager.requestQuietModeEnabled(true, mUserHandle);
        }
        return false;
    }

    /** Returns true if private space exists and is running, otherwise returns false */
    @VisibleForTesting
    synchronized boolean isPrivateProfileRunning() {
        if (doesPrivateSpaceExist() && mUserHandle != null) {
            return mUserManager.isUserRunning(mUserHandle);
        }
        return false;
    }

    private void resetPrivateSpaceSettings() {
        setHidePrivateSpaceEntryPointSetting(HIDE_PRIVATE_SPACE_ENTRY_POINT_DISABLED_VAL);
    }
+2 −0
Original line number Diff line number Diff line
@@ -84,6 +84,8 @@ public class SetupSuccessFragment extends InstrumentedFragment {
            if (activity != null) {
                mMetricsFeatureProvider.action(
                        getContext(), SettingsEnums.ACTION_PRIVATE_SPACE_SETUP_DONE);
                //TODO(b/307729746): Add a test to verify PS is locked after setup completion.
                PrivateSpaceMaintainer.getInstance(activity).lockPrivateSpace();
                Intent allAppsIntent = new Intent(Intent.ACTION_ALL_APPS);
                ResolveInfo resolveInfo =
                        activity.getPackageManager()
+61 −0
Original line number Diff line number Diff line
@@ -21,8 +21,11 @@ import static com.android.settings.privatespace.PrivateSpaceMaintainer.HIDE_PRIV

import static com.google.common.truth.Truth.assertThat;

import android.app.ActivityManager;
import android.app.IActivityManager;
import android.content.ContentResolver;
import android.content.Context;
import android.os.RemoteException;
import android.provider.Settings;

import androidx.test.core.app.ApplicationProvider;
@@ -30,6 +33,8 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;

import com.android.settings.privatespace.PrivateSpaceMaintainer.ErrorDeletingPrivateSpace;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -37,6 +42,7 @@ import org.mockito.MockitoAnnotations;

@RunWith(AndroidJUnit4.class)
public class PrivateSpaceMaintainerTest {
    private static final String TAG = "PSMaintainerTest";
    private Context mContext;
    private ContentResolver mContentResolver;

@@ -48,6 +54,13 @@ public class PrivateSpaceMaintainerTest {
        mContentResolver = mContext.getContentResolver();
    }

    @After
    public void tearDown() {
        PrivateSpaceMaintainer privateSpaceMaintainer =
                PrivateSpaceMaintainer.getInstance(mContext);
        privateSpaceMaintainer.deletePrivateSpace();
    }

    /** Tests that {@link PrivateSpaceMaintainer#deletePrivateSpace()} deletes PS when PS exists. */
    @Test
    public void deletePrivateSpace_psExists_deletesPS() {
@@ -137,4 +150,52 @@ public class PrivateSpaceMaintainerTest {
        assertThat(privateSpaceMaintainer.getHidePrivateSpaceEntryPointSetting())
                .isEqualTo(HIDE_PRIVATE_SPACE_ENTRY_POINT_ENABLED_VAL);
    }

    /**
     * Tests that {@link PrivateSpaceMaintainer#lockPrivateSpace()} when PS exists and is running
     * locks the private profile.
     */
    @Test
    public void lockPrivateSpace_psExistsAndPrivateProfileRunning_locksCreatedPrivateSpace() {
        PrivateSpaceMaintainer privateSpaceMaintainer =
                PrivateSpaceMaintainer.getInstance(mContext);
        privateSpaceMaintainer.createPrivateSpace();
        assertThat(privateSpaceMaintainer.doesPrivateSpaceExist()).isTrue();
        assertThat(privateSpaceMaintainer.isPrivateProfileRunning()).isTrue();
        assertThat(privateSpaceMaintainer.isPrivateSpaceLocked()).isFalse();
        assertThat(privateSpaceMaintainer.lockPrivateSpace()).isTrue();
        assertThat(privateSpaceMaintainer.isPrivateSpaceLocked()).isTrue();
    }

    /**
     * Tests that {@link PrivateSpaceMaintainer#lockPrivateSpace()} when PS exist and private
     * profile not running returns false.
     */
    @Test
    public void lockPrivateSpace_psExistsAndPrivateProfileNotRunning_returnsFalse() {
        PrivateSpaceMaintainer privateSpaceMaintainer =
                PrivateSpaceMaintainer.getInstance(mContext);
        privateSpaceMaintainer.createPrivateSpace();
        assertThat(privateSpaceMaintainer.doesPrivateSpaceExist()).isTrue();
        assertThat(privateSpaceMaintainer.isPrivateProfileRunning()).isTrue();
        IActivityManager am = ActivityManager.getService();
        try {
            am.stopProfile(privateSpaceMaintainer.getPrivateProfileHandle().getIdentifier());
        } catch (RemoteException e) {
            Assert.fail("Stop profile failed with exception " + e.getMessage());
        }
        assertThat(privateSpaceMaintainer.isPrivateProfileRunning()).isFalse();
        assertThat(privateSpaceMaintainer.lockPrivateSpace()).isFalse();
    }

    /**
     * Tests that {@link PrivateSpaceMaintainer#lockPrivateSpace()} when no PS exists returns false.
     */
    @Test
    public void lockPrivateSpace_psDoesNotExist_returnsFalse() {
        PrivateSpaceMaintainer privateSpaceMaintainer =
                PrivateSpaceMaintainer.getInstance(mContext);
        assertThat(privateSpaceMaintainer.doesPrivateSpaceExist()).isFalse();
        assertThat(privateSpaceMaintainer.lockPrivateSpace()).isFalse();
    }
}