Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 72f751c9 authored by Zhou Liu's avatar Zhou Liu
Browse files

[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
parent d5aba039
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -14513,6 +14513,10 @@ Data usage charges may apply.</string>
    <!-- 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] -->
+5 −4
Original line number Diff line number Diff line
@@ -22,18 +22,19 @@ import android.graphics.drawable.Icon
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 @@ class SupervisionPromoFooterPreference(
                }
            (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()
            }
+10 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.pm.ResolveInfo
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 kotlinx.coroutines.test.runTest
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 @@ class SupervisionPromoFooterPreferenceTest {
        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 @@ class SupervisionPromoFooterPreferenceTest {

            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!!