Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a796ca49 authored by Vitor Carvalho's avatar Vitor Carvalho Committed by Android (Google) Code Review
Browse files

Merge "Update EnterprisePrivacyFeatureProviderImpl to obtain the parental...

Merge "Update EnterprisePrivacyFeatureProviderImpl to obtain the parental controls intent from SupervisionIntentProvider." into main
parents 43dc7840 ef34741c
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.text.SpannableStringBuilder;

import com.android.settings.R;
import com.android.settings.vpn2.VpnUtils;
import com.android.settingslib.supervision.SupervisionIntentProvider;
import com.android.settingslib.utils.WorkPolicyUtils;

import java.util.Date;
@@ -44,6 +45,7 @@ import java.util.List;

public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFeatureProvider {

    @Deprecated
    public static final String ACTION_PARENTAL_CONTROLS =
            "android.settings.SHOW_PARENTAL_CONTROLS";

@@ -243,7 +245,10 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe

    @Override
    public boolean showParentalControls() {
        Intent intent = getParentalControlsIntent();
        Intent intent =
                android.app.supervision.flags.Flags.deprecateDpmSupervisionApis()
                        ? SupervisionIntentProvider.getSettingsIntent(mContext)
                        : getParentalControlsIntent();
        if (intent != null) {
            mContext.startActivity(intent);
            return true;
@@ -261,6 +266,7 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
                        == UserProperties.SHOW_IN_QUIET_MODE_HIDDEN;
    }

    @Deprecated
    private Intent getParentalControlsIntent() {
        final ComponentName componentName =
                mDpm.getProfileOwnerOrDeviceOwnerSupervisionComponent(new UserHandle(MY_USER_ID));
+40 −13
Original line number Diff line number Diff line
@@ -26,9 +26,11 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;

import android.app.admin.DevicePolicyManager;
import android.app.supervision.SupervisionManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -42,6 +44,9 @@ import android.net.ConnectivityManager;
import android.net.VpnManager;
import android.os.UserHandle;
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.text.SpannableStringBuilder;

@@ -51,8 +56,10 @@ import com.google.common.collect.ImmutableList;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentMatcher;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
@@ -68,10 +75,13 @@ import java.util.List;
@RunWith(RobolectricTestRunner.class)
public class EnterprisePrivacyFeatureProviderImplTest {

    @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();

    private static final String OWNER_ORGANIZATION = "ACME";
    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_LABEL = "Test IME";
    private static final String SUPERVISION_PACKAGE = "com.supervision.app";

    private final ComponentName mOwner = new ComponentName("mock", "component");
    private final ComponentName mAdmin1 = new ComponentName("mock", "admin1");
@@ -82,19 +92,14 @@ public class EnterprisePrivacyFeatureProviderImplTest {

    private List<UserInfo> mProfiles = new ArrayList<>();

    @Mock
    private Context mContext;
    @Mock
    private DevicePolicyManager mDevicePolicyManager;
    @Mock
    private PackageManager mPackageManager;
    @Mock
    private UserManager mUserManager;
    @Mock
    private ConnectivityManager mConnectivityManger;
    @Mock
    private VpnManager mVpnManager;
    @Mock private Context mContext;
    @Mock private DevicePolicyManager mDevicePolicyManager;
    @Mock private PackageManager mPackageManager;
    @Mock private UserManager mUserManager;
    @Mock private ConnectivityManager mConnectivityManager;
    @Mock private VpnManager mVpnManager;
    private Resources mResources;
    @Mock private SupervisionManager mSupervisionManager;

    private EnterprisePrivacyFeatureProvider mProvider;

@@ -108,12 +113,14 @@ public class EnterprisePrivacyFeatureProviderImplTest {
        when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE))
                .thenReturn(mDevicePolicyManager);
        when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
        when(mContext.getSystemService(SupervisionManager.class))
                .thenReturn(mSupervisionManager);
        when(mContext.getPackageManager()).thenReturn(mPackageManager);
        mProfiles.add(new UserInfo(mUserId, "", "", 0 /* flags */));
        mResources = RuntimeEnvironment.application.getResources();

        mProvider = new EnterprisePrivacyFeatureProviderImpl(mContext, mDevicePolicyManager,
                mPackageManager, mUserManager, mConnectivityManger, mVpnManager, mResources);
                mPackageManager, mUserManager, mConnectivityManager, mVpnManager, mResources);
    }

    @Test
@@ -430,6 +437,7 @@ public class EnterprisePrivacyFeatureProviderImplTest {
    }

    @Test
    @DisableFlags(android.app.supervision.flags.Flags.FLAG_DEPRECATE_DPM_SUPERVISION_APIS)
    public void testShowParentalControls() {
        when(mDevicePolicyManager.getProfileOwnerOrDeviceOwnerSupervisionComponent(any()))
                .thenReturn(mOwner);
@@ -440,6 +448,25 @@ public class EnterprisePrivacyFeatureProviderImplTest {
        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(
            String packageName, boolean deviceOwner, boolean profileOwner) {
        Intent intent = new Intent(Settings.ACTION_SHOW_WORK_POLICY_INFO);