summaryrefslogtreecommitdiff
path: root/tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java')
-rw-r--r--tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java153
1 files changed, 153 insertions, 0 deletions
diff --git a/tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java b/tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java
new file mode 100644
index 0000000000..79d00c9f2f
--- /dev/null
+++ b/tests/src/com/android/launcher3/allapps/PrivateProfileManagerTest.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.launcher3.allapps;
+
+import static com.android.launcher3.allapps.UserProfileManager.STATE_DISABLED;
+import static com.android.launcher3.allapps.UserProfileManager.STATE_ENABLED;
+import static com.android.launcher3.model.BgDataModel.Callbacks.FLAG_PRIVATE_PROFILE_QUIET_MODE_ENABLED;
+import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Process;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.launcher3.logging.StatsLogManager;
+import com.android.launcher3.pm.UserCache;
+import com.android.launcher3.util.UserIconInfo;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+import java.util.Arrays;
+
+@RunWith(AndroidJUnit4.class)
+public class PrivateProfileManagerTest {
+
+ private static final UserHandle MAIN_HANDLE = Process.myUserHandle();
+ private static final UserHandle PRIVATE_HANDLE = new UserHandle(11);
+ private static final UserIconInfo MAIN_ICON_INFO =
+ new UserIconInfo(MAIN_HANDLE, UserIconInfo.TYPE_MAIN);
+ private static final UserIconInfo PRIVATE_ICON_INFO =
+ new UserIconInfo(PRIVATE_HANDLE, UserIconInfo.TYPE_PRIVATE);
+ private static final String SAFETY_CENTER_INTENT = Intent.ACTION_SAFETY_CENTER;
+ private static final String PS_SETTINGS_FRAGMENT_KEY = ":settings:fragment_args_key";
+ private static final String PS_SETTINGS_FRAGMENT_VALUE = "AndroidPrivateSpace_personal";
+
+ private PrivateProfileManager mPrivateProfileManager;
+ @Mock
+ private ActivityAllAppsContainerView mActivityAllAppsContainerView;
+ @Mock
+ private StatsLogManager mStatsLogManager;
+ @Mock
+ private UserCache mUserCache;
+ @Mock
+ private UserManager mUserManager;
+ @Mock
+ private Context mContext;
+ @Mock
+ private AllAppsStore mAllAppsStore;
+ @Mock
+ private PackageManager mPackageManager;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ when(mUserCache.getUserProfiles())
+ .thenReturn(Arrays.asList(MAIN_HANDLE, PRIVATE_HANDLE));
+ when(mUserCache.getUserInfo(Process.myUserHandle())).thenReturn(MAIN_ICON_INFO);
+ when(mUserCache.getUserInfo(PRIVATE_HANDLE)).thenReturn(PRIVATE_ICON_INFO);
+ when(mActivityAllAppsContainerView.getContext()).thenReturn(mContext);
+ when(mActivityAllAppsContainerView.getAppsStore()).thenReturn(mAllAppsStore);
+ when(mContext.getPackageManager()).thenReturn(mPackageManager);
+ when(mPackageManager.resolveActivity(any(), any())).thenReturn(new ResolveInfo());
+ mPrivateProfileManager = new PrivateProfileManager(mUserManager,
+ mActivityAllAppsContainerView, mStatsLogManager, mUserCache);
+ }
+
+ @Test
+ public void lockPrivateProfile_requestsQuietModeAsTrue() throws Exception {
+ when(mAllAppsStore.hasModelFlag(FLAG_PRIVATE_PROFILE_QUIET_MODE_ENABLED)).thenReturn(false);
+
+ mPrivateProfileManager.lockPrivateProfile();
+
+ awaitTasksCompleted();
+ Mockito.verify(mUserManager).requestQuietModeEnabled(true, PRIVATE_HANDLE);
+ }
+
+ @Test
+ public void unlockPrivateProfile_requestsQuietModeAsFalse() throws Exception {
+ when(mAllAppsStore.hasModelFlag(FLAG_PRIVATE_PROFILE_QUIET_MODE_ENABLED)).thenReturn(true);
+
+ mPrivateProfileManager.unlockPrivateProfile();
+
+ awaitTasksCompleted();
+ Mockito.verify(mUserManager).requestQuietModeEnabled(false, PRIVATE_HANDLE);
+ }
+
+ @Test
+ public void quietModeFlagPresent_privateSpaceIsResetToDisabled() {
+ PrivateProfileManager privateProfileManager = spy(mPrivateProfileManager);
+ doNothing().when(privateProfileManager).resetPrivateSpaceDecorator(anyInt());
+ when(mAllAppsStore.hasModelFlag(FLAG_PRIVATE_PROFILE_QUIET_MODE_ENABLED))
+ .thenReturn(false, true);
+
+ // In first call the state should be disabled.
+ privateProfileManager.reset();
+ assertEquals(STATE_ENABLED, privateProfileManager.getCurrentState());
+
+ // In the next call the state should be disabled.
+ privateProfileManager.reset();
+ assertEquals(STATE_DISABLED, privateProfileManager.getCurrentState());
+ }
+
+ @Test
+ public void openPrivateSpaceSettings_triggersSecurityAndPrivacyIntent() {
+ Intent expectedIntent = new Intent(SAFETY_CENTER_INTENT);
+ expectedIntent.putExtra(PS_SETTINGS_FRAGMENT_KEY, PS_SETTINGS_FRAGMENT_VALUE);
+ ArgumentCaptor<Intent> acIntent = ArgumentCaptor.forClass(Intent.class);
+
+ mPrivateProfileManager.openPrivateSpaceSettings();
+
+ Mockito.verify(mContext).startActivity(acIntent.capture());
+ Intent actualIntent = acIntent.getValue();
+ assertEquals(expectedIntent.getAction(), actualIntent.getAction());
+ assertEquals(expectedIntent.getStringExtra(PS_SETTINGS_FRAGMENT_KEY),
+ actualIntent.getStringExtra(PS_SETTINGS_FRAGMENT_KEY));
+ }
+
+ private static void awaitTasksCompleted() throws Exception {
+ UI_HELPER_EXECUTOR.submit(() -> null).get();
+ }
+}