Merge "Add test for move PiP upon Display change" into sc-dev
This commit is contained in:
@@ -51,6 +51,7 @@ import androidx.annotation.BinderThread;
|
|||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.wm.shell.R;
|
import com.android.wm.shell.R;
|
||||||
import com.android.wm.shell.WindowManagerShellWrapper;
|
import com.android.wm.shell.WindowManagerShellWrapper;
|
||||||
import com.android.wm.shell.common.DisplayChangeController;
|
import com.android.wm.shell.common.DisplayChangeController;
|
||||||
@@ -168,7 +169,8 @@ public class PipController implements PipTransitionController.PipTransitionCallb
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private final DisplayController.OnDisplaysChangedListener mDisplaysChangedListener =
|
@VisibleForTesting
|
||||||
|
final DisplayController.OnDisplaysChangedListener mDisplaysChangedListener =
|
||||||
new DisplayController.OnDisplaysChangedListener() {
|
new DisplayController.OnDisplaysChangedListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onFixedRotationStarted(int displayId, int newRotation) {
|
public void onFixedRotationStarted(int displayId, int newRotation) {
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.when;
|
|||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.res.Configuration;
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
import android.test.suitebuilder.annotation.SmallTest;
|
||||||
@@ -40,12 +41,14 @@ import android.util.Size;
|
|||||||
import com.android.wm.shell.ShellTestCase;
|
import com.android.wm.shell.ShellTestCase;
|
||||||
import com.android.wm.shell.WindowManagerShellWrapper;
|
import com.android.wm.shell.WindowManagerShellWrapper;
|
||||||
import com.android.wm.shell.common.DisplayController;
|
import com.android.wm.shell.common.DisplayController;
|
||||||
|
import com.android.wm.shell.common.DisplayLayout;
|
||||||
import com.android.wm.shell.common.ShellExecutor;
|
import com.android.wm.shell.common.ShellExecutor;
|
||||||
import com.android.wm.shell.common.TaskStackListenerImpl;
|
import com.android.wm.shell.common.TaskStackListenerImpl;
|
||||||
import com.android.wm.shell.onehanded.OneHandedController;
|
import com.android.wm.shell.onehanded.OneHandedController;
|
||||||
import com.android.wm.shell.pip.PipBoundsAlgorithm;
|
import com.android.wm.shell.pip.PipBoundsAlgorithm;
|
||||||
import com.android.wm.shell.pip.PipBoundsState;
|
import com.android.wm.shell.pip.PipBoundsState;
|
||||||
import com.android.wm.shell.pip.PipMediaController;
|
import com.android.wm.shell.pip.PipMediaController;
|
||||||
|
import com.android.wm.shell.pip.PipSnapAlgorithm;
|
||||||
import com.android.wm.shell.pip.PipTaskOrganizer;
|
import com.android.wm.shell.pip.PipTaskOrganizer;
|
||||||
import com.android.wm.shell.pip.PipTransitionController;
|
import com.android.wm.shell.pip.PipTransitionController;
|
||||||
|
|
||||||
@@ -70,16 +73,21 @@ public class PipControllerTest extends ShellTestCase {
|
|||||||
@Mock private PhonePipMenuController mMockPhonePipMenuController;
|
@Mock private PhonePipMenuController mMockPhonePipMenuController;
|
||||||
@Mock private PipAppOpsListener mMockPipAppOpsListener;
|
@Mock private PipAppOpsListener mMockPipAppOpsListener;
|
||||||
@Mock private PipBoundsAlgorithm mMockPipBoundsAlgorithm;
|
@Mock private PipBoundsAlgorithm mMockPipBoundsAlgorithm;
|
||||||
|
@Mock private PipSnapAlgorithm mMockPipSnapAlgorithm;
|
||||||
@Mock private PipMediaController mMockPipMediaController;
|
@Mock private PipMediaController mMockPipMediaController;
|
||||||
@Mock private PipTaskOrganizer mMockPipTaskOrganizer;
|
@Mock private PipTaskOrganizer mMockPipTaskOrganizer;
|
||||||
@Mock private PipTransitionController mMockPipTransitionController;
|
@Mock private PipTransitionController mMockPipTransitionController;
|
||||||
@Mock private PipTouchHandler mMockPipTouchHandler;
|
@Mock private PipTouchHandler mMockPipTouchHandler;
|
||||||
|
@Mock private PipMotionHelper mMockPipMotionHelper;
|
||||||
@Mock private WindowManagerShellWrapper mMockWindowManagerShellWrapper;
|
@Mock private WindowManagerShellWrapper mMockWindowManagerShellWrapper;
|
||||||
@Mock private PipBoundsState mMockPipBoundsState;
|
@Mock private PipBoundsState mMockPipBoundsState;
|
||||||
@Mock private TaskStackListenerImpl mMockTaskStackListener;
|
@Mock private TaskStackListenerImpl mMockTaskStackListener;
|
||||||
@Mock private ShellExecutor mMockExecutor;
|
@Mock private ShellExecutor mMockExecutor;
|
||||||
@Mock private Optional<OneHandedController> mMockOneHandedController;
|
@Mock private Optional<OneHandedController> mMockOneHandedController;
|
||||||
|
|
||||||
|
@Mock private DisplayLayout mMockDisplayLayout1;
|
||||||
|
@Mock private DisplayLayout mMockDisplayLayout2;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() throws RemoteException {
|
public void setUp() throws RemoteException {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
@@ -92,6 +100,8 @@ public class PipControllerTest extends ShellTestCase {
|
|||||||
mMockPipMediaController, mMockPhonePipMenuController, mMockPipTaskOrganizer,
|
mMockPipMediaController, mMockPhonePipMenuController, mMockPipTaskOrganizer,
|
||||||
mMockPipTouchHandler, mMockPipTransitionController, mMockWindowManagerShellWrapper,
|
mMockPipTouchHandler, mMockPipTransitionController, mMockWindowManagerShellWrapper,
|
||||||
mMockTaskStackListener, mMockOneHandedController, mMockExecutor);
|
mMockTaskStackListener, mMockOneHandedController, mMockExecutor);
|
||||||
|
when(mMockPipBoundsAlgorithm.getSnapAlgorithm()).thenReturn(mMockPipSnapAlgorithm);
|
||||||
|
when(mMockPipTouchHandler.getMotionHelper()).thenReturn(mMockPipMotionHelper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -167,4 +177,36 @@ public class PipControllerTest extends ShellTestCase {
|
|||||||
|
|
||||||
verify(mMockPipBoundsState).saveReentryState(new Size(30, 30), 1.0f);
|
verify(mMockPipBoundsState).saveReentryState(new Size(30, 30), 1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onDisplayConfigurationChanged_inPip_movePip() {
|
||||||
|
final int displayId = 1;
|
||||||
|
final Rect bounds = new Rect(0, 0, 10, 10);
|
||||||
|
when(mMockPipBoundsAlgorithm.getDefaultBounds()).thenReturn(bounds);
|
||||||
|
when(mMockPipBoundsState.getDisplayId()).thenReturn(displayId);
|
||||||
|
when(mMockPipBoundsState.getDisplayLayout()).thenReturn(mMockDisplayLayout1);
|
||||||
|
when(mMockDisplayController.getDisplayLayout(displayId)).thenReturn(mMockDisplayLayout2);
|
||||||
|
|
||||||
|
when(mMockPipTaskOrganizer.isInPip()).thenReturn(true);
|
||||||
|
mPipController.mDisplaysChangedListener.onDisplayConfigurationChanged(
|
||||||
|
displayId, new Configuration());
|
||||||
|
|
||||||
|
verify(mMockPipMotionHelper).movePip(any(Rect.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onDisplayConfigurationChanged_notInPip_doesNotMovePip() {
|
||||||
|
final int displayId = 1;
|
||||||
|
final Rect bounds = new Rect(0, 0, 10, 10);
|
||||||
|
when(mMockPipBoundsAlgorithm.getDefaultBounds()).thenReturn(bounds);
|
||||||
|
when(mMockPipBoundsState.getDisplayId()).thenReturn(displayId);
|
||||||
|
when(mMockPipBoundsState.getDisplayLayout()).thenReturn(mMockDisplayLayout1);
|
||||||
|
when(mMockDisplayController.getDisplayLayout(displayId)).thenReturn(mMockDisplayLayout2);
|
||||||
|
|
||||||
|
when(mMockPipTaskOrganizer.isInPip()).thenReturn(false);
|
||||||
|
mPipController.mDisplaysChangedListener.onDisplayConfigurationChanged(
|
||||||
|
displayId, new Configuration());
|
||||||
|
|
||||||
|
verify(mMockPipMotionHelper, never()).movePip(any(Rect.class));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user