Skip to content

Commit b0957cc

Browse files
jscott1989pfmaggi
authored andcommitted
No public description
PiperOrigin-RevId: 603134178
1 parent f0dda45 commit b0957cc

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

src/main/java/com/afwsamples/testdpc/policy/PolicyManagementFragment.java

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import android.app.FragmentManager;
3636
import android.app.admin.DevicePolicyManager;
3737
import android.app.admin.DevicePolicyManager.InstallSystemUpdateCallback;
38+
import android.app.admin.PackagePolicy;
3839
import android.app.admin.SystemUpdateInfo;
3940
import android.app.admin.WifiSsidPolicy;
4041
import android.content.ComponentName;
@@ -441,6 +442,14 @@ public class PolicyManagementFragment extends BaseSearchablePolicyPreferenceFrag
441442
private static final String SET_WIFI_MIN_SECURITY_LEVEL_KEY = "set_wifi_min_security_level";
442443
private static final String SET_WIFI_SSID_RESTRICTION_KEY = "set_wifi_ssid_restriction";
443444
private static final String MTE_POLICY_KEY = "mte_policy";
445+
private static final String CREDENTIAL_MANAGER_SET_ALLOWLIST_KEY =
446+
"credential_manager_set_allowlist";
447+
private static final String CREDENTIAL_MANAGER_SET_ALLOWLIST_AND_SYSTEM_KEY =
448+
"credential_manager_set_allowlist_and_system";
449+
private static final String CREDENTIAL_MANAGER_SET_BLOCKLIST_KEY =
450+
"credential_manager_set_blocklist";
451+
private static final String CREDENTIAL_MANAGER_CLEAR_POLICY_KEY =
452+
"credential_manager_clear_policy";
444453

445454
private static final String BATTERY_PLUGGED_ANY =
446455
Integer.toString(
@@ -800,6 +809,12 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
800809
findPreference(SET_WIFI_SSID_RESTRICTION_KEY).setOnPreferenceClickListener(this);
801810
findPreference(MTE_POLICY_KEY).setOnPreferenceClickListener(this);
802811

812+
findPreference(CREDENTIAL_MANAGER_SET_ALLOWLIST_KEY).setOnPreferenceClickListener(this);
813+
findPreference(CREDENTIAL_MANAGER_SET_ALLOWLIST_AND_SYSTEM_KEY)
814+
.setOnPreferenceClickListener(this);
815+
findPreference(CREDENTIAL_MANAGER_SET_BLOCKLIST_KEY).setOnPreferenceClickListener(this);
816+
findPreference(CREDENTIAL_MANAGER_CLEAR_POLICY_KEY).setOnPreferenceClickListener(this);
817+
803818
DpcPreference bindDeviceAdminPreference =
804819
(DpcPreference) findPreference(BIND_DEVICE_ADMIN_POLICIES);
805820
bindDeviceAdminPreference.setCustomConstraint(
@@ -1414,6 +1429,18 @@ public void onPositiveButtonClicked(String[] lockTaskArray) {
14141429
} else if (MTE_POLICY_KEY.equals(key)) {
14151430
showMtePolicyDialog();
14161431
return true;
1432+
} else if (CREDENTIAL_MANAGER_SET_ALLOWLIST_KEY.equals(key)) {
1433+
showCredentialManagerPolicyDialog(PackagePolicy.PACKAGE_POLICY_ALLOWLIST);
1434+
return true;
1435+
} else if (CREDENTIAL_MANAGER_SET_ALLOWLIST_AND_SYSTEM_KEY.equals(key)) {
1436+
showCredentialManagerPolicyDialog(PackagePolicy.PACKAGE_POLICY_ALLOWLIST_AND_SYSTEM);
1437+
return true;
1438+
} else if (CREDENTIAL_MANAGER_SET_BLOCKLIST_KEY.equals(key)) {
1439+
showCredentialManagerPolicyDialog(PackagePolicy.PACKAGE_POLICY_BLOCKLIST);
1440+
return true;
1441+
} else if (CREDENTIAL_MANAGER_CLEAR_POLICY_KEY.equals(key)) {
1442+
resetCredentialManagerPolicy();
1443+
return true;
14171444
}
14181445
return false;
14191446
}
@@ -2896,6 +2923,50 @@ private void reloadMuteAudioUi() {
28962923
}
28972924
}
28982925

