Update EnterprisePrivacyFeatureProviderImpl to obtain the parental controls intent from SupervisionIntentProvider.
Bug: 382038391 Flag: android.app.supervision.flags.deprecate_dpm_supervision_apis Test: atest EnterprisePrivacyFeatureProviderImplTest Change-Id: Iab4308406257c18c5e6881747642a932ae54f78e
This commit is contained in:
@@ -37,6 +37,7 @@ import android.text.SpannableStringBuilder;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.vpn2.VpnUtils;
|
import com.android.settings.vpn2.VpnUtils;
|
||||||
|
import com.android.settingslib.supervision.SupervisionIntentProvider;
|
||||||
import com.android.settingslib.utils.WorkPolicyUtils;
|
import com.android.settingslib.utils.WorkPolicyUtils;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@@ -44,6 +45,7 @@ import java.util.List;
|
|||||||
|
|
||||||
public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFeatureProvider {
|
public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFeatureProvider {
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public static final String ACTION_PARENTAL_CONTROLS =
|
public static final String ACTION_PARENTAL_CONTROLS =
|
||||||
"android.settings.SHOW_PARENTAL_CONTROLS";
|
"android.settings.SHOW_PARENTAL_CONTROLS";
|
||||||
|
|
||||||
@@ -243,7 +245,10 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean showParentalControls() {
|
public boolean showParentalControls() {
|
||||||
Intent intent = getParentalControlsIntent();
|
Intent intent =
|
||||||
|
android.app.supervision.flags.Flags.deprecateDpmSupervisionApis()
|
||||||
|
? SupervisionIntentProvider.getSettingsIntent(mContext)
|
||||||
|
: getParentalControlsIntent();
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
mContext.startActivity(intent);
|
mContext.startActivity(intent);
|
||||||
return true;
|
return true;
|
||||||
@@ -261,6 +266,7 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
|
|||||||
== UserProperties.SHOW_IN_QUIET_MODE_HIDDEN;
|
== UserProperties.SHOW_IN_QUIET_MODE_HIDDEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
private Intent getParentalControlsIntent() {
|
private Intent getParentalControlsIntent() {
|
||||||
final ComponentName componentName =
|
final ComponentName componentName =
|
||||||
mDpm.getProfileOwnerOrDeviceOwnerSupervisionComponent(new UserHandle(MY_USER_ID));
|
mDpm.getProfileOwnerOrDeviceOwnerSupervisionComponent(new UserHandle(MY_USER_ID));
|
||||||
|
@@ -26,9 +26,11 @@ import static org.mockito.Mockito.mock;
|
|||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.reset;
|
import static org.mockito.Mockito.reset;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.app.admin.DevicePolicyManager;
|
import android.app.admin.DevicePolicyManager;
|
||||||
|
import android.app.supervision.SupervisionManager;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
@@ -42,6 +44,9 @@ import android.net.ConnectivityManager;
|
|||||||
import android.net.VpnManager;
|
import android.net.VpnManager;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
|
import android.platform.test.annotations.DisableFlags;
|
||||||
|
import android.platform.test.annotations.EnableFlags;
|
||||||
|
import android.platform.test.flag.junit.SetFlagsRule;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.text.SpannableStringBuilder;
|
import android.text.SpannableStringBuilder;
|
||||||
|
|
||||||
@@ -51,8 +56,10 @@ import com.google.common.collect.ImmutableList;
|
|||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.ArgumentMatcher;
|
import org.mockito.ArgumentMatcher;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
@@ -68,10 +75,13 @@ import java.util.List;
|
|||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
public class EnterprisePrivacyFeatureProviderImplTest {
|
public class EnterprisePrivacyFeatureProviderImplTest {
|
||||||
|
|
||||||
|
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
|
||||||
|
|
||||||
private static final String OWNER_ORGANIZATION = "ACME";
|
private static final String OWNER_ORGANIZATION = "ACME";
|
||||||
private static final String VPN_PACKAGE_ID = "com.example.vpn";
|
private static final String VPN_PACKAGE_ID = "com.example.vpn";
|
||||||
private static final String IME_PACKAGE_ID = "com.example.ime";
|
private static final String IME_PACKAGE_ID = "com.example.ime";
|
||||||
private static final String IME_PACKAGE_LABEL = "Test IME";
|
private static final String IME_PACKAGE_LABEL = "Test IME";
|
||||||
|
private static final String SUPERVISION_PACKAGE = "com.supervision.app";
|
||||||
|
|
||||||
private final ComponentName mOwner = new ComponentName("mock", "component");
|
private final ComponentName mOwner = new ComponentName("mock", "component");
|
||||||
private final ComponentName mAdmin1 = new ComponentName("mock", "admin1");
|
private final ComponentName mAdmin1 = new ComponentName("mock", "admin1");
|
||||||
@@ -82,19 +92,14 @@ public class EnterprisePrivacyFeatureProviderImplTest {
|
|||||||
|
|
||||||
private List<UserInfo> mProfiles = new ArrayList<>();
|
private List<UserInfo> mProfiles = new ArrayList<>();
|
||||||
|
|
||||||
@Mock
|
@Mock private Context mContext;
|
||||||
private Context mContext;
|
@Mock private DevicePolicyManager mDevicePolicyManager;
|
||||||
@Mock
|
@Mock private PackageManager mPackageManager;
|
||||||
private DevicePolicyManager mDevicePolicyManager;
|
@Mock private UserManager mUserManager;
|
||||||
@Mock
|
@Mock private ConnectivityManager mConnectivityManager;
|
||||||
private PackageManager mPackageManager;
|
@Mock private VpnManager mVpnManager;
|
||||||
@Mock
|
|
||||||
private UserManager mUserManager;
|
|
||||||
@Mock
|
|
||||||
private ConnectivityManager mConnectivityManger;
|
|
||||||
@Mock
|
|
||||||
private VpnManager mVpnManager;
|
|
||||||
private Resources mResources;
|
private Resources mResources;
|
||||||
|
@Mock private SupervisionManager mSupervisionManager;
|
||||||
|
|
||||||
private EnterprisePrivacyFeatureProvider mProvider;
|
private EnterprisePrivacyFeatureProvider mProvider;
|
||||||
|
|
||||||
@@ -108,12 +113,14 @@ public class EnterprisePrivacyFeatureProviderImplTest {
|
|||||||
when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE))
|
when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE))
|
||||||
.thenReturn(mDevicePolicyManager);
|
.thenReturn(mDevicePolicyManager);
|
||||||
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
|
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
|
||||||
|
when(mContext.getSystemService(SupervisionManager.class))
|
||||||
|
.thenReturn(mSupervisionManager);
|
||||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
mProfiles.add(new UserInfo(mUserId, "", "", 0 /* flags */));
|
mProfiles.add(new UserInfo(mUserId, "", "", 0 /* flags */));
|
||||||
mResources = RuntimeEnvironment.application.getResources();
|
mResources = RuntimeEnvironment.application.getResources();
|
||||||
|
|
||||||
mProvider = new EnterprisePrivacyFeatureProviderImpl(mContext, mDevicePolicyManager,
|
mProvider = new EnterprisePrivacyFeatureProviderImpl(mContext, mDevicePolicyManager,
|
||||||
mPackageManager, mUserManager, mConnectivityManger, mVpnManager, mResources);
|
mPackageManager, mUserManager, mConnectivityManager, mVpnManager, mResources);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -430,6 +437,7 @@ public class EnterprisePrivacyFeatureProviderImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@DisableFlags(android.app.supervision.flags.Flags.FLAG_DEPRECATE_DPM_SUPERVISION_APIS)
|
||||||
public void testShowParentalControls() {
|
public void testShowParentalControls() {
|
||||||
when(mDevicePolicyManager.getProfileOwnerOrDeviceOwnerSupervisionComponent(any()))
|
when(mDevicePolicyManager.getProfileOwnerOrDeviceOwnerSupervisionComponent(any()))
|
||||||
.thenReturn(mOwner);
|
.thenReturn(mOwner);
|
||||||
@@ -440,6 +448,25 @@ public class EnterprisePrivacyFeatureProviderImplTest {
|
|||||||
verify(mContext).startActivity(intentEquals(intent));
|
verify(mContext).startActivity(intentEquals(intent));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@EnableFlags(android.app.supervision.flags.Flags.FLAG_DEPRECATE_DPM_SUPERVISION_APIS)
|
||||||
|
public void testShowParentalControls_usingSupervisionManager() {
|
||||||
|
when(mSupervisionManager.getActiveSupervisionAppPackage())
|
||||||
|
.thenReturn(SUPERVISION_PACKAGE);
|
||||||
|
when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt()))
|
||||||
|
.thenReturn(ImmutableList.of(new ResolveInfo()));
|
||||||
|
|
||||||
|
// If the intent is resolved, then we can use it to launch the activity.
|
||||||
|
assertThat(mProvider.showParentalControls()).isTrue();
|
||||||
|
verifyNoMoreInteractions(mDevicePolicyManager);
|
||||||
|
|
||||||
|
ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
|
||||||
|
verify(mContext).startActivity(captor.capture());
|
||||||
|
Intent intent = captor.getValue();
|
||||||
|
assertThat(intent).isNotNull();
|
||||||
|
assertThat(intent.getPackage()).isEqualTo(SUPERVISION_PACKAGE);
|
||||||
|
}
|
||||||
|
|
||||||
private Intent addWorkPolicyInfoIntent(
|
private Intent addWorkPolicyInfoIntent(
|
||||||
String packageName, boolean deviceOwner, boolean profileOwner) {
|
String packageName, boolean deviceOwner, boolean profileOwner) {
|
||||||
Intent intent = new Intent(Settings.ACTION_SHOW_WORK_POLICY_INFO);
|
Intent intent = new Intent(Settings.ACTION_SHOW_WORK_POLICY_INFO);
|
||||||
|
Reference in New Issue
Block a user