diff options
| author | 2023-03-06 18:17:28 +0000 | |
|---|---|---|
| committer | 2023-03-09 17:31:23 +0000 | |
| commit | 1bf1e411ec00c8cf4cd18dbc826c1445a4455374 (patch) | |
| tree | 435ae5736bc2dd9b4a78a77e55c8139f39f8a6cb | |
| parent | 8c79f2245c9442a3b1b2e628b41f9f47f8f2a5a2 (diff) | |
Add support for default providers
Adds support for default providers
at the moment they also need to be
a system provider. CTS tests are
blocked on ag/21546183
Test: make
Bug: 267669743
Change-Id: I65ac62cd44550a0ab57a732d3effdc5a301d8dbb
| -rw-r--r-- | packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index ba275ebca168..5b009d1b48c8 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -3695,7 +3695,7 @@ public class SettingsProvider extends ContentProvider { } private final class UpgradeController { - private static final int SETTINGS_VERSION = 214; + private static final int SETTINGS_VERSION = 215; private final int mUserId; @@ -5650,6 +5650,49 @@ public class SettingsProvider extends ContentProvider { currentVersion = 214; } + if (currentVersion == 214) { + // Version 214: Set a default value for Credential Manager service. + + final SettingsState secureSettings = getSecureSettingsLocked(userId); + final Setting currentSetting = secureSettings + .getSettingLocked(Settings.Secure.CREDENTIAL_SERVICE); + if (currentSetting.isNull()) { + final int resourceId = + com.android.internal.R.string.config_defaultCredentialProviderService; + final Resources resources = getContext().getResources(); + // If the config has not be defined we might get an exception. We also get + // values from both the string array type and the single string in case the + // OEM uses the wrong one. + final List<String> providers = new ArrayList<>(); + try { + providers.addAll(Arrays.asList(resources.getStringArray(resourceId))); + } catch (Resources.NotFoundException e) { + Slog.w(LOG_TAG, + "Get default array Cred Provider not found: " + e.toString()); + } + try { + final String storedValue = resources.getString(resourceId); + if (!TextUtils.isEmpty(storedValue)) { + providers.add(storedValue); + } + } catch (Resources.NotFoundException e) { + Slog.w(LOG_TAG, + "Get default Cred Provider not found: " + e.toString()); + } + + if (!providers.isEmpty()) { + final String defaultValue = String.join(":", providers); + Slog.d(LOG_TAG, "Setting [" + defaultValue + "] as CredMan Service " + + "for user " + userId); + secureSettings.insertSettingOverrideableByRestoreLocked( + Settings.Secure.CREDENTIAL_SERVICE, defaultValue, null, true, + SettingsState.SYSTEM_PACKAGE_NAME); + } + } + + currentVersion = 215; + } + // vXXX: Add new settings above this point. if (currentVersion != newVersion) { |