Loading packages/SystemUI/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,7 @@ android_library { "androidx.test.rules", "androidx.test.uiautomator", "mockito-target-extended-minus-junit4", "androidx.test.ext.junit", "testables", "truth-prebuilt", "monet", Loading packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java +18 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.RemoteException; import android.util.Log; import android.window.OnBackInvokedCallback; import android.window.OnBackInvokedDispatcher; import androidx.annotation.NonNull; import androidx.annotation.Nullable; Loading Loading @@ -59,6 +61,7 @@ public class CreateUserActivity extends Activity { private final ActivityStarter mActivityStarter; private Dialog mSetupUserDialog; private final OnBackInvokedCallback mBackCallback = this::onBackInvoked; @Inject public CreateUserActivity(UserCreator userCreator, Loading @@ -82,6 +85,10 @@ public class CreateUserActivity extends Activity { mSetupUserDialog = createDialog(); mSetupUserDialog.show(); getOnBackInvokedDispatcher().registerOnBackInvokedCallback( OnBackInvokedDispatcher.PRIORITY_DEFAULT, mBackCallback); } @Override Loading Loading @@ -125,10 +132,20 @@ public class CreateUserActivity extends Activity { @Override public void onBackPressed() { super.onBackPressed(); onBackInvoked(); } private void onBackInvoked() { if (mSetupUserDialog != null) { mSetupUserDialog.dismiss(); } finish(); } @Override protected void onDestroy() { getOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(mBackCallback); super.onDestroy(); } private void addUserNow(String userName, Drawable userIcon) { Loading packages/SystemUI/tests/AndroidManifest.xml +6 −0 Original line number Diff line number Diff line Loading @@ -106,6 +106,12 @@ android:finishOnCloseSystemDialogs="true" android:excludeFromRecents="true" /> <activity android:name=".user.CreateUserActivityTest$CreateUserActivityTestable" android:exported="false" android:theme="@style/Theme.SystemUI.Dialog.Alert" android:finishOnCloseSystemDialogs="true" android:excludeFromRecents="true" /> <provider android:name="androidx.startup.InitializationProvider" tools:replace="android:authorities" Loading packages/SystemUI/tests/src/com/android/systemui/user/CreateUserActivityTest.kt 0 → 100644 +55 −0 Original line number Diff line number Diff line package com.android.systemui.user import android.app.Dialog import android.testing.AndroidTestingRunner import android.testing.TestableLooper import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.nullable import com.android.systemui.util.mockito.whenever import com.google.common.truth.Truth.assertThat import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith @RunWith(AndroidTestingRunner::class) @SmallTest @TestableLooper.RunWithLooper class CreateUserActivityTest : SysuiTestCase() { open class CreateUserActivityTestable : CreateUserActivity( /* userCreator = */ mock(), /* editUserInfoController = */ mock { val dialog: Dialog = mock() whenever( createDialog( /* activity = */ nullable(), /* activityStarter = */ nullable(), /* oldUserIcon = */ nullable(), /* defaultUserName = */ nullable(), /* title = */ nullable(), /* successCallback = */ nullable(), /* cancelCallback = */ nullable() ) ) .thenReturn(dialog) }, /* activityManager = */ mock(), /* activityStarter = */ mock(), ) @get:Rule val activityRule = ActivityScenarioRule(CreateUserActivityTestable::class.java) @Test fun onBackPressed_finishActivity() { activityRule.scenario.onActivity { activity -> assertThat(activity.isFinishing).isFalse() activity.onBackPressed() assertThat(activity.isFinishing).isTrue() } } } Loading
packages/SystemUI/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -223,6 +223,7 @@ android_library { "androidx.test.rules", "androidx.test.uiautomator", "mockito-target-extended-minus-junit4", "androidx.test.ext.junit", "testables", "truth-prebuilt", "monet", Loading
packages/SystemUI/src/com/android/systemui/user/CreateUserActivity.java +18 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.RemoteException; import android.util.Log; import android.window.OnBackInvokedCallback; import android.window.OnBackInvokedDispatcher; import androidx.annotation.NonNull; import androidx.annotation.Nullable; Loading Loading @@ -59,6 +61,7 @@ public class CreateUserActivity extends Activity { private final ActivityStarter mActivityStarter; private Dialog mSetupUserDialog; private final OnBackInvokedCallback mBackCallback = this::onBackInvoked; @Inject public CreateUserActivity(UserCreator userCreator, Loading @@ -82,6 +85,10 @@ public class CreateUserActivity extends Activity { mSetupUserDialog = createDialog(); mSetupUserDialog.show(); getOnBackInvokedDispatcher().registerOnBackInvokedCallback( OnBackInvokedDispatcher.PRIORITY_DEFAULT, mBackCallback); } @Override Loading Loading @@ -125,10 +132,20 @@ public class CreateUserActivity extends Activity { @Override public void onBackPressed() { super.onBackPressed(); onBackInvoked(); } private void onBackInvoked() { if (mSetupUserDialog != null) { mSetupUserDialog.dismiss(); } finish(); } @Override protected void onDestroy() { getOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(mBackCallback); super.onDestroy(); } private void addUserNow(String userName, Drawable userIcon) { Loading
packages/SystemUI/tests/AndroidManifest.xml +6 −0 Original line number Diff line number Diff line Loading @@ -106,6 +106,12 @@ android:finishOnCloseSystemDialogs="true" android:excludeFromRecents="true" /> <activity android:name=".user.CreateUserActivityTest$CreateUserActivityTestable" android:exported="false" android:theme="@style/Theme.SystemUI.Dialog.Alert" android:finishOnCloseSystemDialogs="true" android:excludeFromRecents="true" /> <provider android:name="androidx.startup.InitializationProvider" tools:replace="android:authorities" Loading
packages/SystemUI/tests/src/com/android/systemui/user/CreateUserActivityTest.kt 0 → 100644 +55 −0 Original line number Diff line number Diff line package com.android.systemui.user import android.app.Dialog import android.testing.AndroidTestingRunner import android.testing.TestableLooper import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.nullable import com.android.systemui.util.mockito.whenever import com.google.common.truth.Truth.assertThat import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith @RunWith(AndroidTestingRunner::class) @SmallTest @TestableLooper.RunWithLooper class CreateUserActivityTest : SysuiTestCase() { open class CreateUserActivityTestable : CreateUserActivity( /* userCreator = */ mock(), /* editUserInfoController = */ mock { val dialog: Dialog = mock() whenever( createDialog( /* activity = */ nullable(), /* activityStarter = */ nullable(), /* oldUserIcon = */ nullable(), /* defaultUserName = */ nullable(), /* title = */ nullable(), /* successCallback = */ nullable(), /* cancelCallback = */ nullable() ) ) .thenReturn(dialog) }, /* activityManager = */ mock(), /* activityStarter = */ mock(), ) @get:Rule val activityRule = ActivityScenarioRule(CreateUserActivityTestable::class.java) @Test fun onBackPressed_finishActivity() { activityRule.scenario.onActivity { activity -> assertThat(activity.isFinishing).isFalse() activity.onBackPressed() assertThat(activity.isFinishing).isTrue() } } }