Enterprice privacy: let the user know if admin enabled backups.

Bug: 73750212
Bug: 64012357
Test: make RunSettingsGoogleRoboTests

Change-Id: I586eaccaebb89a8b3e5b4014b3d6427ab2eb15a9
This commit is contained in:
Lenka Trochtova
2018-03-23 16:08:28 +01:00
parent a62df616f9
commit a112226db2
8 changed files with 134 additions and 1 deletions

View File

@@ -83,6 +83,9 @@
<Preference android:key="ca_certs_managed_profile" <Preference android:key="ca_certs_managed_profile"
android:title="@string/enterprise_privacy_ca_certs_work" android:title="@string/enterprise_privacy_ca_certs_work"
android:selectable="false"/> android:selectable="false"/>
<Preference android:key="backups_enabled"
android:title="@string/enterprise_privacy_backups_enabled"
android:selectable="false"/>
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:key="device_access_category" <PreferenceCategory android:key="device_access_category"

View File

@@ -0,0 +1,37 @@
/*
* Copyright (C) 2018 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.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
public class BackupsEnabledPreferenceController extends BasePreferenceController {
private static final String KEY_BACKUPS_ENABLED = "backups_enabled";
private final EnterprisePrivacyFeatureProvider mFeatureProvider;
public BackupsEnabledPreferenceController(Context context) {
super(context, KEY_BACKUPS_ENABLED);
mFeatureProvider = FeatureFactory.getFactory(context)
.getEnterprisePrivacyFeatureProvider(context);
}
@Override
public int getAvailabilityStatus() {
return mFeatureProvider.areBackupsMandatory() ? AVAILABLE : DISABLED_FOR_USER;
}
}

View File

@@ -124,4 +124,9 @@ public interface EnterprisePrivacyFeatureProvider {
* profile (if any). * profile (if any).
*/ */
int getNumberOfActiveDeviceAdminsForCurrentUserAndManagedProfile(); int getNumberOfActiveDeviceAdminsForCurrentUserAndManagedProfile();
/*
* Returns whether backups are mandatory.
*/
boolean areBackupsMandatory();
} }

View File

@@ -235,6 +235,11 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
return activeAdmins; return activeAdmins;
} }
@Override
public boolean areBackupsMandatory() {
return null != mDpm.getMandatoryBackupTransport();
}
protected static class EnterprisePrivacySpan extends ClickableSpan { protected static class EnterprisePrivacySpan extends ClickableSpan {
private final Context mContext; private final Context mContext;

View File

@@ -82,6 +82,7 @@ public class EnterprisePrivacySettings extends DashboardFragment {
exposureChangesCategoryControllers.add(new CaCertsCurrentUserPreferenceController(context)); exposureChangesCategoryControllers.add(new CaCertsCurrentUserPreferenceController(context));
exposureChangesCategoryControllers.add(new CaCertsManagedProfilePreferenceController( exposureChangesCategoryControllers.add(new CaCertsManagedProfilePreferenceController(
context)); context));
exposureChangesCategoryControllers.add(new BackupsEnabledPreferenceController(context));
controllers.addAll(exposureChangesCategoryControllers); controllers.addAll(exposureChangesCategoryControllers);
controllers.add(new PreferenceCategoryController(context, "exposure_changes_category") controllers.add(new PreferenceCategoryController(context, "exposure_changes_category")
.setChildren(exposureChangesCategoryControllers)); .setChildren(exposureChangesCategoryControllers));

View File

@@ -0,0 +1,71 @@
/*
* Copyright (C) 2018 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.content.Context;
import android.support.v7.preference.Preference;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
@RunWith(SettingsRobolectricTestRunner.class)
public class BackupsEnabledPreferenceControllerTest {
private static final String KEY_BACKUPS_ENABLED = "backups_enabled";
private Context mContext;
private FakeFeatureFactory mFeatureFactory;
private BackupsEnabledPreferenceController mController;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
mFeatureFactory = FakeFeatureFactory.setupForTest();
mController = new BackupsEnabledPreferenceController(mContext);
}
@Test
public void testIsAvailable() {
when(mFeatureFactory.enterprisePrivacyFeatureProvider.areBackupsMandatory())
.thenReturn(false);
assertThat(mController.isAvailable()).isFalse();
when(mFeatureFactory.enterprisePrivacyFeatureProvider.areBackupsMandatory())
.thenReturn(true);
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(KEY_BACKUPS_ENABLED);
}
}

View File

@@ -347,6 +347,15 @@ public class EnterprisePrivacyFeatureProviderImplTest {
.isEqualTo(3); .isEqualTo(3);
} }
@Test
public void testAreBackupsMandatory() {
assertThat(mProvider.areBackupsMandatory()).isFalse();
ComponentName transportComponent = new ComponentName("test", "test");
when(mDevicePolicyManager.getMandatoryBackupTransport())
.thenReturn(transportComponent);
assertThat(mProvider.areBackupsMandatory()).isTrue();
}
private void resetAndInitializePackageManagerWrapper() { private void resetAndInitializePackageManagerWrapper() {
reset(mPackageManagerWrapper); reset(mPackageManagerWrapper);
when(mPackageManagerWrapper.hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN)) when(mPackageManagerWrapper.hasSystemFeature(PackageManager.FEATURE_DEVICE_ADMIN))

View File

@@ -98,7 +98,7 @@ public class EnterprisePrivacySettingsTest {
private void verifyPreferenceControllers(List<AbstractPreferenceController> controllers) { private void verifyPreferenceControllers(List<AbstractPreferenceController> controllers) {
assertThat(controllers).isNotNull(); assertThat(controllers).isNotNull();
assertThat(controllers.size()).isEqualTo(17); assertThat(controllers.size()).isEqualTo(18);
int position = 0; int position = 0;
assertThat(controllers.get(position++)).isInstanceOf(NetworkLogsPreferenceController.class); assertThat(controllers.get(position++)).isInstanceOf(NetworkLogsPreferenceController.class);
assertThat(controllers.get(position++)).isInstanceOf(BugReportsPreferenceController.class); assertThat(controllers.get(position++)).isInstanceOf(BugReportsPreferenceController.class);
@@ -125,6 +125,8 @@ public class EnterprisePrivacySettingsTest {
CaCertsCurrentUserPreferenceController.class); CaCertsCurrentUserPreferenceController.class);
assertThat(controllers.get(position++)).isInstanceOf( assertThat(controllers.get(position++)).isInstanceOf(
CaCertsManagedProfilePreferenceController.class); CaCertsManagedProfilePreferenceController.class);
assertThat(controllers.get(position++)).isInstanceOf(
BackupsEnabledPreferenceController.class);
assertThat(controllers.get(position++)).isInstanceOf( assertThat(controllers.get(position++)).isInstanceOf(
PreferenceCategoryController.class); PreferenceCategoryController.class);
assertThat(controllers.get(position++)).isInstanceOf( assertThat(controllers.get(position++)).isInstanceOf(