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

Commit 9e393c0f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Start home on empty display when user unlock the device"

parents 6dd66b82 d7aa077f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1056,7 +1056,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
        }

        @Override
        public void onUserUnlocking(@NonNull TargetUser user) {
        public void onUserUnlocked(@NonNull TargetUser user) {
            synchronized (mService.getGlobalLock()) {
                mService.mTaskSupervisor.onUserUnlocked(user.getUserIdentifier());
            }
+14 −7
Original line number Diff line number Diff line
@@ -186,7 +186,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
    private static final int RESTART_ACTIVITY_PROCESS_TIMEOUT_MSG = FIRST_SUPERVISOR_STACK_MSG + 13;
    private static final int REPORT_MULTI_WINDOW_MODE_CHANGED_MSG = FIRST_SUPERVISOR_STACK_MSG + 14;
    private static final int REPORT_PIP_MODE_CHANGED_MSG = FIRST_SUPERVISOR_STACK_MSG + 15;
    private static final int REPORT_HOME_CHANGED_MSG = FIRST_SUPERVISOR_STACK_MSG + 16;
    private static final int START_HOME_MSG = FIRST_SUPERVISOR_STACK_MSG + 16;
    private static final int TOP_RESUMED_STATE_LOSS_TIMEOUT_MSG = FIRST_SUPERVISOR_STACK_MSG + 17;

    // Used to indicate that windows of activities should be preserved during the resize.
@@ -446,6 +446,9 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
        // unlocked.
        mPersisterQueue.startPersisting();
        mLaunchParamsPersister.onUnlockUser(userId);

        // Need to launch home again for those displays that do not have encryption aware home app.
        scheduleStartHome("userUnlocked");
    }

    public ActivityMetricsLogger getActivityMetricsLogger() {
@@ -956,13 +959,17 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {

    void updateHomeProcess(WindowProcessController app) {
        if (app != null && mService.mHomeProcess != app) {
            if (!mHandler.hasMessages(REPORT_HOME_CHANGED_MSG)) {
                mHandler.sendEmptyMessage(REPORT_HOME_CHANGED_MSG);
            }
            scheduleStartHome("homeChanged");
            mService.mHomeProcess = app;
        }
    }

    private void scheduleStartHome(String reason) {
        if (!mHandler.hasMessages(START_HOME_MSG)) {
            mHandler.obtainMessage(START_HOME_MSG, reason).sendToTarget();
        }
    }

    private void logIfTransactionTooLarge(Intent intent, Bundle icicle) {
        int extrasSize = 0;
        if (intent != null) {
@@ -2473,11 +2480,11 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
                        handleLaunchTaskBehindCompleteLocked(r);
                    }
                } break;
                case REPORT_HOME_CHANGED_MSG: {
                    mHandler.removeMessages(REPORT_HOME_CHANGED_MSG);
                case START_HOME_MSG: {
                    mHandler.removeMessages(START_HOME_MSG);

                    // Start home activities on displays with no activities.
                    mRootWindowContainer.startHomeOnEmptyDisplays("homeChanged");
                    mRootWindowContainer.startHomeOnEmptyDisplays((String) msg.obj);
                } break;
                case TOP_RESUMED_STATE_LOSS_TIMEOUT_MSG: {
                    final ActivityRecord r = (ActivityRecord) msg.obj;
+15 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import static org.junit.Assert.assertNull;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.timeout;

import android.app.WaitResult;
import android.content.pm.ActivityInfo;
@@ -45,6 +46,8 @@ import androidx.test.filters.MediumTest;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.concurrent.TimeUnit;

/**
 * Tests for the {@link ActivityTaskSupervisor} class.
 *
@@ -190,4 +193,16 @@ public class ActivityTaskSupervisorTests extends WindowTestsBase {

        assertThat(allowedOnUntrusted).isFalse();
    }

    /**
     * We need to launch home again after user unlocked for those displays that do not have
     * encryption aware home app.
     */
    @Test
    public void testStartHomeAfterUserUnlocked() {
        mSupervisor.onUserUnlocked(0);
        waitHandlerIdle(mAtm.mH);
        verify(mRootWindowContainer, timeout(TimeUnit.SECONDS.toMillis(10)))
                .startHomeOnEmptyDisplays("userUnlocked");
    }
}