[Ally] Add content description for the supervion promo action button
Bug: 411279121
Test: manually with Talkback
Test: atest SupervisionPromoFooterPreferenceTest
Flag: android.app.supervision.flags.enable_supervision_settings_screen
Change-Id: I5dcf3b9ffb3179a8d086c8865c8113394877c547
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3a560f1..24c5a49 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -14513,6 +14513,10 @@
<!-- Title on activity to confirm PIN for supervision setup [CHAR LIMIT=NONE] -->
<string name="supervision_confirm_your_pin_header">Confirm PIN</string>
<string name="supervision_pin_reset_success_toast">PIN updated</string>
+ <!-- Content description for the action button in the supervision promo footer.
+ This button typically opens a related application or a web page for more information.
+ [CHAR LIMIT=NONE] -->
+ <string name="supervision_promo_footer_action_button_description">Open app</string>
<!-- Title on dialog that confirms whether user wants to delete their supervision PIN [CHAR LIMIT=NONE] -->
<string name="supervision_delete_pin_confirm_header">Delete PIN?</string>
<!-- Message in dialog that confirms whether user wants to delete their supervision PIN [CHAR LIMIT=NONE] -->
diff --git a/src/com/android/settings/supervision/SupervisionPromoFooterPreference.kt b/src/com/android/settings/supervision/SupervisionPromoFooterPreference.kt
index 8551a32..9a7bdb9 100644
--- a/src/com/android/settings/supervision/SupervisionPromoFooterPreference.kt
+++ b/src/com/android/settings/supervision/SupervisionPromoFooterPreference.kt
@@ -22,18 +22,19 @@
import android.widget.TextView
import androidx.preference.Preference
import androidx.preference.PreferenceViewHolder
+import com.android.settings.R
import com.android.settings.supervision.ipc.PreferenceData
import com.android.settingslib.metadata.PreferenceLifecycleContext
import com.android.settingslib.metadata.PreferenceLifecycleProvider
import com.android.settingslib.metadata.PreferenceMetadata
import com.android.settingslib.preference.PreferenceBinding
import com.android.settingslib.widget.CardPreference
+import com.android.settingslib.widget.mainswitch.R as MainSwitchPreferenceR
+import com.android.settingslib.widget.preference.card.R as CardPreferenceR
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
-import com.android.settingslib.widget.mainswitch.R as MainSwitchPreferenceR
-import com.android.settingslib.widget.preference.card.R as CardPreferenceR
/** A bottom banner promoting other supervision features offered by the supervision app. */
class SupervisionPromoFooterPreference(
@@ -83,8 +84,8 @@
}
(preference as CardPreference).setAdditionalAction(
trailingIcon,
- // TODO(b/411279121): add content description once we have the finalized string.
- contentDescription = "",
+ contentDescription =
+ context.getString(R.string.supervision_promo_footer_action_button_description),
) {
@SuppressLint("RestrictedApi") it.performClick()
}
diff --git a/tests/robotests/src/com/android/settings/supervision/SupervisionPromoFooterPreferenceTest.kt b/tests/robotests/src/com/android/settings/supervision/SupervisionPromoFooterPreferenceTest.kt
index 9e64010..c0c4e36 100644
--- a/tests/robotests/src/com/android/settings/supervision/SupervisionPromoFooterPreferenceTest.kt
+++ b/tests/robotests/src/com/android/settings/supervision/SupervisionPromoFooterPreferenceTest.kt
@@ -22,6 +22,7 @@
import androidx.preference.Preference
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.android.settings.R
import com.android.settings.supervision.SupervisionPromoFooterPreference.Companion.KEY
import com.android.settings.supervision.ipc.PreferenceData
import com.android.settingslib.metadata.PreferenceLifecycleContext
@@ -34,9 +35,11 @@
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.kotlin.any
+import org.mockito.kotlin.atLeastOnce
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import org.mockito.kotlin.never
+import org.mockito.kotlin.spy
import org.mockito.kotlin.stub
import org.mockito.kotlin.verify
@@ -48,7 +51,7 @@
object : ContextWrapper(ApplicationProvider.getApplicationContext()) {
override fun getPackageManager() = mockPackageManager
}
- private val preference = CardPreference(context)
+ private val preference = spy(CardPreference(context))
private var preferenceData: PreferenceData? = null
@@ -207,6 +210,12 @@
verify(preferenceLifecycleContext).notifyPreferenceChange(KEY) // will trigger binding
promoPreference.bind(preference, mock())
+ verify(preference, atLeastOnce()).setAdditionalAction(
+ null,
+ context.getString(R.string.supervision_promo_footer_action_button_description),
+ ) {
+ it.performClick()
+ }
assertThat(preference.isVisible).isTrue()
val intent = preference.intent!!