This CL updates the DO Disclosures page (aka "Enterprise Privacy")
to make items that shows admin granted permissions actionable. Item click will result in opening the list of apps for a permission. Test: make RunSettingsRoboTests Bug: 32692748 Change-Id: I5f2536b116998810857e379f48a26a1c40055590
This commit is contained in:
@@ -24,7 +24,7 @@ public class AdminGrantedCameraPermissionPreferenceController extends
|
||||
= "enterprise_privacy_number_camera_access_packages";
|
||||
|
||||
public AdminGrantedCameraPermissionPreferenceController(Context context) {
|
||||
super(context, new String[] {Manifest.permission.CAMERA});
|
||||
super(context, new String[] {Manifest.permission.CAMERA}, Manifest.permission_group.CAMERA);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -25,7 +25,7 @@ public class AdminGrantedLocationPermissionsPreferenceController extends
|
||||
|
||||
public AdminGrantedLocationPermissionsPreferenceController(Context context) {
|
||||
super(context, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,
|
||||
Manifest.permission.ACCESS_FINE_LOCATION});
|
||||
Manifest.permission.ACCESS_FINE_LOCATION}, Manifest.permission_group.LOCATION);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -24,7 +24,8 @@ public class AdminGrantedMicrophonePermissionPreferenceController extends
|
||||
= "enterprise_privacy_number_microphone_access_packages";
|
||||
|
||||
public AdminGrantedMicrophonePermissionPreferenceController(Context context) {
|
||||
super(context, new String[] {Manifest.permission.RECORD_AUDIO});
|
||||
super(context, new String[] {Manifest.permission.RECORD_AUDIO},
|
||||
Manifest.permission_group.MICROPHONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -15,7 +15,7 @@
|
||||
package com.android.settings.enterprise;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.content.Intent;
|
||||
import android.support.v7.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
@@ -26,11 +26,15 @@ import com.android.settings.overlay.FeatureFactory;
|
||||
public abstract class AdminGrantedPermissionsPreferenceControllerBase extends PreferenceController {
|
||||
|
||||
private final String[] mPermissions;
|
||||
private final String mPermissionGroup;
|
||||
private final ApplicationFeatureProvider mFeatureProvider;
|
||||
|
||||
public AdminGrantedPermissionsPreferenceControllerBase(Context context, String[] permissions) {
|
||||
public AdminGrantedPermissionsPreferenceControllerBase(Context context,
|
||||
String[] permissions,
|
||||
String permissionGroup) {
|
||||
super(context);
|
||||
mPermissions = permissions;
|
||||
mPermissionGroup = permissionGroup;
|
||||
mFeatureProvider = FeatureFactory.getFactory(context)
|
||||
.getApplicationFeatureProvider(context);
|
||||
}
|
||||
@@ -44,7 +48,7 @@ public abstract class AdminGrantedPermissionsPreferenceControllerBase extends Pr
|
||||
} else {
|
||||
preference.setVisible(true);
|
||||
preference.setSummary(mContext.getResources().getQuantityString(
|
||||
R.plurals.enterprise_privacy_number_packages, num, num));
|
||||
R.plurals.enterprise_privacy_number_packages_actionable, num, num));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -53,4 +57,15 @@ public abstract class AdminGrantedPermissionsPreferenceControllerBase extends Pr
|
||||
public boolean isAvailable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handlePreferenceTreeClick(Preference preference) {
|
||||
if (!getPreferenceKey().equals(preference.getKey())) {
|
||||
return false;
|
||||
}
|
||||
final Intent intent = new Intent(Intent.ACTION_MANAGE_PERMISSION_APPS)
|
||||
.putExtra(Intent.EXTRA_PERMISSION_NAME, mPermissionGroup);
|
||||
mContext.startActivity(intent);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@@ -20,6 +20,7 @@ import android.Manifest;
|
||||
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
@@ -33,7 +34,8 @@ public final class AdminGrantedCameraPermissionPreferenceControllerTest extends
|
||||
|
||||
public AdminGrantedCameraPermissionPreferenceControllerTest() {
|
||||
super("enterprise_privacy_number_camera_access_packages",
|
||||
new String[] {Manifest.permission.CAMERA});
|
||||
new String[] {Manifest.permission.CAMERA},
|
||||
Manifest.permission_group.CAMERA);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -20,6 +20,7 @@ import android.Manifest;
|
||||
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
@@ -34,7 +35,8 @@ public final class AdminGrantedLocationPermissionsPreferenceControllerTest exten
|
||||
public AdminGrantedLocationPermissionsPreferenceControllerTest() {
|
||||
super("enterprise_privacy_number_location_access_packages",
|
||||
new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,
|
||||
Manifest.permission.ACCESS_FINE_LOCATION});
|
||||
Manifest.permission.ACCESS_FINE_LOCATION},
|
||||
Manifest.permission_group.LOCATION);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -20,6 +20,7 @@ import android.Manifest;
|
||||
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
@@ -33,7 +34,8 @@ public final class AdminGrantedMicrophonePermissionPreferenceControllerTest exte
|
||||
|
||||
public AdminGrantedMicrophonePermissionPreferenceControllerTest() {
|
||||
super("enterprise_privacy_number_microphone_access_packages",
|
||||
new String[] {Manifest.permission.RECORD_AUDIO});
|
||||
new String[] {Manifest.permission.RECORD_AUDIO},
|
||||
Manifest.permission_group.MICROPHONE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -16,8 +16,14 @@
|
||||
|
||||
package com.android.settings.enterprise;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Intent;
|
||||
import android.support.v7.preference.Preference;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.annotation.Config;
|
||||
|
||||
@@ -30,7 +36,7 @@ public final class AdminGrantedPermissionsPreferenceControllerBaseTest extends
|
||||
AdminGrantedPermissionsPreferenceControllerTestBase {
|
||||
|
||||
public AdminGrantedPermissionsPreferenceControllerBaseTest() {
|
||||
super(null, new String[] {"some.permission"});
|
||||
super("some.key", new String[] {"some.permission"}, "some.permission");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,12 +49,14 @@ public final class AdminGrantedPermissionsPreferenceControllerBaseTest extends
|
||||
AdminGrantedPermissionsPreferenceControllerBase {
|
||||
|
||||
AdminGrantedPermissionsPreferenceControllerBaseTestable() {
|
||||
super(AdminGrantedPermissionsPreferenceControllerBaseTest.this.mContext, mPermissions);
|
||||
super(AdminGrantedPermissionsPreferenceControllerBaseTest.this.mContext, mPermissions,
|
||||
mPermissionGroup);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPreferenceKey() {
|
||||
return null;
|
||||
return "some.key";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -17,6 +17,7 @@
|
||||
package com.android.settings.enterprise;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.support.v7.preference.Preference;
|
||||
|
||||
@@ -27,6 +28,7 @@ import com.android.settings.testutils.FakeFeatureFactory;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Answers;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.mockito.invocation.InvocationOnMock;
|
||||
@@ -36,6 +38,7 @@ import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.Mockito.anyObject;
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
import static org.mockito.Mockito.eq;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
/**
|
||||
@@ -45,6 +48,7 @@ public abstract class AdminGrantedPermissionsPreferenceControllerTestBase {
|
||||
|
||||
protected final String mKey;
|
||||
protected final String[] mPermissions;
|
||||
protected final String mPermissionGroup;
|
||||
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||
protected Context mContext;
|
||||
@@ -52,9 +56,11 @@ public abstract class AdminGrantedPermissionsPreferenceControllerTestBase {
|
||||
|
||||
protected AdminGrantedPermissionsPreferenceControllerBase mController;
|
||||
|
||||
public AdminGrantedPermissionsPreferenceControllerTestBase(String key, String[] permissions) {
|
||||
public AdminGrantedPermissionsPreferenceControllerTestBase(String key, String[] permissions,
|
||||
String permissionGroup) {
|
||||
mKey = key;
|
||||
mPermissions = permissions;
|
||||
mPermissionGroup = permissionGroup;
|
||||
}
|
||||
|
||||
@Before
|
||||
@@ -81,8 +87,9 @@ public abstract class AdminGrantedPermissionsPreferenceControllerTestBase {
|
||||
preference.setVisible(false);
|
||||
|
||||
setNumberOfPackagesWithAdminGrantedPermissions(20);
|
||||
when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_number_packages,
|
||||
20, 20)).thenReturn("20 packages");
|
||||
when(mContext.getResources().getQuantityString(
|
||||
R.plurals.enterprise_privacy_number_packages_actionable,20, 20))
|
||||
.thenReturn("20 packages");
|
||||
mController.updateState(preference);
|
||||
assertThat(preference.getSummary()).isEqualTo("20 packages");
|
||||
assertThat(preference.isVisible()).isTrue();
|
||||
@@ -99,8 +106,19 @@ public abstract class AdminGrantedPermissionsPreferenceControllerTestBase {
|
||||
|
||||
@Test
|
||||
public void testHandlePreferenceTreeClick() {
|
||||
assertThat(mController.handlePreferenceTreeClick(new Preference(mContext, null, 0, 0)))
|
||||
.isFalse();
|
||||
final Preference preference = new Preference(mContext, null, 0, 0);
|
||||
preference.setKey(mKey);
|
||||
|
||||
assertThat(mController.handlePreferenceTreeClick(preference)).isTrue();
|
||||
|
||||
final ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
verify(mContext).startActivity(argumentCaptor.capture());
|
||||
|
||||
final Intent intent = argumentCaptor.getValue();
|
||||
|
||||
assertThat(intent.getAction()).isEqualTo(Intent.ACTION_MANAGE_PERMISSION_APPS);
|
||||
assertThat(intent.getStringExtra(Intent.EXTRA_PERMISSION_NAME)).
|
||||
isEqualTo(mPermissionGroup);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Reference in New Issue
Block a user