Merge "Add support for Predictive Back in CreateUserActivity" into tm-qpr-dev am: 78b5de4a42
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20257566 Change-Id: I520bce546449d17df380b6fe2f2a54468c0d6bf1 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -223,6 +223,7 @@ android_library {
|
||||
"androidx.test.rules",
|
||||
"androidx.test.uiautomator_uiautomator",
|
||||
"mockito-target-extended-minus-junit4",
|
||||
"androidx.test.ext.junit",
|
||||
"testables",
|
||||
"truth-prebuilt",
|
||||
"monet",
|
||||
|
||||
@@ -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;
|
||||
@@ -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,
|
||||
@@ -82,6 +85,10 @@ public class CreateUserActivity extends Activity {
|
||||
|
||||
mSetupUserDialog = createDialog();
|
||||
mSetupUserDialog.show();
|
||||
|
||||
getOnBackInvokedDispatcher().registerOnBackInvokedCallback(
|
||||
OnBackInvokedDispatcher.PRIORITY_DEFAULT,
|
||||
mBackCallback);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -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) {
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
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()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user