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

Commit 67007e59 authored by Prabal Singh's avatar Prabal Singh
Browse files

Use settingslib util methods for work policy info

Bug: b/229889270
Test: make ROBOTEST_FILTER=EnterprisePrivacyFeatureProviderImplTest RunSettingsRoboTests -j40
Change-Id: I0d968732a4dd601955e18b2ebb2af365638b450f
parent 7d5cc42c
Loading
Loading
Loading
Loading
+5 −56
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import android.view.View;

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

import java.util.Date;
import java.util.List;
@@ -54,6 +55,7 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
    private final ConnectivityManager mCm;
    private final VpnManager mVm;
    private final Resources mResources;
    private final WorkPolicyUtils mWorkPolicyUtils;

    private static final int MY_USER_ID = UserHandle.myUserId();

@@ -67,6 +69,7 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
        mCm = cm;
        mVm = vm;
        mResources = resources;
        mWorkPolicyUtils = new WorkPolicyUtils(mContext, mPm, mUm, mDpm);
    }

    @Override
@@ -228,25 +231,12 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe

    @Override
    public boolean hasWorkPolicyInfo() {
        return (getWorkPolicyInfoIntentDO() != null) || (getWorkPolicyInfoIntentPO() != null);
        return mWorkPolicyUtils.hasWorkPolicy();
    }

    @Override
    public boolean showWorkPolicyInfo(Context activityContext) {
        Intent intent = getWorkPolicyInfoIntentDO();
        if (intent != null) {
            activityContext.startActivity(intent);
            return true;
        }

        intent = getWorkPolicyInfoIntentPO();
        final UserInfo userInfo = getManagedProfileUserInfo();
        if (intent != null && userInfo != null) {
            activityContext.startActivityAsUser(intent, userInfo.getUserHandle());
            return true;
        }

        return false;
        return mWorkPolicyUtils.showWorkPolicyInfo(activityContext);
    }

    @Override
@@ -301,47 +291,6 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
        return UserHandle.USER_NULL;
    }

    private Intent getWorkPolicyInfoIntentDO() {
        final ComponentName ownerComponent = getDeviceOwnerComponent();
        if (ownerComponent == null) {
            return null;
        }

        // Only search for the required action in the Device Owner's package
        final Intent intent =
                new Intent(Settings.ACTION_SHOW_WORK_POLICY_INFO)
                        .setPackage(ownerComponent.getPackageName());
        final List<ResolveInfo> activities = mPm.queryIntentActivities(intent, 0);
        if (activities.size() != 0) {
            return intent;
        }

        return null;
    }

    private Intent getWorkPolicyInfoIntentPO() {
        final int userId = getManagedProfileUserId();
        if (userId == UserHandle.USER_NULL) {
            return null;
        }

        final ComponentName ownerComponent = mDpm.getProfileOwnerAsUser(userId);
        if (ownerComponent == null) {
            return null;
        }

        // Only search for the required action in the Profile Owner's package
        final Intent intent =
                new Intent(Settings.ACTION_SHOW_WORK_POLICY_INFO)
                        .setPackage(ownerComponent.getPackageName());
        final List<ResolveInfo> activities = mPm.queryIntentActivitiesAsUser(intent, 0, userId);
        if (activities.size() != 0) {
            return intent;
        }

        return null;
    }

    protected static class EnterprisePrivacySpan extends ClickableSpan {
        private final Context mContext;

+16 −4
Original line number Diff line number Diff line
@@ -377,10 +377,22 @@ public class EnterprisePrivacyFeatureProviderImplTest {
    }

    @Test
    public void workPolicyInfo_profileOwner_shouldResolveIntent() {
    public void workPolicyInfo_profileOwner_shouldResolveIntent()
            throws PackageManager.NameNotFoundException {
        when(mDevicePolicyManager.getDeviceOwnerComponentOnAnyUser()).thenReturn(null);
        mProfiles.add(new UserInfo(mManagedProfileUserId, "", "", UserInfo.FLAG_MANAGED_PROFILE));
        when(mDevicePolicyManager.getProfileOwnerAsUser(mManagedProfileUserId)).thenReturn(mOwner);
        List<UserHandle> mAllProfiles = new ArrayList<>();
        mAllProfiles.add(new UserHandle(mManagedProfileUserId));
        when(mUserManager.getAllProfiles()).thenReturn(mAllProfiles);
        when(mUserManager.isManagedProfile(mManagedProfileUserId)).thenReturn(true);
        when(mContext.getPackageName()).thenReturn("somePackageName");
        when(mContext.createPackageContextAsUser(
                eq(mContext.getPackageName()),
                anyInt(),
                any(UserHandle.class))
        ).thenReturn(mContext);
        when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE))
                .thenReturn(mDevicePolicyManager);
        when(mDevicePolicyManager.getProfileOwner()).thenReturn(mOwner);

        // If the intent is not resolved, then there's no info to show for PO
        assertThat(mProvider.hasWorkPolicyInfo()).isFalse();
@@ -441,7 +453,7 @@ public class EnterprisePrivacyFeatureProviderImplTest {
        }
        if (profileOwner) {
            when(mPackageManager.queryIntentActivitiesAsUser(
                    intentEquals(intent), anyInt(), eq(mManagedProfileUserId)))
                    intentEquals(intent), anyInt(), eq(UserHandle.of(mManagedProfileUserId))))
                    .thenReturn(activities);
        }