Use settingslib util methods for work policy info

Bug: b/229889270
Test: make ROBOTEST_FILTER=EnterprisePrivacyFeatureProviderImplTest RunSettingsRoboTests -j40
Change-Id: I0d968732a4dd601955e18b2ebb2af365638b450f
This commit is contained in:
Prabal Singh
2022-04-23 20:15:34 +01:00
parent 7d5cc42c81
commit 67007e5933
2 changed files with 21 additions and 60 deletions

View File

@@ -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;

View File

@@ -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);
}