Clear the focused app after reset adjacent TaskFragments

The TaskFragments were stacked when the device folded. So, the
focused app was occluded and became invisible. In that case,
there was no focused window and ANR happened.

Clear the focused app if the focused app became invisible after
resetting the adjacent TaskFragments.

Bug: 255631222
Test: locally verified by changing display size
Change-Id: I3048824d6df8b63ea9a0f46e9167d9e5fc0da580
This commit is contained in:
Louis Chang
2022-11-15 02:22:39 +00:00
parent 6cc66e4581
commit c4b1aa4733

View File

@@ -975,6 +975,14 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub
tf1.setAdjacentTaskFragment(tf2);
effects |= TRANSACT_EFFECTS_LIFECYCLE;
// Clear the focused app if the focused app is no longer visible after reset the
// adjacent TaskFragments.
if (tf2 == null && tf1.getDisplayContent().mFocusedApp != null
&& tf1.hasChild(tf1.getDisplayContent().mFocusedApp)
&& !tf1.shouldBeVisible(null /* starting */)) {
tf1.getDisplayContent().setFocusedApp(null);
}
final Bundle bundle = hop.getLaunchOptions();
final WindowContainerTransaction.TaskFragmentAdjacentParams adjacentParams =
bundle != null ? new WindowContainerTransaction.TaskFragmentAdjacentParams(