2926+
@TargetApi(VERSION_CODES.UPSIDE_DOWN_CAKE)
2927+
private void resetCredentialManagerPolicy() {
2928+
mDevicePolicyManager.setCredentialManagerPolicy(null);
2929+
showToast(R.string.credential_manager_policy_applied_toast);
2930+
}
2931+
2932+
@TargetApi(VERSION_CODES.UPSIDE_DOWN_CAKE)
2933+
private void showCredentialManagerPolicyDialog(int policyType) {
2934+
LinearLayout inputContainer =
2935+
(LinearLayout) getActivity().getLayoutInflater().inflate(R.layout.simple_edittext, null);
2936+
final EditText editText = (EditText) inputContainer.findViewById(R.id.input);
2937+
2938+
new AlertDialog.Builder(getActivity())
2939+
.setTitle(getString(R.string.credential_manager_policy_title))
2940+
.setView(inputContainer)
2941+
.setPositiveButton(
2942+
android.R.string.ok,
2943+
new DialogInterface.OnClickListener() {
2944+
@Override
2945+
public void onClick(DialogInterface dialog, int which) {
2946+
Set<String> packageNames = new HashSet<>();
2947+
String packageName = editText.getText().toString();
2948+
if (!TextUtils.isEmpty(packageName)) {
2949+
packageNames.add(packageName);
2950+
}
2951+
2952+
mDevicePolicyManager.setCredentialManagerPolicy(
2953+
new PackagePolicy(policyType, packageNames));
2954+
2955+
showToast(R.string.credential_manager_policy_applied_toast);
2956+
dialog.dismiss();
2957+
}
2958+
})
2959+
.setNegativeButton(
2960+
android.R.string.cancel,
2961+
new DialogInterface.OnClickListener() {
2962+
@Override
2963+
public void onClick(DialogInterface dialog, int which) {
2964+
dialog.cancel();
2965+
}
2966+
})
2967+
.show();
2968+
}
2969+
28992970
/** Shows a prompt to ask for package name which is used to enable a system app. */
29002971
private void showEnableSystemAppByPackageNamePrompt() {
29012972
if (getActivity() == null || getActivity().isFinishing()) {

src/main/res/values/strings.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1277,4 +1277,13 @@
12771277
<string name="personal_subscriptions_label">All SIMs are for personal</string>
12781278
<string name="work_subscriptions_label">All SIMs are for work</string>
12791279

1280+
<!-- Strings for credential manager policy. -->
1281+
<string name="credential_manager_title">Credential Manager</string>
1282+
<string name="credential_manager_set_allowlist">Set Credential Provider Allowlist</string>
1283+
<string name="credential_manager_set_allowlist_and_system">Set Credential Provider Allowlist and System</string>
1284+
<string name="credential_manager_set_blocklist">Set Credential Provider Blocklist</string>
1285+
<string name="credential_manager_clear_policy">Clear policy</string>
1286+
<string name="credential_manager_policy_applied_toast">Policy has been applied</string>
1287+
<string name="credential_manager_policy_title">Enter package name of Credential Provider</string>
1288+
12801289
</resources>

src/main/res/xml/device_policy_header.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -895,4 +895,23 @@
895895
testdpc:minSdkVersion="U" />
896896
</PreferenceCategory>
897897

898+
<PreferenceCategory android:title="@string/credential_manager_title">
899+
<com.afwsamples.testdpc.common.preference.DpcPreference
900+
android:key="credential_manager_set_allowlist"
901+
android:title="@string/credential_manager_set_allowlist"
902+
testdpc:minSdkVersion="U" />
903+
<com.afwsamples.testdpc.common.preference.DpcPreference
904+
android:key="credential_manager_set_allowlist_and_system"
905+
android:title="@string/credential_manager_set_allowlist_and_system"
906+
testdpc:minSdkVersion="U" />
907+
<com.afwsamples.testdpc.common.preference.DpcPreference
908+
android:key="credential_manager_set_blocklist"
909+
android:title="@string/credential_manager_set_blocklist"
910+
testdpc:minSdkVersion="U" />
911+
<com.afwsamples.testdpc.common.preference.DpcPreference
912+
android:key="credential_manager_clear_policy"
913+
android:title="@string/credential_manager_clear_policy"
914+
testdpc:minSdkVersion="U" />
915+
</PreferenceCategory>
916+
898917
</PreferenceScreen>

0 commit comments

Comments
 (0)