summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Chang <chengjeff@google.com> 2019-01-23 19:20:01 +0800
committer Jeff Chang <chengjeff@google.com> 2019-02-15 15:43:28 +0800
commitfa9ba885051adb94773c965e2c52fce713069486 (patch)
treeabe84366b306957dab85feb1781c5ee4f7b9fd7e
parent0efcfca36667d590ef500eddb36b44d76239b706 (diff)
Fix the flaky test case : testRecentsButtonDisabledOnSecondaryDisplay
Wait for the display state ready before the testing Bug: 123217660 Test: atest NavigationBarButtonTest#testRecentsButtonDisabledOnSecondaryDisplay Change-Id: Iaa1808db5985d2f239932ae0fd69c4ee4dfccf4b
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarButtonTest.java27
1 files changed, 27 insertions, 0 deletions
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarButtonTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarButtonTest.java
index 6177344a3ef4..5c8071885c0d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarButtonTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarButtonTest.java
@@ -24,9 +24,11 @@ import android.graphics.PixelFormat;
import android.hardware.display.DisplayManager;
import android.hardware.display.VirtualDisplay;
import android.media.ImageReader;
+import android.os.SystemClock;
import android.support.test.filters.SmallTest;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper.RunWithLooper;
+import android.util.Log;
import android.view.Display;
import android.view.DisplayInfo;
@@ -39,12 +41,15 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.function.Predicate;
+
/** atest NavigationBarButtonTest */
@RunWith(AndroidTestingRunner.class)
@RunWithLooper
@SmallTest
public class NavigationBarButtonTest extends SysuiTestCase {
+ private static final String TAG = "NavigationBarButtonTest";
private ImageReader mReader;
private NavigationBarView mNavBar;
private VirtualDisplay mVirtualDisplay;
@@ -78,9 +83,31 @@ public class NavigationBarButtonTest extends SysuiTestCase {
assertNotNull("virtual display must not be null", mVirtualDisplay);
+ waitForDisplayReady(mVirtualDisplay.getDisplay().getDisplayId());
+
return mVirtualDisplay.getDisplay();
}
+ private void waitForDisplayReady(int displayId) {
+ waitForDisplayCondition(displayId, state -> state);
+ }
+
+ private void waitForDisplayCondition(int displayId, Predicate<Boolean> condition) {
+ for (int retry = 1; retry <= 10; retry++) {
+ if (condition.test(isDisplayOn(displayId))) {
+ return;
+ }
+ Log.i(TAG, "Waiting for virtual display ready ... retry = " + retry);
+ SystemClock.sleep(500);
+ }
+ }
+
+ private boolean isDisplayOn(int displayId) {
+ DisplayManager displayManager = mContext.getSystemService(DisplayManager.class);
+ Display display = displayManager.getDisplay(displayId);
+ return display != null && display.getState() == Display.STATE_ON;
+ }
+
@After
public void tearDown() {
releaseDisplay();