Merge "Fix no touch events on half of the split screen" into tm-dev am: 16fc7aa4f5
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17053279 Change-Id: Iee43593482dac7d53644257c44df714c386c2d60
This commit is contained in:
@@ -783,6 +783,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler,
|
|||||||
void finishEnterSplitScreen(SurfaceControl.Transaction t) {
|
void finishEnterSplitScreen(SurfaceControl.Transaction t) {
|
||||||
mSplitLayout.init();
|
mSplitLayout.init();
|
||||||
setDividerVisibility(true, t);
|
setDividerVisibility(true, t);
|
||||||
|
updateSurfaceBounds(mSplitLayout, t);
|
||||||
setSplitsVisible(true);
|
setSplitsVisible(true);
|
||||||
mShouldUpdateRecents = true;
|
mShouldUpdateRecents = true;
|
||||||
updateRecentTasksSplitPair();
|
updateRecentTasksSplitPair();
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import static org.mockito.Mockito.when;
|
|||||||
|
|
||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
|
import android.view.SurfaceControl;
|
||||||
import android.window.DisplayAreaInfo;
|
import android.window.DisplayAreaInfo;
|
||||||
import android.window.WindowContainerTransaction;
|
import android.window.WindowContainerTransaction;
|
||||||
|
|
||||||
@@ -112,7 +113,7 @@ public class StageCoordinatorTests extends ShellTestCase {
|
|||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mStageCoordinator = spy(createStageCoordinator(/* splitLayout */ null));
|
mStageCoordinator = spy(createStageCoordinator(mSplitLayout));
|
||||||
doNothing().when(mStageCoordinator).updateActivityOptions(any(), anyInt());
|
doNothing().when(mStageCoordinator).updateActivityOptions(any(), anyInt());
|
||||||
|
|
||||||
when(mSplitLayout.getBounds1()).thenReturn(mBounds1);
|
when(mSplitLayout.getBounds1()).thenReturn(mBounds1);
|
||||||
@@ -158,6 +159,9 @@ public class StageCoordinatorTests extends ShellTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDisplayAreaAppeared_initializesUnfoldControllers() {
|
public void testDisplayAreaAppeared_initializesUnfoldControllers() {
|
||||||
|
// Create a stage coordinator with null split layout to test layout init flow.
|
||||||
|
mStageCoordinator = createStageCoordinator(null /* splitLayout */);
|
||||||
|
|
||||||
mStageCoordinator.onDisplayAreaAppeared(mock(DisplayAreaInfo.class));
|
mStageCoordinator.onDisplayAreaAppeared(mock(DisplayAreaInfo.class));
|
||||||
|
|
||||||
verify(mMainUnfoldController).init();
|
verify(mMainUnfoldController).init();
|
||||||
@@ -166,7 +170,6 @@ public class StageCoordinatorTests extends ShellTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLayoutChanged_topLeftSplitPosition_updatesUnfoldStageBounds() {
|
public void testLayoutChanged_topLeftSplitPosition_updatesUnfoldStageBounds() {
|
||||||
mStageCoordinator = createStageCoordinator(mSplitLayout);
|
|
||||||
mStageCoordinator.setSideStagePosition(SPLIT_POSITION_TOP_OR_LEFT, null);
|
mStageCoordinator.setSideStagePosition(SPLIT_POSITION_TOP_OR_LEFT, null);
|
||||||
clearInvocations(mMainUnfoldController, mSideUnfoldController);
|
clearInvocations(mMainUnfoldController, mSideUnfoldController);
|
||||||
|
|
||||||
@@ -179,7 +182,6 @@ public class StageCoordinatorTests extends ShellTestCase {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testLayoutChanged_bottomRightSplitPosition_updatesUnfoldStageBounds() {
|
public void testLayoutChanged_bottomRightSplitPosition_updatesUnfoldStageBounds() {
|
||||||
mStageCoordinator = createStageCoordinator(mSplitLayout);
|
|
||||||
mStageCoordinator.setSideStagePosition(SPLIT_POSITION_BOTTOM_OR_RIGHT, null);
|
mStageCoordinator.setSideStagePosition(SPLIT_POSITION_BOTTOM_OR_RIGHT, null);
|
||||||
clearInvocations(mMainUnfoldController, mSideUnfoldController);
|
clearInvocations(mMainUnfoldController, mSideUnfoldController);
|
||||||
|
|
||||||
@@ -293,6 +295,13 @@ public class StageCoordinatorTests extends ShellTestCase {
|
|||||||
assertEquals(mStageCoordinator.getMainStagePosition(), SPLIT_POSITION_BOTTOM_OR_RIGHT);
|
assertEquals(mStageCoordinator.getMainStagePosition(), SPLIT_POSITION_BOTTOM_OR_RIGHT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFinishEnterSplitScreen_applySurfaceLayout() {
|
||||||
|
mStageCoordinator.finishEnterSplitScreen(new SurfaceControl.Transaction());
|
||||||
|
|
||||||
|
verify(mSplitLayout).applySurfaceChanges(any(), any(), any(), any(), any());
|
||||||
|
}
|
||||||
|
|
||||||
private StageCoordinator createStageCoordinator(SplitLayout splitLayout) {
|
private StageCoordinator createStageCoordinator(SplitLayout splitLayout) {
|
||||||
return new SplitTestUtils.TestStageCoordinator(mContext, DEFAULT_DISPLAY,
|
return new SplitTestUtils.TestStageCoordinator(mContext, DEFAULT_DISPLAY,
|
||||||
mSyncQueue, mRootTDAOrganizer, mTaskOrganizer, mMainStage, mSideStage,
|
mSyncQueue, mRootTDAOrganizer, mTaskOrganizer, mMainStage, mSideStage,
|
||||||
|
|||||||
Reference in New Issue
Block a user