Loading res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -14536,6 +14536,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] --> src/com/android/settings/supervision/SupervisionPromoFooterPreference.kt +5 −4 Original line number Diff line number Diff line Loading @@ -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( Loading Loading @@ -86,8 +87,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() } Loading tests/robotests/src/com/android/settings/supervision/SupervisionPromoFooterPreferenceTest.kt +10 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading Loading @@ -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!! Loading Loading
res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -14536,6 +14536,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] -->
src/com/android/settings/supervision/SupervisionPromoFooterPreference.kt +5 −4 Original line number Diff line number Diff line Loading @@ -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( Loading Loading @@ -86,8 +87,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() } Loading
tests/robotests/src/com/android/settings/supervision/SupervisionPromoFooterPreferenceTest.kt +10 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading Loading @@ -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!! Loading