Fix a potential crash when calculate system gesture exclusion

When calculate the exclude region during the swipe gesture. There is a
chance to meet index out of bounds exception when traverse all windows
to assemble the gesture exclusion rects. We add a WM lock to protect
the window state correctly.

Bug: 135298121
Test: atest DisplayPolicyTests
      atest DisplayContentTests

Change-Id: Ib71134d97e43ac91ce6713dd3dbf30280c44c574
(cherry picked from commit 3cf3e56ad9)
This commit is contained in:
Jeff Chang
2019-06-18 11:51:25 +08:00
parent 6e4e9817b8
commit 1c459ef9e7

View File

@@ -478,8 +478,10 @@ public class DisplayPolicy {
@Override
public void onSwipeFromRight() {
final Region excludedRegion =
mDisplayContent.calculateSystemGestureExclusion();
final Region excludedRegion;
synchronized (mLock) {
excludedRegion = mDisplayContent.calculateSystemGestureExclusion();
}
final boolean sideAllowed = mNavigationBarAlwaysShowOnSideGesture
|| mNavigationBarPosition == NAV_BAR_RIGHT;
if (mNavigationBar != null && sideAllowed
@@ -490,8 +492,10 @@ public class DisplayPolicy {
@Override
public void onSwipeFromLeft() {
final Region excludedRegion =
mDisplayContent.calculateSystemGestureExclusion();
final Region excludedRegion;
synchronized (mLock) {
excludedRegion = mDisplayContent.calculateSystemGestureExclusion();
}
final boolean sideAllowed = mNavigationBarAlwaysShowOnSideGesture
|| mNavigationBarPosition == NAV_BAR_LEFT;
if (mNavigationBar != null && sideAllowed