Loading src/com/android/settings/supervision/SetupSupervisionActivity.kt +15 −2 Original line number Diff line number Diff line Loading @@ -58,11 +58,24 @@ class SetupSupervisionActivity : FragmentActivity() { public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (isSupervisingCredentialSet) { setResult(RESULT_CANCELED) finish() } if (savedInstanceState == null) { enableSupervision() } } public override fun onResume() { super.onResume() if (isSupervisingCredentialSet) { setResult(RESULT_OK) finish() } } @RequiresPermission(anyOf = [CREATE_USERS, MANAGE_USERS]) private fun enableSupervision() { val userManager = getSystemService(UserManager::class.java) Loading Loading @@ -165,7 +178,7 @@ class SetupSupervisionActivity : FragmentActivity() { } companion object { private const val REQUEST_CODE_SET_SUPERVISION_LOCK = 0 private const val REQUEST_CODE_SET_PIN_RECOVERY = 1 private const val REQUEST_CODE_SET_SUPERVISION_LOCK = 1000 private const val REQUEST_CODE_SET_PIN_RECOVERY = 1001 } } tests/robotests/src/com/android/settings/supervision/SetupSupervisionActivityTest.kt +36 −3 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ class SetupSupervisionActivityTest { mockUserManager.stub { on { users } doReturn listOf(SUPERVISING_USER_INFO) } mockActivityManager.stub { on { startProfile(any()) } doReturn true } shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, true) shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, false) } @Test Loading @@ -80,6 +80,7 @@ class SetupSupervisionActivityTest { on { users } doReturn emptyList() on { createUser(any(), any(), any()) } doReturn SUPERVISING_USER_INFO } shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, true) ActivityScenario.launch(SetupSupervisionActivity::class.java).use { scenario -> scenario.onActivity { activity -> Loading Loading @@ -135,12 +136,42 @@ class SetupSupervisionActivityTest { } } @Test fun onCreate_existingSupervisingLock_finishes() { shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, true) ActivityScenario.launchActivityForResult(SetupSupervisionActivity::class.java).use { scenario -> assertThat(scenario.state).isEqualTo(Lifecycle.State.DESTROYED) assertThat(scenario.result.resultCode).isEqualTo(RESULT_CANCELED) } } @Test fun onResume_existingSupervisingLock_finishes() { shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, false) ActivityScenario.launchActivityForResult(SetupSupervisionActivity::class.java).use { scenario -> scenario.moveToState(Lifecycle.State.STARTED) shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, true) scenario.moveToState(Lifecycle.State.RESUMED) scenario.onActivity { activity -> assertThat(activity.isFinishing).isTrue() } assertThat(scenario.result.resultCode).isEqualTo(RESULT_OK) } } @Test @EnableFlags(Flags.FLAG_ENABLE_SUPERVISION_PIN_RECOVERY_SCREEN) fun onSetLockResult_startsRecoveryActivity() { shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, false) ActivityScenario.launch(SetupSupervisionActivity::class.java).use { scenario -> scenario.onActivity { activity -> val shadowActivity = shadowOf(activity) shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, true) shadowActivity.receiveResult( shadowActivity.nextStartedActivityForResult.intent, RESULT_OK, Loading Loading @@ -178,8 +209,6 @@ class SetupSupervisionActivityTest { @Test fun onSetLockResult_supervisingUserNotSecure_canceled() { shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, false) ActivityScenario.launchActivityForResult(SetupSupervisionActivity::class.java).use { scenario -> scenario.onActivity { activity -> Loading @@ -200,16 +229,20 @@ class SetupSupervisionActivityTest { @Test @EnableFlags(Flags.FLAG_ENABLE_SUPERVISION_PIN_RECOVERY_SCREEN) fun onPinRecoveryResult_finishesOk() { shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, false) ActivityScenario.launchActivityForResult(SetupSupervisionActivity::class.java).use { scenario -> scenario.onActivity { activity -> val shadowActivity = shadowOf(activity) shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, true) // Set PIN result. shadowActivity.receiveResult( shadowActivity.nextStartedActivityForResult.intent, RESULT_OK, null, ) // PIN recovery result. shadowActivity.receiveResult( shadowActivity.nextStartedActivityForResult.intent, Loading Loading
src/com/android/settings/supervision/SetupSupervisionActivity.kt +15 −2 Original line number Diff line number Diff line Loading @@ -58,11 +58,24 @@ class SetupSupervisionActivity : FragmentActivity() { public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (isSupervisingCredentialSet) { setResult(RESULT_CANCELED) finish() } if (savedInstanceState == null) { enableSupervision() } } public override fun onResume() { super.onResume() if (isSupervisingCredentialSet) { setResult(RESULT_OK) finish() } } @RequiresPermission(anyOf = [CREATE_USERS, MANAGE_USERS]) private fun enableSupervision() { val userManager = getSystemService(UserManager::class.java) Loading Loading @@ -165,7 +178,7 @@ class SetupSupervisionActivity : FragmentActivity() { } companion object { private const val REQUEST_CODE_SET_SUPERVISION_LOCK = 0 private const val REQUEST_CODE_SET_PIN_RECOVERY = 1 private const val REQUEST_CODE_SET_SUPERVISION_LOCK = 1000 private const val REQUEST_CODE_SET_PIN_RECOVERY = 1001 } }
tests/robotests/src/com/android/settings/supervision/SetupSupervisionActivityTest.kt +36 −3 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ class SetupSupervisionActivityTest { mockUserManager.stub { on { users } doReturn listOf(SUPERVISING_USER_INFO) } mockActivityManager.stub { on { startProfile(any()) } doReturn true } shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, true) shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, false) } @Test Loading @@ -80,6 +80,7 @@ class SetupSupervisionActivityTest { on { users } doReturn emptyList() on { createUser(any(), any(), any()) } doReturn SUPERVISING_USER_INFO } shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, true) ActivityScenario.launch(SetupSupervisionActivity::class.java).use { scenario -> scenario.onActivity { activity -> Loading Loading @@ -135,12 +136,42 @@ class SetupSupervisionActivityTest { } } @Test fun onCreate_existingSupervisingLock_finishes() { shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, true) ActivityScenario.launchActivityForResult(SetupSupervisionActivity::class.java).use { scenario -> assertThat(scenario.state).isEqualTo(Lifecycle.State.DESTROYED) assertThat(scenario.result.resultCode).isEqualTo(RESULT_CANCELED) } } @Test fun onResume_existingSupervisingLock_finishes() { shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, false) ActivityScenario.launchActivityForResult(SetupSupervisionActivity::class.java).use { scenario -> scenario.moveToState(Lifecycle.State.STARTED) shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, true) scenario.moveToState(Lifecycle.State.RESUMED) scenario.onActivity { activity -> assertThat(activity.isFinishing).isTrue() } assertThat(scenario.result.resultCode).isEqualTo(RESULT_OK) } } @Test @EnableFlags(Flags.FLAG_ENABLE_SUPERVISION_PIN_RECOVERY_SCREEN) fun onSetLockResult_startsRecoveryActivity() { shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, false) ActivityScenario.launch(SetupSupervisionActivity::class.java).use { scenario -> scenario.onActivity { activity -> val shadowActivity = shadowOf(activity) shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, true) shadowActivity.receiveResult( shadowActivity.nextStartedActivityForResult.intent, RESULT_OK, Loading Loading @@ -178,8 +209,6 @@ class SetupSupervisionActivityTest { @Test fun onSetLockResult_supervisingUserNotSecure_canceled() { shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, false) ActivityScenario.launchActivityForResult(SetupSupervisionActivity::class.java).use { scenario -> scenario.onActivity { activity -> Loading @@ -200,16 +229,20 @@ class SetupSupervisionActivityTest { @Test @EnableFlags(Flags.FLAG_ENABLE_SUPERVISION_PIN_RECOVERY_SCREEN) fun onPinRecoveryResult_finishesOk() { shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, false) ActivityScenario.launchActivityForResult(SetupSupervisionActivity::class.java).use { scenario -> scenario.onActivity { activity -> val shadowActivity = shadowOf(activity) shadowKeyguardManager.setIsDeviceSecure(SUPERVISING_USER_ID, true) // Set PIN result. shadowActivity.receiveResult( shadowActivity.nextStartedActivityForResult.intent, RESULT_OK, null, ) // PIN recovery result. shadowActivity.receiveResult( shadowActivity.nextStartedActivityForResult.intent, Loading