Loading services/core/java/com/android/server/wm/ActivityTaskManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -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()); } Loading services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +14 −7 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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() { Loading Loading @@ -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) { Loading Loading @@ -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; Loading services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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. * Loading Loading @@ -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"); } } Loading
services/core/java/com/android/server/wm/ActivityTaskManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -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()); } Loading
services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +14 −7 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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() { Loading Loading @@ -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) { Loading Loading @@ -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; Loading
services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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. * Loading Loading @@ -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"); } }