Merge "Pattern entry views should be consistent" into oc-mr1-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6366b9e..a154135 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -8878,8 +8878,12 @@
<string name="enterprise_privacy_always_on_vpn_work">Always-on VPN turned on in your work profile</string>
<!-- Label explaining that a global HTTP proxy was set by the admin. [CHAR LIMIT=NONE] -->
<string name="enterprise_privacy_global_http_proxy">Global HTTP proxy set</string>
- <!-- Label explaining that the admin installed trusted CA certificates. [CHAR LIMIT=NONE] -->
- <string name="enterprise_privacy_ca_certs">Trusted credentials</string>
+ <!-- Label explaining that the admin installed trusted CA certificates for the entire device. [CHAR LIMIT=NONE] -->
+ <string name="enterprise_privacy_ca_certs_device">Trusted credentials</string>
+ <!-- Label explaining that the admin installed trusted CA certificates in personal profile. [CHAR LIMIT=NONE] -->
+ <string name="enterprise_privacy_ca_certs_personal">Trusted credentials in your personal profile</string>
+ <!-- Label explaining that the admin installed trusted CA certificates in work profile. [CHAR LIMIT=NONE] -->
+ <string name="enterprise_privacy_ca_certs_work">Trusted credentials in your work profile</string>
<!-- Summary indicating the number of trusted CA certificates installed by the admin. The number shown is a minimum as there may be additional CA certificates we do not know about. [CHAR LIMIT=NONE] -->
<plurals name="enterprise_privacy_number_ca_certs">
<item quantity="one">Minimum <xliff:g id="count">%d</xliff:g> CA certificate</item>
diff --git a/res/xml/enterprise_privacy_settings.xml b/res/xml/enterprise_privacy_settings.xml
index 13f7b8e..ffdf630 100644
--- a/res/xml/enterprise_privacy_settings.xml
+++ b/res/xml/enterprise_privacy_settings.xml
@@ -77,8 +77,11 @@
<Preference android:key="global_http_proxy"
android:title="@string/enterprise_privacy_global_http_proxy"
android:selectable="false"/>
- <Preference android:key="ca_certs"
- android:title="@string/enterprise_privacy_ca_certs"
+ <Preference android:key="ca_certs_current_user"
+ android:title="@string/enterprise_privacy_ca_certs_personal"
+ android:selectable="false"/>
+ <Preference android:key="ca_certs_managed_profile"
+ android:title="@string/enterprise_privacy_ca_certs_work"
android:selectable="false"/>
</PreferenceCategory>
diff --git a/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java b/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java
new file mode 100644
index 0000000..30da907
--- /dev/null
+++ b/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java
@@ -0,0 +1,52 @@
+/*
+ * 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.support.annotation.VisibleForTesting;
+import android.support.v7.preference.Preference;
+
+import com.android.settings.R;
+
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+public class CaCertsCurrentUserPreferenceController extends CaCertsPreferenceControllerBase {
+
+ @VisibleForTesting
+ static final String CA_CERTS_CURRENT_USER = "ca_certs_current_user";
+
+ public CaCertsCurrentUserPreferenceController(Context context,
+ Lifecycle lifecycle) {
+ super(context, lifecycle);
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return CA_CERTS_CURRENT_USER;
+ }
+
+ @Override
+ public void updateState(Preference preference) {
+ super.updateState(preference);
+ preference.setTitle(mFeatureProvider.isInCompMode()
+ ? R.string.enterprise_privacy_ca_certs_personal
+ : R.string.enterprise_privacy_ca_certs_device);
+ }
+
+ @Override
+ protected int getNumberOfCaCerts() {
+ return mFeatureProvider.getNumberOfOwnerInstalledCaCertsForCurrentUser();
+ }
+}
diff --git a/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceController.java b/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceController.java
new file mode 100644
index 0000000..2b4e72d
--- /dev/null
+++ b/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceController.java
@@ -0,0 +1,41 @@
+/*
+ * 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.support.annotation.VisibleForTesting;
+
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+public class CaCertsManagedProfilePreferenceController extends CaCertsPreferenceControllerBase {
+
+ @VisibleForTesting
+ static final String CA_CERTS_MANAGED_PROFILE = "ca_certs_managed_profile";
+
+ public CaCertsManagedProfilePreferenceController(Context context,
+ Lifecycle lifecycle) {
+ super(context, lifecycle);
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return CA_CERTS_MANAGED_PROFILE;
+ }
+
+ @Override
+ protected int getNumberOfCaCerts() {
+ return mFeatureProvider.getNumberOfOwnerInstalledCaCertsForManagedProfile();
+ }
+}
diff --git a/src/com/android/settings/enterprise/CaCertsPreferenceController.java b/src/com/android/settings/enterprise/CaCertsPreferenceControllerBase.java
similarity index 67%
rename from src/com/android/settings/enterprise/CaCertsPreferenceController.java
rename to src/com/android/settings/enterprise/CaCertsPreferenceControllerBase.java
index 65c109c..8009caf 100644
--- a/src/com/android/settings/enterprise/CaCertsPreferenceController.java
+++ b/src/com/android/settings/enterprise/CaCertsPreferenceControllerBase.java
@@ -15,7 +15,6 @@
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;
@@ -23,12 +22,12 @@
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.lifecycle.Lifecycle;
-public class CaCertsPreferenceController extends DynamicAvailabilityPreferenceController {
+public abstract class CaCertsPreferenceControllerBase
+ extends DynamicAvailabilityPreferenceController {
- private static final String CA_CERTS = "ca_certs";
- private final EnterprisePrivacyFeatureProvider mFeatureProvider;
+ protected final EnterprisePrivacyFeatureProvider mFeatureProvider;
- public CaCertsPreferenceController(Context context, Lifecycle lifecycle) {
+ public CaCertsPreferenceControllerBase(Context context, Lifecycle lifecycle) {
super(context, lifecycle);
mFeatureProvider = FeatureFactory.getFactory(context)
.getEnterprisePrivacyFeatureProvider(context);
@@ -36,23 +35,17 @@
@Override
public void updateState(Preference preference) {
- final int certs =
- mFeatureProvider.getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile();
+ final int certs = getNumberOfCaCerts();
preference.setSummary(mContext.getResources().getQuantityString(
R.plurals.enterprise_privacy_number_ca_certs, certs, certs));
}
@Override
public boolean isAvailable() {
- final boolean available =
- mFeatureProvider.getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile()
- > 0;
+ final boolean available = getNumberOfCaCerts() > 0;
notifyOnAvailabilityUpdate(available);
return available;
}
- @Override
- public String getPreferenceKey() {
- return CA_CERTS;
- }
+ protected abstract int getNumberOfCaCerts();
}
diff --git a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java
index 391db83..048782e 100644
--- a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java
+++ b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProvider.java
@@ -109,9 +109,15 @@
/**
* Returns the number of CA certificates that the Device Owner or Profile Owner installed in
- * the current user and the user's managed profile (if any).
+ * current user.
*/
- int getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile();
+ int getNumberOfOwnerInstalledCaCertsForCurrentUser();
+
+ /**
+ * Returns the number of CA certificates that the Device Owner or Profile Owner installed in
+ * the current user's managed profile (if any).
+ */
+ int getNumberOfOwnerInstalledCaCertsForManagedProfile();
/**
* Returns the number of Device Admin apps active in the current user and the user's managed
diff --git a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java
index a5e2f3c..159f57b 100644
--- a/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java
+++ b/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImpl.java
@@ -200,20 +200,25 @@
}
@Override
- public int getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile() {
- int num = 0;
- List<String> certs = mDpm.getOwnerInstalledCaCerts(new UserHandle(MY_USER_ID));
- if (certs != null) {
- num += certs.size();
+ public int getNumberOfOwnerInstalledCaCertsForCurrentUser() {
+ final List<String> certs = mDpm.getOwnerInstalledCaCerts(new UserHandle(MY_USER_ID));
+ if (certs == null) {
+ return 0;
}
+ return certs.size();
+ }
+
+ @Override
+ public int getNumberOfOwnerInstalledCaCertsForManagedProfile() {
final int userId = getManagedProfileUserId();
- if (userId != UserHandle.USER_NULL) {
- certs = mDpm.getOwnerInstalledCaCerts(new UserHandle(userId));
- if (certs != null) {
- num += certs.size();
- }
+ if (userId == UserHandle.USER_NULL) {
+ return 0;
}
- return num;
+ final List<String> certs = mDpm.getOwnerInstalledCaCerts(new UserHandle(userId));
+ if (certs == null) {
+ return 0;
+ }
+ return certs.size();
}
@Override
diff --git a/src/com/android/settings/enterprise/EnterprisePrivacySettings.java b/src/com/android/settings/enterprise/EnterprisePrivacySettings.java
index faf271e..4caec30 100644
--- a/src/com/android/settings/enterprise/EnterprisePrivacySettings.java
+++ b/src/com/android/settings/enterprise/EnterprisePrivacySettings.java
@@ -82,7 +82,10 @@
exposureChangesCategoryControllers.add(new ImePreferenceController(context, lifecycle));
exposureChangesCategoryControllers.add(new GlobalHttpProxyPreferenceController(context,
lifecycle));
- exposureChangesCategoryControllers.add(new CaCertsPreferenceController(context, lifecycle));
+ exposureChangesCategoryControllers.add(new CaCertsCurrentUserPreferenceController(
+ context, lifecycle));
+ exposureChangesCategoryControllers.add(new CaCertsManagedProfilePreferenceController(
+ context, lifecycle));
controllers.addAll(exposureChangesCategoryControllers);
controllers.add(new ExposureChangesCategoryPreferenceController(context, lifecycle,
exposureChangesCategoryControllers, async));
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 0000000..35d78a5
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceControllerTest.java
@@ -0,0 +1,88 @@
+/*
+ * 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 static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.support.v7.preference.Preference;
+
+import com.android.settings.R;
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+
+/**
+ * Tests for {@link CaCertsCurrentUserPreferenceController}.
+ */
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public final class CaCertsCurrentUserPreferenceControllerTest extends
+ CaCertsPreferenceControllerTestBase {
+
+ private static final String CA_CERT_DEVICE = "CA certs";
+ private static final String CA_CERT_PERSONAL = "CA certs in personal profile";
+
+ @Before
+ public void mockGetString() {
+ when(mContext.getString(R.string.enterprise_privacy_ca_certs_device))
+ .thenReturn(CA_CERT_DEVICE);
+ when(mContext.getString(R.string.enterprise_privacy_ca_certs_personal))
+ .thenReturn(CA_CERT_PERSONAL);
+ }
+
+ @Test
+ public void testUpdateState_nonCompMode() {
+ assertUpdateState(false /* isCompMode */, CA_CERT_DEVICE);
+ }
+
+ @Test
+ public void testUpdateState_compMode() {
+ assertUpdateState(true /* isCompMode */, CA_CERT_PERSONAL);
+ }
+
+ @Override
+ void mockGetNumberOfCaCerts(int numOfCaCerts) {
+ when(mFeatureFactory.enterprisePrivacyFeatureProvider
+ .getNumberOfOwnerInstalledCaCertsForCurrentUser()).thenReturn(numOfCaCerts);
+ }
+
+ @Override
+ String getPreferenceKey() {
+ return CaCertsCurrentUserPreferenceController.CA_CERTS_CURRENT_USER;
+ }
+
+ @Override
+ CaCertsPreferenceControllerBase createController() {
+ return new CaCertsCurrentUserPreferenceController(mContext, null /* lifecycle */);
+ }
+
+ private void assertUpdateState(boolean isCompMode, String expectedTitle) {
+ final Preference preference = new Preference(mContext, null, 0, 0);
+
+ mockGetNumberOfCaCerts(2);
+ when(mFeatureFactory.enterprisePrivacyFeatureProvider.isInCompMode())
+ .thenReturn(isCompMode);
+ mController.updateState(preference);
+ assertThat(preference.getTitle()).isEqualTo(expectedTitle);
+ }
+}
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 0000000..41b7f45
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceControllerTest.java
@@ -0,0 +1,50 @@
+/*
+ * 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 static org.mockito.Mockito.when;
+
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+
+/**
+ * Tests for {@link CaCertsManagedProfilePreferenceController}.
+ */
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public final class CaCertsManagedProfilePreferenceControllerTest extends
+ CaCertsPreferenceControllerTestBase {
+
+ @Override
+ void mockGetNumberOfCaCerts(int numOfCaCerts) {
+ when(mFeatureFactory.enterprisePrivacyFeatureProvider
+ .getNumberOfOwnerInstalledCaCertsForManagedProfile()).thenReturn(numOfCaCerts);
+ }
+
+ @Override
+ String getPreferenceKey() {
+ return CaCertsManagedProfilePreferenceController.CA_CERTS_MANAGED_PROFILE;
+ }
+
+ @Override
+ CaCertsPreferenceControllerBase createController() {
+ return new CaCertsManagedProfilePreferenceController(mContext, null /* lifecycle */);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerBaseTest.java b/tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerBaseTest.java
new file mode 100644
index 0000000..37b903a
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerBaseTest.java
@@ -0,0 +1,66 @@
+/*
+ * 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 com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+
+import org.junit.runner.RunWith;
+import org.robolectric.annotation.Config;
+
+/**
+ * Tests for {@link CaCertsPreferenceControllerBase}.
+ */
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class CaCertsPreferenceControllerBaseTest extends CaCertsPreferenceControllerTestBase {
+ private static final String PREF_KEY = "pref";
+
+ private int mNumOfCaCerts;
+
+ void mockGetNumberOfCaCerts(int numOfCaCerts) {
+ mNumOfCaCerts = numOfCaCerts;
+ }
+
+ String getPreferenceKey() {
+ return PREF_KEY;
+ }
+
+ CaCertsPreferenceControllerBase createController() {
+ return new CaCertsPreferenceControllerBaseTestable(mContext);
+ }
+
+ private class CaCertsPreferenceControllerBaseTestable extends
+ CaCertsPreferenceControllerBase {
+
+ public CaCertsPreferenceControllerBaseTestable(Context context) {
+ super(context, null);
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return PREF_KEY;
+ }
+
+ @Override
+ protected int getNumberOfCaCerts() {
+ return mNumOfCaCerts;
+ }
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerTestBase.java
similarity index 62%
rename from tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerTest.java
rename to tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerTestBase.java
index 00b3573..c171fba 100644
--- a/tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/CaCertsPreferenceControllerTestBase.java
@@ -16,50 +16,42 @@
package com.android.settings.enterprise;
-import android.content.Context;
+import static com.google.common.truth.Truth.assertThat;
-import com.android.settings.R;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
import android.support.v7.preference.Preference;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.TestConfig;
+import com.android.settings.R;
import com.android.settings.core.PreferenceAvailabilityObserver;
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.verify;
-import static org.mockito.Mockito.when;
/**
- * Tests for {@link CaCertsPreferenceController}.
+ * Base test class for testing {@link CaCertsPreferenceControllerBase}'s subclass.
*/
-@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public final class CaCertsPreferenceControllerTest {
-
- private static final String KEY_CA_CERTS = "ca_certs";
+public abstract class CaCertsPreferenceControllerTestBase {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private Context mContext;
- private FakeFeatureFactory mFeatureFactory;
- @Mock private PreferenceAvailabilityObserver mObserver;
-
- private CaCertsPreferenceController mController;
+ protected Context mContext;
+ protected FakeFeatureFactory mFeatureFactory;
+ protected CaCertsPreferenceControllerBase mController;
+ @Mock
+ private PreferenceAvailabilityObserver mObserver;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
FakeFeatureFactory.setupForTest(mContext);
mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
- mController = new CaCertsPreferenceController(mContext, null /* lifecycle */);
+ mController = createController();
mController.setAvailabilityObserver(mObserver);
}
@@ -74,23 +66,20 @@
when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_number_ca_certs,
10, 10)).thenReturn("10 certs");
- when(mFeatureFactory.enterprisePrivacyFeatureProvider
- .getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile()).thenReturn(10);
+ mockGetNumberOfCaCerts(10);
mController.updateState(preference);
assertThat(preference.getSummary()).isEqualTo("10 certs");
}
@Test
public void testIsAvailable() {
- when(mFeatureFactory.enterprisePrivacyFeatureProvider
- .getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile()).thenReturn(0);
+ mockGetNumberOfCaCerts(0);
assertThat(mController.isAvailable()).isFalse();
- verify(mObserver).onPreferenceAvailabilityUpdated(KEY_CA_CERTS, false);
+ verify(mObserver).onPreferenceAvailabilityUpdated(getPreferenceKey(), false);
- when(mFeatureFactory.enterprisePrivacyFeatureProvider
- .getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile()).thenReturn(10);
+ mockGetNumberOfCaCerts(10);
assertThat(mController.isAvailable()).isTrue();
- verify(mObserver).onPreferenceAvailabilityUpdated(KEY_CA_CERTS, true);
+ verify(mObserver).onPreferenceAvailabilityUpdated(getPreferenceKey(), true);
}
@Test
@@ -101,6 +90,13 @@
@Test
public void testGetPreferenceKey() {
- assertThat(mController.getPreferenceKey()).isEqualTo(KEY_CA_CERTS);
+ assertThat(mController.getPreferenceKey()).isEqualTo(getPreferenceKey());
}
+
+ abstract void mockGetNumberOfCaCerts(int numOfCaCerts);
+
+ abstract String getPreferenceKey();
+
+ abstract CaCertsPreferenceControllerBase createController();
+
}
diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImplTest.java
index 474b278..899ff5c 100644
--- a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacyFeatureProviderImplTest.java
@@ -288,7 +288,7 @@
}
@Test
- public void testGetNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile() {
+ public void testGetNumberOfOwnerInstalledCaCertsForCurrent() {
final UserHandle userHandle = new UserHandle(UserHandle.USER_SYSTEM);
final UserHandle managedProfileUserHandle = new UserHandle(MANAGED_PROFILE_USER_ID);
final UserInfo managedProfile =
@@ -299,33 +299,44 @@
when(mDevicePolicyManager.getOwnerInstalledCaCerts(userHandle))
.thenReturn(null);
- assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile())
+ assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForCurrentUser())
.isEqualTo(0);
when(mDevicePolicyManager.getOwnerInstalledCaCerts(userHandle))
- .thenReturn(new ArrayList<String>());
- assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile())
+ .thenReturn(new ArrayList<>());
+ assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForCurrentUser())
.isEqualTo(0);
when(mDevicePolicyManager.getOwnerInstalledCaCerts(userHandle))
.thenReturn(Arrays.asList(new String[] {"ca1", "ca2"}));
- assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile())
+ assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForCurrentUser())
.isEqualTo(2);
+ }
+ @Test
+ public void testGetNumberOfOwnerInstalledCaCertsForManagedProfile() {
+ final UserHandle userHandle = new UserHandle(UserHandle.USER_SYSTEM);
+ final UserHandle managedProfileUserHandle = new UserHandle(MANAGED_PROFILE_USER_ID);
+ final UserInfo managedProfile =
+ new UserInfo(MANAGED_PROFILE_USER_ID, "", "", UserInfo.FLAG_MANAGED_PROFILE);
+
+ // Without a profile
+ when(mDevicePolicyManager.getOwnerInstalledCaCerts(managedProfileUserHandle))
+ .thenReturn(Arrays.asList(new String[] {"ca1", "ca2"}));
+ assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForManagedProfile())
+ .isEqualTo(0);
+
+ // With a profile
mProfiles.add(managedProfile);
when(mDevicePolicyManager.getOwnerInstalledCaCerts(managedProfileUserHandle))
.thenReturn(null);
- assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile())
- .isEqualTo(2);
- when(mDevicePolicyManager.getOwnerInstalledCaCerts(managedProfileUserHandle))
- .thenReturn(new ArrayList<String>());
- assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile())
- .isEqualTo(2);
+ assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForManagedProfile())
+ .isEqualTo(0);
+ when(mDevicePolicyManager.getOwnerInstalledCaCerts(userHandle))
+ .thenReturn(new ArrayList<>());
+ assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForManagedProfile())
+ .isEqualTo(0);
when(mDevicePolicyManager.getOwnerInstalledCaCerts(managedProfileUserHandle))
.thenReturn(Arrays.asList(new String[] {"ca1", "ca2"}));
- assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile())
- .isEqualTo(4);
-
- mProfiles.remove(managedProfile);
- assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForCurrentUserAndManagedProfile())
+ assertThat(mProvider.getNumberOfOwnerInstalledCaCertsForManagedProfile())
.isEqualTo(2);
}
diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java
index b668633..4da3289 100644
--- a/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/enterprise/EnterprisePrivacySettingsTest.java
@@ -128,7 +128,7 @@
private void verifyPreferenceControllers(List<AbstractPreferenceController> controllers)
throws Exception {
assertThat(controllers).isNotNull();
- assertThat(controllers.size()).isEqualTo(16);
+ assertThat(controllers.size()).isEqualTo(17);
int position = 0;
assertThat(controllers.get(position++)).isInstanceOf(NetworkLogsPreferenceController.class);
assertThat(controllers.get(position++)).isInstanceOf(BugReportsPreferenceController.class);
@@ -152,7 +152,9 @@
assertThat(controllers.get(position++)).isInstanceOf(
GlobalHttpProxyPreferenceController.class);
assertThat(controllers.get(position++)).isInstanceOf(
- CaCertsPreferenceController.class);
+ CaCertsCurrentUserPreferenceController.class);
+ assertThat(controllers.get(position++)).isInstanceOf(
+ CaCertsManagedProfilePreferenceController.class);
final AbstractPreferenceController exposureChangesCategoryController =
controllers.get(position);
final int exposureChangesCategoryControllerIndex = position;