Fix enterprise settings bug
This fixes a bug where the picker is not using the correct user id and also ensures that the settings activity uses the correct user when launched. Test: flash & test w/ work profile Bug 322071206 Change-Id: I846593ff9ae320d9bb774e3e79ed9ef41f101ff5
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (C) 2024 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.settings.applications.credentials;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class CredentialsPickerActivityTest {
|
||||
|
||||
@Mock private UserManager mUserManager;
|
||||
|
||||
private Context mMockContext;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mMockContext = spy(ApplicationProvider.getApplicationContext());
|
||||
when(mMockContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInjectFragmentIntoIntent_normalProfile() {
|
||||
Intent intent = new Intent();
|
||||
CredentialsPickerActivity.injectFragmentIntoIntent(mMockContext, intent);
|
||||
assertThat(intent.getStringExtra(CredentialsPickerActivity.EXTRA_SHOW_FRAGMENT))
|
||||
.isEqualTo(DefaultCombinedPicker.class.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInjectFragmentIntoIntent_workProfile() {
|
||||
Intent intent = new Intent();
|
||||
|
||||
// Simulate managed / work profile.
|
||||
when(mUserManager.isManagedProfile(anyInt())).thenReturn(true);
|
||||
assertThat(DefaultCombinedPickerWork.isUserHandledByFragment(mUserManager, 10)).isTrue();
|
||||
|
||||
CredentialsPickerActivity.injectFragmentIntoIntent(mMockContext, intent);
|
||||
assertThat(intent.getStringExtra(CredentialsPickerActivity.EXTRA_SHOW_FRAGMENT))
|
||||
.isEqualTo(DefaultCombinedPickerWork.class.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInjectFragmentIntoIntent_privateProfile() {
|
||||
Intent intent = new Intent();
|
||||
|
||||
// Simulate private profile.
|
||||
UserHandle privateUser = new UserHandle(100);
|
||||
when(mUserManager.getUserInfo(100))
|
||||
.thenReturn(new UserInfo(100, "", "", 0, UserManager.USER_TYPE_PROFILE_PRIVATE));
|
||||
when(mUserManager.getUserProfiles()).thenReturn(Lists.newArrayList(privateUser));
|
||||
assertThat(DefaultCombinedPickerPrivate.isUserHandledByFragment(mUserManager)).isTrue();
|
||||
|
||||
CredentialsPickerActivity.injectFragmentIntoIntent(mMockContext, intent);
|
||||
assertThat(intent.getStringExtra(CredentialsPickerActivity.EXTRA_SHOW_FRAGMENT))
|
||||
.isEqualTo(DefaultCombinedPickerPrivate.class.getName());
|
||||
}
|
||||
}
|
@@ -87,16 +87,14 @@ public class DefaultCombinedPreferenceControllerTest {
|
||||
|
||||
@Test
|
||||
public void ensureSettingsActivityIntentCreatedSuccessfully() {
|
||||
DefaultCombinedPreferenceController dcpc =
|
||||
new DefaultCombinedPreferenceController(mContext);
|
||||
|
||||
// Ensure that the settings activity is only created if we haved the right combination
|
||||
// of package and class name.
|
||||
assertThat(dcpc.createSettingsActivityIntent(null, null)).isNull();
|
||||
assertThat(dcpc.createSettingsActivityIntent("", null)).isNull();
|
||||
assertThat(dcpc.createSettingsActivityIntent("", "")).isNull();
|
||||
assertThat(dcpc.createSettingsActivityIntent("com.test", "")).isNull();
|
||||
assertThat(dcpc.createSettingsActivityIntent("com.test", "ClassName")).isNotNull();
|
||||
assertThat(CombinedProviderInfo.createSettingsActivityIntent(null, null)).isNull();
|
||||
assertThat(CombinedProviderInfo.createSettingsActivityIntent("", null)).isNull();
|
||||
assertThat(CombinedProviderInfo.createSettingsActivityIntent("", "")).isNull();
|
||||
assertThat(CombinedProviderInfo.createSettingsActivityIntent("com.test", "")).isNull();
|
||||
assertThat(CombinedProviderInfo.createSettingsActivityIntent("com.test", "ClassName"))
|
||||
.isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -112,13 +110,13 @@ public class DefaultCombinedPreferenceControllerTest {
|
||||
|
||||
// Update the preference to use the provider and make sure the view
|
||||
// was updated.
|
||||
dcpc.updatePreferenceForProvider(ppp, "App Name", "Subtitle", appIcon, null);
|
||||
dcpc.updatePreferenceForProvider(ppp, "App Name", "Subtitle", appIcon, null, null);
|
||||
assertThat(ppp.getTitle().toString()).isEqualTo("App Name");
|
||||
assertThat(ppp.getSummary().toString()).isEqualTo("Subtitle");
|
||||
assertThat(ppp.getIcon()).isEqualTo(appIcon);
|
||||
|
||||
// Set the preference back to none and make sure the view was updated.
|
||||
dcpc.updatePreferenceForProvider(ppp, null, null, null, null);
|
||||
dcpc.updatePreferenceForProvider(ppp, null, null, null, null, null);
|
||||
assertThat(ppp.getTitle().toString()).isEqualTo("None");
|
||||
assertThat(ppp.getSummary()).isNull();
|
||||
assertThat(ppp.getIcon()).isNull();
|
||||
|
Reference in New Issue
Block a user