Merge "Fix unexpected closure of the bubble." into rvc-dev
This commit is contained in:
@@ -1436,15 +1436,6 @@ class Task extends WindowContainer<WindowContainer> {
|
||||
mAtmService.getTaskChangeNotificationController().notifyTaskStackChanged();
|
||||
}
|
||||
|
||||
final boolean isRootTask = isRootTask();
|
||||
if (isRootTask) {
|
||||
final DisplayContent display = getDisplayContent();
|
||||
if (display.isSingleTaskInstance()) {
|
||||
mAtmService.notifySingleTaskDisplayEmpty(display.mDisplayId);
|
||||
}
|
||||
display.mDisplayContent.setLayoutNeeded();
|
||||
}
|
||||
|
||||
if (hasChild()) {
|
||||
updateEffectiveIntent();
|
||||
|
||||
@@ -1465,7 +1456,7 @@ class Task extends WindowContainer<WindowContainer> {
|
||||
} else if (!mReuseTask && !mCreatedByOrganizer) {
|
||||
// Remove entire task if it doesn't have any activity left and it isn't marked for reuse
|
||||
// or created by task organizer.
|
||||
if (!isRootTask) {
|
||||
if (!isRootTask()) {
|
||||
getStack().removeChild(this, reason);
|
||||
}
|
||||
EventLogTags.writeWmTaskRemoved(mTaskId,
|
||||
@@ -2817,6 +2808,10 @@ class Task extends WindowContainer<WindowContainer> {
|
||||
if (DEBUG_STACK) Slog.i(TAG, "removeTask: removing taskId=" + mTaskId);
|
||||
EventLogTags.writeWmTaskRemoved(mTaskId, "removeTask");
|
||||
|
||||
if (mDisplayContent != null && mDisplayContent.isSingleTaskInstance()) {
|
||||
mAtmService.notifySingleTaskDisplayEmpty(mDisplayContent.mDisplayId);
|
||||
}
|
||||
|
||||
// If applicable let the TaskOrganizer know the Task is vanishing.
|
||||
setTaskOrganizer(null);
|
||||
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
<activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityViewTestActivity" />
|
||||
<activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityInActivityView"
|
||||
android:resizeableActivity="true" />
|
||||
<activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityLaunchesNewActivityInActivityView"
|
||||
android:resizeableActivity="true" />
|
||||
<activity android:name="com.android.server.wm.TaskStackChangedListenerTest$LandscapeActivity"
|
||||
android:screenOrientation="sensorLandscape"
|
||||
android:showWhenLocked="true"
|
||||
|
||||
@@ -299,6 +299,20 @@ public class TaskStackChangedListenerTest {
|
||||
waitForCallback(singleTaskDisplayDrawnLatch);
|
||||
}
|
||||
|
||||
public static class ActivityLaunchesNewActivityInActivityView extends TestActivity {
|
||||
private boolean mActivityBLaunched = false;
|
||||
|
||||
@Override
|
||||
protected void onPostResume() {
|
||||
super.onPostResume();
|
||||
if (mActivityBLaunched) {
|
||||
return;
|
||||
}
|
||||
mActivityBLaunched = true;
|
||||
startActivity(new Intent(this, ActivityB.class));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSingleTaskDisplayEmpty() throws Exception {
|
||||
final Instrumentation instrumentation = getInstrumentation();
|
||||
@@ -335,13 +349,20 @@ public class TaskStackChangedListenerTest {
|
||||
});
|
||||
waitForCallback(activityViewReadyLatch);
|
||||
|
||||
// 1. start ActivityLaunchesNewActivityInActivityView in an ActivityView
|
||||
// 2. ActivityLaunchesNewActivityInActivityView launches ActivityB
|
||||
// 3. ActivityB finishes self.
|
||||
// 4. Verify ITaskStackListener#onSingleTaskDisplayEmpty is not called yet.
|
||||
final Context context = instrumentation.getContext();
|
||||
Intent intent = new Intent(context, ActivityInActivityView.class);
|
||||
Intent intent = new Intent(context, ActivityLaunchesNewActivityInActivityView.class);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||
activityView.startActivity(intent);
|
||||
waitForCallback(singleTaskDisplayDrawnLatch);
|
||||
UiDevice.getInstance(getInstrumentation()).waitForIdle();
|
||||
assertEquals(1, singleTaskDisplayEmptyLatch.getCount());
|
||||
|
||||
// 5. Release the container, and ActivityLaunchesNewActivityInActivityView finishes.
|
||||
// 6. Verify ITaskStackListener#onSingleTaskDisplayEmpty is called.
|
||||
activityView.release();
|
||||
waitForCallback(activityViewDestroyedLatch);
|
||||
waitForCallback(singleTaskDisplayEmptyLatch);
|
||||
|
||||
Reference in New Issue
Block a user