Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62c75293 authored by Omar Miatello's avatar Omar Miatello Committed by Automerger Merge Worker
Browse files

Merge "Add support for Predictive Back in CreateUserActivity" into tm-qpr-dev...

Merge "Add support for Predictive Back in CreateUserActivity" into tm-qpr-dev am: 78b5de4a am: bfb8c685

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20257566



Change-Id: I8996821b473012fda827bbebdcebf34f9a997c33
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 40b71a4a bfb8c685
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -224,6 +224,7 @@ android_library {
        "androidx.test.rules",
        "androidx.test.uiautomator_uiautomator",
        "mockito-target-extended-minus-junit4",
        "androidx.test.ext.junit",
        "testables",
        "truth-prebuilt",
        "monet",
+18 −1
Original line number Diff line number Diff line
@@ -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) {
+6 −0
Original line number Diff line number Diff line
@@ -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"
+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()
        }
    }
}