From 732d69598578979669437a0c4db36478f93a275f Mon Sep 17 00:00:00 2001 From: Bartosz Fabianowski Date: Mon, 6 Mar 2017 18:42:25 +0100 Subject: [PATCH] Add CA certs Privacy Settings page This CL adds information about CA certs installed by Device Owner and/or Profile Owners to the Enterprise Privacy Setting page. Test: make RunSettingsRoboTests Bug: 32692748 Change-Id: I67bbe5af2b5b6326e4cd7224d0c6f17ab256dace --- res/values/strings.xml | 15 +++ res/xml/enterprise_privacy_settings.xml | 8 ++ .../CaCertsCurrentUserPreferenceController.java | 58 +++++++++++ .../CaCertsManagedProfilePreferenceController.java | 57 ++++++++++ .../enterprise/DevicePolicyManagerWrapper.java | 11 ++ .../enterprise/DevicePolicyManagerWrapperImpl.java | 8 ++ .../EnterprisePrivacyFeatureProvider.java | 12 +++ .../EnterprisePrivacyFeatureProviderImpl.java | 16 +++ .../enterprise/EnterprisePrivacySettings.java | 2 + ...CaCertsCurrentUserPreferenceControllerTest.java | 116 +++++++++++++++++++++ ...ertsManagedProfilePreferenceControllerTest.java | 96 +++++++++++++++++ .../EnterprisePrivacyFeatureProviderImplTest.java | 38 ++++++- .../enterprise/EnterprisePrivacySettingsTest.java | 13 ++- 13 files changed, 445 insertions(+), 5 deletions(-) create mode 100644 src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java create mode 100644 src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceController.java create mode 100644 tests/robotests/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceControllerTest.java create mode 100644 tests/robotests/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceControllerTest.java diff --git a/res/values/strings.xml b/res/values/strings.xml index c9a1bf70b4..7716a4efc0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -8180,6 +8180,21 @@ Always-on VPN turned on in your work profile Global HTTP proxy set + + + %d trusted CA certificate installed + %d trusted CA certificates installed + + + + %d trusted CA certificate installed in the personal profile + %d trusted CA certificates installed in the personal profile + + + + %d trusted CA certificate installed in the work profile + %d trusted CA certificates installed in the work profile + Admin can lock device and reset password diff --git a/res/xml/enterprise_privacy_settings.xml b/res/xml/enterprise_privacy_settings.xml index 992c753761..436c227123 100644 --- a/res/xml/enterprise_privacy_settings.xml +++ b/res/xml/enterprise_privacy_settings.xml @@ -97,6 +97,14 @@ android:title="@string/enterprise_privacy_global_http_proxy" settings:allowDividerBelow="true" settings:multiLine="true"/> + + diff --git a/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java b/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java new file mode 100644 index 0000000000..94b944a653 --- /dev/null +++ b/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2017 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.enterprise; + +import android.content.Context; +import android.content.res.Resources; +import android.support.v7.preference.Preference; + +import com.android.settings.R; +import com.android.settings.core.PreferenceController; +import com.android.settings.overlay.FeatureFactory; + +public class CaCertsCurrentUserPreferenceController extends PreferenceController { + + private static final String CA_CERTS_CURRENT_USER = "ca_certs_current_user"; + private final EnterprisePrivacyFeatureProvider mFeatureProvider; + + public CaCertsCurrentUserPreferenceController(Context context) { + super(context); + mFeatureProvider = FeatureFactory.getFactory(context) + .getEnterprisePrivacyFeatureProvider(context); + } + + @Override + public void updateState(Preference preference) { + final int certs = mFeatureProvider.getNumberOfOwnerInstalledCaCertsInCurrentUser(); + if (certs == 0) { + preference.setVisible(false); + return; + } + preference.setTitle(mContext.getResources().getQuantityString( + mFeatureProvider.isInCompMode() ? R.plurals.enterprise_privacy_ca_certs_personal + : R.plurals.enterprise_privacy_ca_certs_user, certs, certs)); + preference.setVisible(true); + } + + @Override + public boolean isAvailable() { + return true; + } + + @Override + public String getPreferenceKey() { + return CA_CERTS_CURRENT_USER; + } +} diff --git a/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceController.java b/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceController.java new file mode 100644 index 0000000000..8de5e6024c --- /dev/null +++ b/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceController.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2017 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.enterprise; + +import android.content.Context; +import android.content.res.Resources; +import android.support.v7.preference.Preference; + +import com.android.settings.R; +import com.android.settings.core.PreferenceController; +import com.android.settings.overlay.FeatureFactory; + +public class CaCertsManagedProfilePreferenceController extends PreferenceController { + + private static final String KEY_CA_CERTS_MANAGED_PROFILE = "ca_certs_managed_profile"; + private final EnterprisePrivacyFeatureProvider mFeatureProvider; + + public CaCertsManagedProfilePreferenceController(Context context) { + super(context); + mFeatureProvider = FeatureFactory.getFactory(context) + .getEnterprisePrivacyFeatureProvider(context); + } + + @Override + public void updateState(Preference preference) { + final int certs = mFeatureProvider.getNumberOfOwnerInstalledCaCertsInManagedProfile(); + if (certs == 0) { + preference.setVisible(false); + return; + } + preference.setTitle(mContext.getResources().getQuantityString( + R.plurals.enterprise_privacy_ca_certs_work, certs, certs)); + preference.setVisible(true); + } + + @Override + public boolean isAvailable() { + return true; + } + + @Override + public String getPreferenceKey() { + return KEY_CA_CERTS_MANAGED_PROFILE; + } +} diff --git a/src/com/android/settings/enterprise/DevicePolicyManagerWrapper.java b/src/com/android/settings/enterprise/DevicePolicyManagerWrapper.java index 29f315c0dd..7fae8bb7e9 100644 --- a/src/com/android/settings/enterprise/DevicePolicyManagerWrapper.java +++ b/src/com/android/settings/enterprise/DevicePolicyManagerWrapper.java @@ -16,10 +16,13 @@ package com.android.settings.enterprise; +import android.annotation.NonNull; import android.content.ComponentName; import android.os.UserHandle; import android.support.annotation.Nullable; +import java.util.List; + /** * This interface replicates a subset of the android.app.admin.DevicePolicyManager (DPM). The * interface exists so that we can use a thin wrapper around the DPM in production code and a mock @@ -97,4 +100,12 @@ public interface DevicePolicyManagerWrapper { * @see android.app.admin.DevicePolicyManager#isCurrentInputMethodSetByOwner */ boolean isCurrentInputMethodSetByOwner(); + + + /** + * Calls {@code DevicePolicyManager.getOwnerInstalledCaCerts()}. + * + * @see android.app.admin.DevicePolicyManager#getOwnerInstalledCaCerts + */ + List getOwnerInstalledCaCerts(@NonNull UserHandle user); } diff --git a/src/com/android/settings/enterprise/DevicePolicyManagerWrapperImpl.java b/src/com/android/settings/enterprise/DevicePolicyManagerWrapperImpl.java index 0fdcb9c47d..76264b4c44 100644 --- a/src/com/android/settings/enterprise/DevicePolicyManagerWrapperImpl.java +++ b/src/com/android/settings/enterprise/DevicePolicyManagerWrapperImpl.java @@ -16,11 +16,14 @@ package com.android.settings.enterprise; +import android.annotation.NonNull; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.os.UserHandle; import android.support.annotation.Nullable; +import java.util.List; + public class DevicePolicyManagerWrapperImpl implements DevicePolicyManagerWrapper { private final DevicePolicyManager mDpm; @@ -78,4 +81,9 @@ public class DevicePolicyManagerWrapperImpl implements DevicePolicyManagerWrappe public boolean isCurrentInputMethodSetByOwner() { return mDpm.isCurrentInputMethodSetByOwner(); } + + @Override + public List getOwnerInstalledCaCerts(@NonNull UserHandle user) { + return mDpm.getOwnerInstalledCaCerts(user); + } } diff --git a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java index 30b74f584d..792c3acc7b 100644 --- a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java +++ b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java @@ -88,4 +88,16 @@ public interface EnterprisePrivacyFeatureProvider { * Owner or Profile Owner in that user. Otherwise, returns {@code null}. */ String getImeLabelIfOwnerSet(); + + /** + * Returns the number of CA certificates that the Device Owner or Profile Owner installed in + * the current user. + */ + int getNumberOfOwnerInstalledCaCertsInCurrentUser(); + + /** + * Returns the number of CA certificates that the Profile Owner installed in the current user's + * managed profile (if any). + */ + int getNumberOfOwnerInstalledCaCertsInManagedProfile(); } diff --git a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java index 49d87a523c..3b8251cb83 100644 --- a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java +++ b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java @@ -178,6 +178,22 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe } } + @Override + public int getNumberOfOwnerInstalledCaCertsInCurrentUser() { + final List certs = mDpm.getOwnerInstalledCaCerts(new UserHandle(MY_USER_ID)); + return certs != null ? certs.size() : 0; + } + + @Override + public int getNumberOfOwnerInstalledCaCertsInManagedProfile() { + final int userId = getManagedProfileUserId(); + if (userId == UserHandle.USER_NULL) { + return 0; + } + final List certs = mDpm.getOwnerInstalledCaCerts(new UserHandle(userId)); + return certs != null ? certs.size() : 0; + } + protected static class EnterprisePrivacySpan extends ClickableSpan { private final Context mContext; diff --git a/src/com/android/settings/enterprise/EnterprisePrivacySettings.java b/src/com/android/settings/enterprise/EnterprisePrivacySettings.java index 3929bbd9a4..140a05c611 100644 --- a/src/com/android/settings/enterprise/EnterprisePrivacySettings.java +++ b/src/com/android/settings/enterprise/EnterprisePrivacySettings.java @@ -63,6 +63,8 @@ public class EnterprisePrivacySettings extends DashboardFragment { controllers.add(new AlwaysOnVpnPrimaryUserPreferenceController(context)); controllers.add(new AlwaysOnVpnManagedProfilePreferenceController(context)); controllers.add(new GlobalHttpProxyPreferenceController(context)); + controllers.add(new CaCertsCurrentUserPreferenceController(context)); + controllers.add(new CaCertsManagedProfilePreferenceController(context)); controllers.add(new FailedPasswordWipePrimaryUserPreferenceController(context)); controllers.add(new FailedPasswordWipeManagedProfilePreferenceController(context)); controllers.add(new ImePreferenceController(context)); diff --git a/tests/robotests/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceControllerTest.java new file mode 100644 index 0000000000..364b53875f --- /dev/null +++ b/tests/robotests/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceControllerTest.java @@ -0,0 +1,116 @@ +/* + * Copyright (C) 2017 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.enterprise; + +import android.content.Context; +import android.content.res.Resources; +import com.android.settings.R; +import android.support.v7.preference.Preference; + +import com.android.settings.SettingsRobolectricTestRunner; +import com.android.settings.TestConfig; +import com.android.settings.testutils.FakeFeatureFactory; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Answers; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.annotation.Config; + +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.when; + +/** + * Tests for {@link CaCertsCurrentUserPreferenceController}. + */ +@RunWith(SettingsRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public final class CaCertsCurrentUserPreferenceControllerTest { + + private final String INSTALLED_CERTS_USER = "10 certs installed"; + private final String INSTALLED_CERTS_PERSONAL = "10 certs installed in personal profile"; + + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + private Context mContext; + private FakeFeatureFactory mFeatureFactory; + + private CaCertsCurrentUserPreferenceController mController; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + FakeFeatureFactory.setupForTest(mContext); + mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext); + mController = new CaCertsCurrentUserPreferenceController(mContext); + when(mContext.getResources().getQuantityString( + R.plurals.enterprise_privacy_ca_certs_user, 10, 10)) + .thenReturn(INSTALLED_CERTS_USER); + when(mContext.getResources().getQuantityString( + R.plurals.enterprise_privacy_ca_certs_personal, 10, 10)) + .thenReturn(INSTALLED_CERTS_PERSONAL); + } + + @Test + public void testUpdateState() { + final Preference preference = new Preference(mContext, null, 0, 0); + preference.setVisible(true); + + when(mFeatureFactory.enterprisePrivacyFeatureProvider.isInCompMode()).thenReturn(false); + + when(mFeatureFactory.enterprisePrivacyFeatureProvider + .getNumberOfOwnerInstalledCaCertsInCurrentUser()).thenReturn(0); + mController.updateState(preference); + assertThat(preference.isVisible()).isFalse(); + + when(mFeatureFactory.enterprisePrivacyFeatureProvider + .getNumberOfOwnerInstalledCaCertsInCurrentUser()).thenReturn(10); + mController.updateState(preference); + assertThat(preference.isVisible()).isTrue(); + assertThat(preference.getTitle()).isEqualTo(INSTALLED_CERTS_USER); + + when(mFeatureFactory.enterprisePrivacyFeatureProvider.isInCompMode()).thenReturn(true); + + when(mFeatureFactory.enterprisePrivacyFeatureProvider + .getNumberOfOwnerInstalledCaCertsInCurrentUser()).thenReturn(0); + mController.updateState(preference); + assertThat(preference.isVisible()).isFalse(); + + when(mFeatureFactory.enterprisePrivacyFeatureProvider + .getNumberOfOwnerInstalledCaCertsInCurrentUser()).thenReturn(10); + mController.updateState(preference); + assertThat(preference.isVisible()).isTrue(); + assertThat(preference.getTitle()).isEqualTo(INSTALLED_CERTS_PERSONAL); + } + + @Test + public void testIsAvailable() { + assertThat(mController.isAvailable()).isTrue(); + } + + @Test + public void testHandlePreferenceTreeClick() { + assertThat(mController.handlePreferenceTreeClick(new Preference(mContext, null, 0, 0))) + .isFalse(); + } + + @Test + public void testGetPreferenceKey() { + assertThat(mController.getPreferenceKey()).isEqualTo("ca_certs_current_user"); + } +} diff --git a/tests/robotests/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceControllerTest.java new file mode 100644 index 0000000000..ff741e186a --- /dev/null +++ b/tests/robotests/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceControllerTest.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2017 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.enterprise; + +import android.content.Context; +import android.content.res.Resources; +import com.android.settings.R; +import android.support.v7.preference.Preference; + +import com.android.settings.SettingsRobolectricTestRunner; +import com.android.settings.TestConfig; +import com.android.settings.testutils.FakeFeatureFactory; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Answers; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.annotation.Config; + +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.when; + +/** + * Tests for {@link CaCertsManagedProfilePreferenceController}. + */ +@RunWith(SettingsRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public final class CaCertsManagedProfilePreferenceControllerTest { + + private final String INSTALLED_CERTS = "10 certs installed"; + + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + private Context mContext; + private FakeFeatureFactory mFeatureFactory; + + private CaCertsManagedProfilePreferenceController mController; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + FakeFeatureFactory.setupForTest(mContext); + mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext); + mController = new CaCertsManagedProfilePreferenceController(mContext); + when(mContext.getResources().getQuantityString( + R.plurals.enterprise_privacy_ca_certs_work, 10, 10)).thenReturn(INSTALLED_CERTS); + } + + @Test + public void testUpdateState() { + final Preference preference = new Preference(mContext, null, 0, 0); + preference.setVisible(true); + + when(mFeatureFactory.enterprisePrivacyFeatureProvider + .getNumberOfOwnerInstalledCaCertsInManagedProfile()).thenReturn(0); + mController.updateState(preference); + assertThat(preference.isVisible()).isFalse(); + + when(mFeatureFactory.enterprisePrivacyFeatureProvider + .getNumberOfOwnerInstalledCaCertsInManagedProfile()).thenReturn(10); + mController.updateState(preference); + assertThat(preference.isVisible()).isTrue(); + assertThat(preference.getTitle()).isEqualTo(INSTALLED_CERTS); + } + + @Test + public void testIsAvailable() { + assertThat(mController.isAvailable()).isTrue(); + } + + @Test + public void testHandlePreferenceTreeClick() { + assertThat(mController.handlePreferenceTreeClick(new Preference(mContext, null, 0, 0))) + .isFalse(); + } + + @Test + public void testGetPreferenceKey() { + assertThat(mController.getPreferenceKey()).isEqualTo("ca_certs_managed_profile"); + } +} diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImplTest.java index da9569ece2..38d9221f18 100644 --- a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImplTest.java @@ -43,6 +43,7 @@ import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowApplication; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; @@ -255,11 +256,46 @@ public final class EnterprisePrivacyFeatureProviderImplTest { assertThat(mProvider.getImeLabelIfOwnerSet()).isEqualTo(IME_PACKAGE_LABEL); } + @Test + public void testGetNumberOfOwnerInstalledCaCertsInCurrentUser() { + final UserHandle userHandle = new UserHandle(UserHandle.USER_SYSTEM); + + when(mDevicePolicyManager.getOwnerInstalledCaCerts(userHandle)) + .thenReturn(null); + assertThat(mProvider.getNumberOfOwnerInstalledCaCertsInCurrentUser()).isEqualTo(0); + when(mDevicePolicyManager.getOwnerInstalledCaCerts(userHandle)) + .thenReturn(new ArrayList()); + assertThat(mProvider.getNumberOfOwnerInstalledCaCertsInCurrentUser()).isEqualTo(0); + when(mDevicePolicyManager.getOwnerInstalledCaCerts(userHandle)) + .thenReturn(Arrays.asList(new String[] {"ca1", "ca2"})); + assertThat(mProvider.getNumberOfOwnerInstalledCaCertsInCurrentUser()).isEqualTo(2); + } + + @Test + public void testGetNumberOfOwnerInstalledCaCertsInManagedProfile() { + final UserHandle userHandle = new UserHandle(MANAGED_PROFILE_USER_ID); + final UserInfo managedProfile = + new UserInfo(MANAGED_PROFILE_USER_ID, "", "", UserInfo.FLAG_MANAGED_PROFILE); + + mProfiles.add(managedProfile); + when(mDevicePolicyManager.getOwnerInstalledCaCerts(userHandle)) + .thenReturn(null); + assertThat(mProvider.getNumberOfOwnerInstalledCaCertsInManagedProfile()).isEqualTo(0); + when(mDevicePolicyManager.getOwnerInstalledCaCerts(userHandle)) + .thenReturn(new ArrayList()); + assertThat(mProvider.getNumberOfOwnerInstalledCaCertsInManagedProfile()).isEqualTo(0); + when(mDevicePolicyManager.getOwnerInstalledCaCerts(userHandle)) + .thenReturn(Arrays.asList(new String[] {"ca1", "ca2"})); + assertThat(mProvider.getNumberOfOwnerInstalledCaCertsInManagedProfile()).isEqualTo(2); + + mProfiles.remove(managedProfile); + assertThat(mProvider.getNumberOfOwnerInstalledCaCertsInManagedProfile()).isEqualTo(0); + } + private void resetAndInitializePackageManagerWrapper() { reset(mPackageManagerWrapper); when(mPackageManagerWrapper.hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN)) .thenReturn(true); when(mPackageManagerWrapper.getPackageManager()).thenReturn(mPackageManager); - } } diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java index f74c63a195..2690198934 100644 --- a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java +++ b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java @@ -73,7 +73,7 @@ public final class EnterprisePrivacySettingsTest { final List controllers = mSettings.getPreferenceControllers( ShadowApplication.getInstance().getApplicationContext()); assertThat(controllers).isNotNull(); - assertThat(controllers.size()).isEqualTo(15); + assertThat(controllers.size()).isEqualTo(17); assertThat(controllers.get(0)).isInstanceOf(InstalledPackagesPreferenceController.class); assertThat(controllers.get(1)).isInstanceOf(NetworkLogsPreferenceController.class); assertThat(controllers.get(2)).isInstanceOf(BugReportsPreferenceController.class); @@ -93,8 +93,13 @@ public final class EnterprisePrivacySettingsTest { assertThat(controllers.get(10)).isInstanceOf( AlwaysOnVpnManagedProfilePreferenceController.class); assertThat(controllers.get(11)).isInstanceOf(GlobalHttpProxyPreferenceController.class); - assertThat(controllers.get(12)).isInstanceOf(FailedPasswordWipePrimaryUserPreferenceController.class); - assertThat(controllers.get(13)).isInstanceOf(FailedPasswordWipeManagedProfilePreferenceController.class); - assertThat(controllers.get(14)).isInstanceOf(ImePreferenceController.class); + assertThat(controllers.get(12)).isInstanceOf(CaCertsCurrentUserPreferenceController.class); + assertThat(controllers.get(13)).isInstanceOf( + CaCertsManagedProfilePreferenceController.class); + assertThat(controllers.get(14)).isInstanceOf( + FailedPasswordWipePrimaryUserPreferenceController.class); + assertThat(controllers.get(15)).isInstanceOf( + FailedPasswordWipeManagedProfilePreferenceController.class); + assertThat(controllers.get(16)).isInstanceOf(ImePreferenceController.class); } } -- 2.11.0