Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f9c16cd authored by Vishnu Nair's avatar Vishnu Nair
Browse files

WM: Fix flaky DragDropControllerTests tests

Stub Mockito spies using doReturn instead of when/then syntax. Using when/then
syntax on a spied object will call the actual implementation which is probably not
what we want for a stubbed function. Test failures suggest this or wrongly written
multi-threaded tests may be the root cause.

See: https://sponge.corp.google.com/target?id=aefd8278-1d23-458c-ab4c-56b19f24d745&target=com.android.frameworks.servicestests&searchFor=&show=FAILED&sortBy=STATUS

Test: FrameworksServicesTests:com.android.server.wm.DragDropControllerTests
Change-Id: Ib882f8d8602b848312631e69555a0316b9219b26
parent c5f23bfc
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@@ -56,7 +57,7 @@ import java.util.concurrent.TimeUnit;
/**
 * Tests for the {@link DragDropController} class.
 *
 * atest com.android.server.wm.DragDropControllerTests
 * atest FrameworksServicesTests:com.android.server.wm.DragDropControllerTests
 */
@SmallTest
@RunWith(AndroidJUnit4.class)
@@ -118,7 +119,7 @@ public class DragDropControllerTests extends WindowTestsBase {
        mTarget = new TestDragDropController(sWm, sWm.mH.getLooper());
        mDisplayContent = spy(mDisplayContent);
        mWindow = createDropTargetWindow("Drag test window", 0);
        when(mDisplayContent.getTouchableWinAtPointLocked(0, 0)).thenReturn(mWindow);
        doReturn(mWindow).when(mDisplayContent).getTouchableWinAtPointLocked(0, 0);
        when(sWm.mInputManager.transferTouchFocus(any(), any())).thenReturn(true);

        synchronized (sWm.mWindowMap) {
@@ -159,8 +160,7 @@ public class DragDropControllerTests extends WindowTestsBase {
    public void testPerformDrag_NullDataToOtherUser() throws Exception {
        final WindowState otherUsersWindow =
                createDropTargetWindow("Other user's window", 1 * UserHandle.PER_USER_RANGE);
        when(mDisplayContent.getTouchableWinAtPointLocked(10, 10))
                .thenReturn(otherUsersWindow);
        doReturn(otherUsersWindow).when(mDisplayContent).getTouchableWinAtPointLocked(10, 10);

        dragFlow(0, null, 10, 10);
    }