From 52a79f299dd2bce1a2f986b509e125d0485166fa Mon Sep 17 00:00:00 2001 From: Richard MacGregor Date: Wed, 29 Jan 2025 14:46:28 -0800 Subject: Fix role list entry contentdescriptions Fix issue where two role list items would have the same content description LOW_COVERAGE_REASON=OTHER_FORM_FACTOR Bug: 383395325 Flag: EXEMPT bugfix Relnote: N/A Test: manual Change-Id: Ic8347df8aa27be80af61ec252910331aa448312e --- .../role/ui/DefaultAppChildFragment.java | 8 ++++++-- .../role/ui/DefaultAppListChildFragment.java | 8 ++++++++ .../role/ui/RequestRoleFragment.java | 7 +++++++ .../role/ui/RoleApplicationPreference.java | 6 ++++++ .../permissioncontroller/role/ui/RolePreference.java | 6 ++++++ .../role/ui/auto/AutoRadioPreference.java | 17 +++++++++++++++++ .../role/ui/auto/AutoRolePreference.java | 17 +++++++++++++++++ .../role/ui/auto/AutoSwitchPreference.java | 16 ++++++++++++++++ .../role/ui/handheld/HandheldRadioPreference.java | 17 +++++++++++++++++ .../role/ui/handheld/HandheldRolePreference.java | 17 +++++++++++++++++ .../handheld/HandheldSwitchPreference.java | 16 ++++++++++++++++ .../role/ui/wear/WearRoleApplicationPreference.kt | 16 +++++++++++++++- .../role/ui/wear/WearRolePreference.kt | 19 ++++++++++++++++++- 13 files changed, 166 insertions(+), 4 deletions(-) (limited to 'PermissionController/src') diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java index 268633c4f..a396c190a 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/DefaultAppChildFragment.java @@ -48,6 +48,7 @@ import com.android.permissioncontroller.role.utils.RoleUiBehaviorUtils; import com.android.permissioncontroller.role.utils.SettingsCompat; import com.android.role.controller.model.Role; import com.android.role.controller.model.Roles; +import com.android.settingslib.utils.applications.AppUtils; import java.util.List; import java.util.Objects; @@ -302,10 +303,13 @@ public class DefaultAppChildFragment Unit = {}, - private var restrictionIntent: Intent? = null + private var restrictionIntent: Intent? = null, + private var contentDescription: String? = null, ) : TwoStatePreference(context), RoleApplicationPreference { init { title = defaultLabel @@ -39,10 +41,22 @@ class WearRoleApplicationPreference( fun getOnCheckChanged(): (Boolean) -> Unit = restrictionIntent?.let { { _ -> context.startActivity(it) } } ?: onDefaultCheckChanged + override fun setContentDescription(contentDescription: String?) { + if (this.contentDescription != contentDescription) { + this.contentDescription = contentDescription + notifyChanged() + } + } + override fun setRestrictionIntent(restrictionIntent: Intent?) { this.restrictionIntent = restrictionIntent isEnabled = restrictionIntent == null } override fun asTwoStatePreference(): TwoStatePreference = this + + override fun onBindViewHolder(holder: PreferenceViewHolder) { + super.onBindViewHolder(holder) + holder.findViewById(android.R.id.title)?.let { it.contentDescription = contentDescription } + } } diff --git a/PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearRolePreference.kt b/PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearRolePreference.kt index 43acf4293..670c136ea 100644 --- a/PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearRolePreference.kt +++ b/PermissionController/src/com/android/permissioncontroller/role/ui/wear/WearRolePreference.kt @@ -19,6 +19,7 @@ package com.android.permissioncontroller.role.ui.wear import android.content.Context import android.content.Intent import androidx.preference.Preference +import androidx.preference.PreferenceViewHolder import com.android.permissioncontroller.role.ui.RolePreference import com.android.permissioncontroller.role.ui.TwoTargetPreference.OnSecondTargetClickListener import com.android.settingslib.widget.TwoTargetPreference @@ -28,13 +29,21 @@ class WearRolePreference( context: Context, val label: String, val onDefaultClicked: () -> Unit = {}, - private var restrictionIntent: Intent? = null + private var restrictionIntent: Intent? = null, + private var summaryContentDescription: String? = null, ) : TwoTargetPreference(context), RolePreference { override fun setOnSecondTargetClickListener(listener: OnSecondTargetClickListener?) { // no-op } + override fun setSummaryContentDescription(summaryContentDescription: String?) { + if (this.summaryContentDescription != summaryContentDescription) { + this.summaryContentDescription = summaryContentDescription + notifyChanged() + } + } + override fun setRestrictionIntent(restrictionIntent: Intent?) { this.restrictionIntent = restrictionIntent setEnabled(restrictionIntent == null) @@ -42,6 +51,14 @@ class WearRolePreference( override fun asPreference(): Preference = this + override fun onBindViewHolder(holder: PreferenceViewHolder) { + super.onBindViewHolder(holder) + + holder.findViewById(android.R.id.summary)?.let { + it.contentDescription = summaryContentDescription + } + } + fun getOnClicked(): () -> Unit = restrictionIntent?.let { { context.startActivity(it) } } ?: onDefaultClicked } -- cgit v1.2.3-59-g8ed1b