Loading src/com/android/settings/supervision/ConfirmSupervisionCredentialsActivity.kt +6 −4 Original line number Diff line number Diff line Loading @@ -102,8 +102,10 @@ open class ConfirmSupervisionCredentialsActivity : FragmentActivity() { val activityManager = getSystemService(ActivityManager::class.java) if (!activityManager.startProfile(supervisingUser)) { Log.w(SupervisionLog.TAG, "Unable to start supervising user, cannot verify credentials.") Log.w( SupervisionLog.TAG, "Unable to start supervising user, cannot verify credentials.", ) setResult(RESULT_CANCELED) finish() return Loading @@ -123,7 +125,7 @@ open class ConfirmSupervisionCredentialsActivity : FragmentActivity() { CancellationSignal(), ContextCompat.getMainExecutor(this), mAuthenticationCallback, userId userId, ) } Loading src/com/android/settings/supervision/SupervisionChangePinPreference.kt +15 −3 Original line number Diff line number Diff line Loading @@ -17,22 +17,34 @@ package com.android.settings.supervision import android.content.Context import android.content.Intent import android.util.Log import com.android.settings.R import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.supervision.SupervisionLog /** * Setting on PIN Management screen (Settings > Supervision > Manage Pin) that invokes the flow to * update the existing device supervision PIN. */ class SupervisionChangePinPreference : PreferenceMetadata { override val key: String get() = "supervision_change_pin" get() = KEY override val title: Int get() = R.string.supervision_change_pin_preference_title override fun intent(context: Context): Intent? { // TODO(b/393450922): implement handling of change pin intent. return super.intent(context) val supervisionHelper = SupervisionHelper.getInstance(context) if (!supervisionHelper.isSupervisingCredentialSet()) { Log.w(SupervisionLog.TAG, "Supervising credential not set") return null } return Intent(context, SupervisionCredentialProxyActivity::class.java) } companion object { const val KEY = "supervision_change_pin" } } tests/robotests/src/com/android/settings/supervision/SupervisionChangePinPreferenceTest.kt +54 −5 Original line number Diff line number Diff line Loading @@ -15,23 +15,72 @@ */ package com.android.settings.supervision import android.content.Context import android.app.KeyguardManager import android.content.ComponentName import android.content.ContextWrapper import android.content.pm.UserInfo import android.os.UserManager import android.os.UserManager.USER_TYPE_PROFILE_SUPERVISING import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settings.R import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.kotlin.mock import org.mockito.kotlin.whenever @RunWith(AndroidJUnit4::class) class SupervisionChangePinPreferenceTest { private val context: Context = ApplicationProvider.getApplicationContext() private val mockUserManager = mock<UserManager>() private val mockKeyguardManager = mock<KeyguardManager>() private val supervisionChangePinPreference = SupervisionChangePinPreference() private val context = object : ContextWrapper(ApplicationProvider.getApplicationContext()) { override fun getSystemService(name: String): Any = when (name) { getSystemServiceName(UserManager::class.java) -> mockUserManager getSystemServiceName(KeyguardManager::class.java) -> mockKeyguardManager else -> super.getSystemService(name) } } private val preference = SupervisionChangePinPreference() @Before fun setUp() { SupervisionHelper.sInstance = null } @Test fun getTitle() { assertThat(supervisionChangePinPreference.title) .isEqualTo(R.string.supervision_change_pin_preference_title) assertThat(preference.title).isEqualTo(R.string.supervision_change_pin_preference_title) } @Test fun getIntent_supervisingCredentialSet() { whenever(mockUserManager.users).thenReturn(listOf(SUPERVISING_USER_INFO)) whenever(mockKeyguardManager.isDeviceSecure(SUPERVISING_USER_ID)).thenReturn(true) assertThat(preference.intent(context)?.component) .isEqualTo(ComponentName(context, SupervisionCredentialProxyActivity::class.java)) } @Test fun getIntent_supervisingCredentialNotSet() { assertThat(preference.intent(context)?.component).isNull() } private companion object { const val SUPERVISING_USER_ID = 5 val SUPERVISING_USER_INFO = UserInfo( SUPERVISING_USER_ID, /* name */ "supervising", /* iconPath */ "", /* flags */ 0, USER_TYPE_PROFILE_SUPERVISING, ) } } Loading
src/com/android/settings/supervision/ConfirmSupervisionCredentialsActivity.kt +6 −4 Original line number Diff line number Diff line Loading @@ -102,8 +102,10 @@ open class ConfirmSupervisionCredentialsActivity : FragmentActivity() { val activityManager = getSystemService(ActivityManager::class.java) if (!activityManager.startProfile(supervisingUser)) { Log.w(SupervisionLog.TAG, "Unable to start supervising user, cannot verify credentials.") Log.w( SupervisionLog.TAG, "Unable to start supervising user, cannot verify credentials.", ) setResult(RESULT_CANCELED) finish() return Loading @@ -123,7 +125,7 @@ open class ConfirmSupervisionCredentialsActivity : FragmentActivity() { CancellationSignal(), ContextCompat.getMainExecutor(this), mAuthenticationCallback, userId userId, ) } Loading
src/com/android/settings/supervision/SupervisionChangePinPreference.kt +15 −3 Original line number Diff line number Diff line Loading @@ -17,22 +17,34 @@ package com.android.settings.supervision import android.content.Context import android.content.Intent import android.util.Log import com.android.settings.R import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.supervision.SupervisionLog /** * Setting on PIN Management screen (Settings > Supervision > Manage Pin) that invokes the flow to * update the existing device supervision PIN. */ class SupervisionChangePinPreference : PreferenceMetadata { override val key: String get() = "supervision_change_pin" get() = KEY override val title: Int get() = R.string.supervision_change_pin_preference_title override fun intent(context: Context): Intent? { // TODO(b/393450922): implement handling of change pin intent. return super.intent(context) val supervisionHelper = SupervisionHelper.getInstance(context) if (!supervisionHelper.isSupervisingCredentialSet()) { Log.w(SupervisionLog.TAG, "Supervising credential not set") return null } return Intent(context, SupervisionCredentialProxyActivity::class.java) } companion object { const val KEY = "supervision_change_pin" } }
tests/robotests/src/com/android/settings/supervision/SupervisionChangePinPreferenceTest.kt +54 −5 Original line number Diff line number Diff line Loading @@ -15,23 +15,72 @@ */ package com.android.settings.supervision import android.content.Context import android.app.KeyguardManager import android.content.ComponentName import android.content.ContextWrapper import android.content.pm.UserInfo import android.os.UserManager import android.os.UserManager.USER_TYPE_PROFILE_SUPERVISING import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settings.R import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.kotlin.mock import org.mockito.kotlin.whenever @RunWith(AndroidJUnit4::class) class SupervisionChangePinPreferenceTest { private val context: Context = ApplicationProvider.getApplicationContext() private val mockUserManager = mock<UserManager>() private val mockKeyguardManager = mock<KeyguardManager>() private val supervisionChangePinPreference = SupervisionChangePinPreference() private val context = object : ContextWrapper(ApplicationProvider.getApplicationContext()) { override fun getSystemService(name: String): Any = when (name) { getSystemServiceName(UserManager::class.java) -> mockUserManager getSystemServiceName(KeyguardManager::class.java) -> mockKeyguardManager else -> super.getSystemService(name) } } private val preference = SupervisionChangePinPreference() @Before fun setUp() { SupervisionHelper.sInstance = null } @Test fun getTitle() { assertThat(supervisionChangePinPreference.title) .isEqualTo(R.string.supervision_change_pin_preference_title) assertThat(preference.title).isEqualTo(R.string.supervision_change_pin_preference_title) } @Test fun getIntent_supervisingCredentialSet() { whenever(mockUserManager.users).thenReturn(listOf(SUPERVISING_USER_INFO)) whenever(mockKeyguardManager.isDeviceSecure(SUPERVISING_USER_ID)).thenReturn(true) assertThat(preference.intent(context)?.component) .isEqualTo(ComponentName(context, SupervisionCredentialProxyActivity::class.java)) } @Test fun getIntent_supervisingCredentialNotSet() { assertThat(preference.intent(context)?.component).isNull() } private companion object { const val SUPERVISING_USER_ID = 5 val SUPERVISING_USER_INFO = UserInfo( SUPERVISING_USER_ID, /* name */ "supervising", /* iconPath */ "", /* flags */ 0, USER_TYPE_PROFILE_SUPERVISING, ) } }