6/ Update pip to use shell main thread
- Remove some currently unused pip interface methods - Remove some usages of handler - Remove update thread (will eventually run on shell main thread) Bug: 161979899 Test: atest WMShellUnitTests Change-Id: If97e5182e396029120f0d0fb9e730ece93cddcc8 Signed-off-by: Winson Chung <winsonc@google.com>
This commit is contained in:
@@ -46,7 +46,7 @@ public class TestShellExecutor implements ShellExecutor {
|
||||
|
||||
@Override
|
||||
public boolean hasCallback(Runnable r) {
|
||||
return !mRunnables.isEmpty();
|
||||
return mRunnables.contains(r);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -55,8 +55,8 @@ public class TestShellExecutor implements ShellExecutor {
|
||||
}
|
||||
|
||||
public void flushAll() {
|
||||
for (int i = mRunnables.size() - 1; i >= 0; --i) {
|
||||
mRunnables.get(i).run();
|
||||
for (Runnable r : mRunnables) {
|
||||
r.run();
|
||||
}
|
||||
mRunnables.clear();
|
||||
}
|
||||
|
||||
@@ -43,7 +43,9 @@ import android.window.WindowContainerToken;
|
||||
|
||||
import com.android.wm.shell.ShellTaskOrganizer;
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
import com.android.wm.shell.TestShellExecutor;
|
||||
import com.android.wm.shell.common.DisplayController;
|
||||
import com.android.wm.shell.common.ShellExecutor;
|
||||
import com.android.wm.shell.pip.phone.PhonePipMenuController;
|
||||
import com.android.wm.shell.legacysplitscreen.LegacySplitScreen;
|
||||
|
||||
@@ -71,6 +73,7 @@ public class PipTaskOrganizerTest extends ShellTestCase {
|
||||
@Mock private PipUiEventLogger mMockPipUiEventLogger;
|
||||
@Mock private Optional<LegacySplitScreen> mMockOptionalSplitScreen;
|
||||
@Mock private ShellTaskOrganizer mMockShellTaskOrganizer;
|
||||
private TestShellExecutor mMainExecutor;
|
||||
private PipBoundsState mPipBoundsState;
|
||||
|
||||
private ComponentName mComponent1;
|
||||
@@ -82,10 +85,12 @@ public class PipTaskOrganizerTest extends ShellTestCase {
|
||||
mComponent1 = new ComponentName(mContext, "component1");
|
||||
mComponent2 = new ComponentName(mContext, "component2");
|
||||
mPipBoundsState = new PipBoundsState(mContext);
|
||||
mMainExecutor = new TestShellExecutor();
|
||||
mSpiedPipTaskOrganizer = spy(new PipTaskOrganizer(mContext, mPipBoundsState,
|
||||
mMockPipBoundsAlgorithm, mMockPhonePipMenuController,
|
||||
mMockPipSurfaceTransactionHelper, mMockOptionalSplitScreen, mMockdDisplayController,
|
||||
mMockPipUiEventLogger, mMockShellTaskOrganizer));
|
||||
mMockPipUiEventLogger, mMockShellTaskOrganizer, mMainExecutor));
|
||||
mMainExecutor.flushAll();
|
||||
preparePipTaskOrg();
|
||||
}
|
||||
|
||||
|
||||
@@ -24,18 +24,15 @@ import static android.view.MotionEvent.ACTION_UP;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.SystemClock;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
import android.testing.TestableLooper;
|
||||
import android.testing.TestableLooper.RunWithLooper;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.ViewConfiguration;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
import com.android.wm.shell.TestShellExecutor;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -45,23 +42,22 @@ import java.util.concurrent.CountDownLatch;
|
||||
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@SmallTest
|
||||
@RunWithLooper
|
||||
public class PipTouchStateTest extends ShellTestCase {
|
||||
|
||||
private PipTouchState mTouchState;
|
||||
private CountDownLatch mDoubleTapCallbackTriggeredLatch;
|
||||
private CountDownLatch mHoverExitCallbackTriggeredLatch;
|
||||
private TestShellExecutor mShellMainExecutor;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
mShellMainExecutor = new TestShellExecutor();
|
||||
mDoubleTapCallbackTriggeredLatch = new CountDownLatch(1);
|
||||
mHoverExitCallbackTriggeredLatch = new CountDownLatch(1);
|
||||
mTouchState = new PipTouchState(ViewConfiguration.get(getContext()),
|
||||
Handler.createAsync(Looper.myLooper()), () -> {
|
||||
mDoubleTapCallbackTriggeredLatch.countDown();
|
||||
}, () -> {
|
||||
mHoverExitCallbackTriggeredLatch.countDown();
|
||||
});
|
||||
mDoubleTapCallbackTriggeredLatch::countDown,
|
||||
mHoverExitCallbackTriggeredLatch::countDown,
|
||||
mShellMainExecutor);
|
||||
assertFalse(mTouchState.isDoubleTap());
|
||||
assertFalse(mTouchState.isWaitingForDoubleTap());
|
||||
}
|
||||
@@ -91,9 +87,7 @@ public class PipTouchStateTest extends ShellTestCase {
|
||||
assertTrue(mTouchState.getDoubleTapTimeoutCallbackDelay() == 10);
|
||||
mTouchState.scheduleDoubleTapTimeoutCallback();
|
||||
|
||||
// TODO: Remove this sleep. Its only being added because it speeds up this test a bit.
|
||||
Thread.sleep(15);
|
||||
TestableLooper.get(this).processAllMessages();
|
||||
mShellMainExecutor.flushAll();
|
||||
assertTrue(mDoubleTapCallbackTriggeredLatch.getCount() == 0);
|
||||
}
|
||||
|
||||
@@ -128,17 +122,13 @@ public class PipTouchStateTest extends ShellTestCase {
|
||||
@Test
|
||||
public void testHoverExitTimeout_timeoutCallbackCalled() throws Exception {
|
||||
mTouchState.scheduleHoverExitTimeoutCallback();
|
||||
|
||||
// TODO: Remove this sleep. Its only being added because it speeds up this test a bit.
|
||||
Thread.sleep(50);
|
||||
TestableLooper.get(this).processAllMessages();
|
||||
mShellMainExecutor.flushAll();
|
||||
assertTrue(mHoverExitCallbackTriggeredLatch.getCount() == 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHoverExitTimeout_timeoutCallbackNotCalled() throws Exception {
|
||||
mTouchState.scheduleHoverExitTimeoutCallback();
|
||||
TestableLooper.get(this).processAllMessages();
|
||||
assertTrue(mHoverExitCallbackTriggeredLatch.getCount() == 1);
|
||||
}
|
||||
|
||||
@@ -147,14 +137,12 @@ public class PipTouchStateTest extends ShellTestCase {
|
||||
mTouchState.scheduleHoverExitTimeoutCallback();
|
||||
mTouchState.onTouchEvent(createMotionEvent(ACTION_BUTTON_PRESS, SystemClock.uptimeMillis(),
|
||||
0, 0));
|
||||
|
||||
// TODO: Remove this sleep. Its only being added because it speeds up this test a bit.
|
||||
Thread.sleep(50);
|
||||
TestableLooper.get(this).processAllMessages();
|
||||
mShellMainExecutor.flushAll();
|
||||
assertTrue(mHoverExitCallbackTriggeredLatch.getCount() == 1);
|
||||
}
|
||||
|
||||
private MotionEvent createMotionEvent(int action, long eventTime, float x, float y) {
|
||||
return MotionEvent.obtain(0, eventTime, action, x, y, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user