diff options
| author | 2025-02-03 14:48:07 +0800 | |
|---|---|---|
| committer | 2025-02-03 17:45:41 +0800 | |
| commit | e8279c01b1c87eb536142ec73381ad4d0730a991 (patch) | |
| tree | 9fa19b96e765309480e90017e7795e44c07fece3 | |
| parent | 107fe807c3ee6265ea430f2a0ffe0b1f125d147a (diff) | |
[Catalyst] Add PreferenceMetadata.tags
The tag constants are for external usage, e.g. identify certain
preference.
Bug: 388061003
Flag: com.android.settings.flags.catalyst
Test: N/A
Change-Id: Ib42fbff9e5774e9a4776847cb31fd53ae24caa84
3 files changed, 18 insertions, 1 deletions
diff --git a/packages/SettingsLib/Graph/graph.proto b/packages/SettingsLib/Graph/graph.proto index a834947144a0..ec287c1b65b7 100644 --- a/packages/SettingsLib/Graph/graph.proto +++ b/packages/SettingsLib/Graph/graph.proto @@ -93,6 +93,8 @@ message PreferenceProto { optional PermissionsProto read_permissions = 17; // The required permissions to write preference value. optional PermissionsProto write_permissions = 18; + // Tag constants associated with the preference. + repeated string tags = 19; // Target of an Intent message ActionTarget { diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt index 4290437b0d02..e511bf1c175d 100644 --- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt +++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt @@ -412,6 +412,7 @@ fun PreferenceMetadata.toProto( } metadata.intent(context)?.let { actionTarget = it.toActionTarget(context) } screenMetadata.getLaunchIntent(context, metadata)?.let { launchIntent = it.toProto() } + for (tag in metadata.tags(context)) addTags(tag) } persistent = metadata.isPersistent(context) if (persistent) { diff --git a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt index 1e70a32cb38b..a8939ab0d902 100644 --- a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt +++ b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceMetadata.kt @@ -89,11 +89,25 @@ interface PreferenceMetadata { /** * Return the extras Bundle object associated with this preference. * - * It is used to provide more information for metadata. + * It is used to provide more *internal* information for metadata. External app is not expected + * to use this information as it could be changed in future. Consider [tags] for external usage. */ fun extras(context: Context): Bundle? = null /** + * Returns the tags associated with this preference. + * + * Unlike [extras], tags are exposed for external usage. The returned tag list must be constants + * and **append only**. Do not edit/delete existing tag strings as it can cause backward + * compatibility issue. + * + * Use cases: + * - identify a specific preference + * - identify a group of preferences related to network settings + */ + fun tags(context: Context): Array<String> = arrayOf() + + /** * Returns if preference is indexable, default value is `true`. * * Return `false` only when the preference is always unavailable on current device. If it is |