Index: chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellTest.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellTest.java |
index db021397e9710e6079927e3a08f83fa83823350b..0a725fffff24b8c5b7f10e0cea6ce5909f4d819b 100644 |
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellTest.java |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellTest.java |
@@ -10,18 +10,30 @@ import static org.chromium.chrome.test.util.ChromeRestriction.RESTRICTION_TYPE_D |
import static org.chromium.chrome.test.util.ChromeRestriction.RESTRICTION_TYPE_VIEWER_DAYDREAM; |
import android.content.pm.ActivityInfo; |
+import android.support.test.InstrumentationRegistry; |
import android.support.test.filters.MediumTest; |
import android.support.test.filters.SmallTest; |
import android.view.ViewGroup; |
+import org.junit.Assert; |
+import org.junit.Before; |
+import org.junit.Rule; |
+import org.junit.Test; |
+import org.junit.runner.RunWith; |
+ |
import org.chromium.base.ThreadUtils; |
import org.chromium.base.test.util.CommandLineFlags; |
import org.chromium.base.test.util.Feature; |
import org.chromium.base.test.util.Restriction; |
import org.chromium.base.test.util.RetryOnFailure; |
import org.chromium.chrome.R; |
+import org.chromium.chrome.browser.ChromeSwitches; |
+import org.chromium.chrome.browser.ChromeTabbedActivity; |
import org.chromium.chrome.browser.compositor.CompositorViewHolder; |
import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
+import org.chromium.chrome.test.ChromeActivityTestRule; |
+import org.chromium.chrome.test.ChromeJUnit4ClassRunner; |
+import org.chromium.chrome.test.ChromeTabbedActivityTestRule; |
import org.chromium.chrome.test.util.RenderUtils.ViewRenderer; |
import org.chromium.content.browser.ContentViewCore; |
import org.chromium.content.browser.test.util.Criteria; |
@@ -37,27 +49,28 @@ import java.util.concurrent.atomic.AtomicReference; |
* interacting with WebVR in addition to the VR browser, so inherit from |
* VrTestBase for the WebVR test framework. |
*/ |
-@CommandLineFlags.Add("enable-features=VrShell") |
-public class VrShellTest extends VrTestBase { |
+@RunWith(ChromeJUnit4ClassRunner.class) |
+ |
+@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE, |
+ ChromeActivityTestRule.DISABLE_NETWORK_PREDICTION_FLAG, "enable-features=VrShell"}) |
+public class VrShellTest { |
+ @Rule |
+ public ChromeTabbedActivityTestRule mActivityTestRule = new ChromeTabbedActivityTestRule(); |
+ |
private static final String GOLDEN_DIR = |
"chrome/test/data/android/render_tests"; |
private VrShellDelegate mDelegate; |
private ViewRenderer mViewRenderer; |
- @Override |
- protected void setUp() throws Exception { |
- super.setUp(); |
+ @Before |
+ public void setUp() throws Exception { |
+ mActivityTestRule.startMainActivityOnBlankPage(); |
+ mViewRenderer = new ViewRenderer( |
+ mActivityTestRule.getActivity(), GOLDEN_DIR, this.getClass().getSimpleName()); |
mDelegate = VrUtils.getVrShellDelegateInstance(); |
} |
- @Override |
- public void startMainActivity() throws InterruptedException { |
- startMainActivityOnBlankPage(); |
- mViewRenderer = new ViewRenderer(getActivity(), |
- GOLDEN_DIR, this.getClass().getSimpleName()); |
- } |
- |
private void enterExitVrMode(boolean supported) { |
MockVrDaydreamApi mockApi = new MockVrDaydreamApi(); |
if (!supported) { |
@@ -66,22 +79,23 @@ public class VrShellTest extends VrTestBase { |
VrUtils.forceEnterVr(); |
if (supported) { |
VrUtils.waitForVrSupported(POLL_TIMEOUT_LONG_MS); |
- assertTrue(VrShellDelegate.isInVr()); |
+ Assert.assertTrue(VrShellDelegate.isInVr()); |
} else { |
- assertFalse(mockApi.getLaunchInVrCalled()); |
- assertFalse(VrShellDelegate.isInVr()); |
+ Assert.assertFalse(mockApi.getLaunchInVrCalled()); |
+ Assert.assertFalse(VrShellDelegate.isInVr()); |
} |
VrUtils.forceExitVr(mDelegate); |
- assertFalse(VrShellDelegate.isInVr()); |
+ Assert.assertFalse(VrShellDelegate.isInVr()); |
} |
private void enterExitVrModeImage(boolean supported) throws IOException { |
- int prevOrientation = getActivity().getRequestedOrientation(); |
- getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); |
- getInstrumentation().waitForIdleSync(); |
+ ChromeTabbedActivity activity = mActivityTestRule.getActivity(); |
+ int prevOrientation = activity.getRequestedOrientation(); |
+ mActivityTestRule.getActivity().setRequestedOrientation( |
+ ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
mViewRenderer.renderAndCompare( |
- getActivity().getWindow().getDecorView().getRootView(), |
- "blank_page"); |
+ activity.getWindow().getDecorView().getRootView(), "blank_page"); |
VrUtils.forceEnterVr(); |
// Currently, screenshots only show the static UI overlay, not the |
@@ -93,34 +107,31 @@ public class VrShellTest extends VrTestBase { |
if (supported) { |
VrUtils.waitForVrSupported(POLL_TIMEOUT_LONG_MS); |
mViewRenderer.renderAndCompare( |
- getActivity().getWindow().getDecorView().getRootView(), |
- "vr_entered"); |
+ activity.getWindow().getDecorView().getRootView(), "vr_entered"); |
} else { |
// TODO(bsheedy): Find a good way to wait before taking a screenshot |
// when running on an unsupported device |
mViewRenderer.renderAndCompare( |
- getActivity().getWindow().getDecorView().getRootView(), |
- "blank_page"); |
+ activity.getWindow().getDecorView().getRootView(), "blank_page"); |
} |
VrUtils.forceExitVr(mDelegate); |
- getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); |
- getInstrumentation().waitForIdleSync(); |
+ activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
mViewRenderer.renderAndCompare( |
- getActivity().getWindow().getDecorView().getRootView(), |
- "blank_page"); |
+ activity.getWindow().getDecorView().getRootView(), "blank_page"); |
- getActivity().setRequestedOrientation(prevOrientation); |
+ activity.setRequestedOrientation(prevOrientation); |
} |
private void enterVrModeNfc(boolean supported) { |
- getInstrumentation().waitForIdleSync(); |
- VrUtils.simNfc(getActivity()); |
+ InstrumentationRegistry.getInstrumentation().waitForIdleSync(); |
+ VrUtils.simNfc(mActivityTestRule.getActivity()); |
if (supported) { |
VrUtils.waitForVrSupported(POLL_TIMEOUT_LONG_MS); |
- assertTrue(VrShellDelegate.isInVr()); |
+ Assert.assertTrue(VrShellDelegate.isInVr()); |
} else { |
- assertFalse(VrShellDelegate.isInVr()); |
+ Assert.assertFalse(VrShellDelegate.isInVr()); |
} |
VrUtils.forceExitVr(mDelegate); |
// TODO(bsheedy): Figure out why NFC tests cause the next test to fail |
@@ -133,6 +144,7 @@ public class VrShellTest extends VrTestBase { |
* NFC tag is scanned on a Daydream-ready device. Requires that the phone |
* is unlocked. |
*/ |
+ @Test |
@Restriction({RESTRICTION_TYPE_DEVICE_DAYDREAM, RESTRICTION_TYPE_VIEWER_DAYDREAM}) |
@MediumTest |
public void testSimNfcSupported() { |
@@ -143,6 +155,7 @@ public class VrShellTest extends VrTestBase { |
* Verifies that the browser does not enter VR mode on Non-Daydream-ready |
* devices when the Daydream headset NFC tag is scanned. |
*/ |
+ @Test |
@Restriction(RESTRICTION_TYPE_DEVICE_NON_DAYDREAM) |
@SmallTest |
public void testSimNfcUnsupported() { |
@@ -153,6 +166,7 @@ public class VrShellTest extends VrTestBase { |
* Verifies that browser successfully enters and exits VR mode when told to |
* on Daydream-ready devices. Requires that the phone is unlocked. |
*/ |
+ @Test |
@Restriction(RESTRICTION_TYPE_DEVICE_DAYDREAM) |
@SmallTest |
public void testEnterExitVrModeSupported() { |
@@ -162,6 +176,7 @@ public class VrShellTest extends VrTestBase { |
/** |
* Verifies that browser does not enter VR mode on Non-Daydream-ready devices. |
*/ |
+ @Test |
@Restriction(RESTRICTION_TYPE_DEVICE_NON_DAYDREAM) |
@SmallTest |
public void testEnterExitVrModeUnsupported() { |
@@ -173,6 +188,7 @@ public class VrShellTest extends VrTestBase { |
* on Daydream-ready devices via a screendiffing check. |
* Requires that the phone is unlocked. |
*/ |
+ @Test |
@Restriction(RESTRICTION_TYPE_DEVICE_DAYDREAM) |
@Feature("RenderTest") |
@MediumTest |
@@ -184,6 +200,7 @@ public class VrShellTest extends VrTestBase { |
* Verifies that browser does not enter VR mode on Non-Daydream-ready devices |
* via a screendiffing check. Requires that the phone is unlocked. |
*/ |
+ @Test |
@Restriction(RESTRICTION_TYPE_DEVICE_NON_DAYDREAM) |
@Feature("RenderTest") |
@MediumTest |
@@ -197,6 +214,7 @@ public class VrShellTest extends VrTestBase { |
* @throws InterruptedException |
* @throws TimeoutException |
*/ |
+ @Test |
@SmallTest |
@RetryOnFailure |
public void testResizeWithCompositorViewHolderDetached() |
@@ -204,13 +222,15 @@ public class VrShellTest extends VrTestBase { |
final AtomicReference<TabModelSelector> selector = new AtomicReference<>(); |
final AtomicReference<Integer> oldWidth = new AtomicReference<>(); |
final int testWidth = 123; |
- final ContentViewCore cvc = getActivity().getActivityTab().getActiveContentViewCore(); |
+ final ContentViewCore cvc = |
+ mActivityTestRule.getActivity().getActivityTab().getActiveContentViewCore(); |
ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
@Override |
public void run() { |
- CompositorViewHolder compositorViewHolder = (CompositorViewHolder) |
- getActivity().findViewById(R.id.compositor_view_holder); |
+ CompositorViewHolder compositorViewHolder = |
+ (CompositorViewHolder) mActivityTestRule.getActivity().findViewById( |
+ R.id.compositor_view_holder); |
selector.set(compositorViewHolder.detachForVr()); |
oldWidth.set(cvc.getViewportWidthPix()); |
@@ -223,20 +243,22 @@ public class VrShellTest extends VrTestBase { |
CriteriaHelper.pollUiThread(Criteria.equals(testWidth, new Callable<Integer>() { |
@Override |
public Integer call() { |
- return getActivity().findViewById(R.id.compositor_view_holder).getMeasuredWidth(); |
+ return mActivityTestRule.getActivity() |
+ .findViewById(R.id.compositor_view_holder) |
+ .getMeasuredWidth(); |
} |
})); |
- assertEquals("Viewport width should not have changed when resizing a detached " |
- + "CompositorViewHolder", |
- cvc.getViewportWidthPix(), |
- oldWidth.get().intValue()); |
+ Assert.assertEquals("Viewport width should not have changed when resizing a detached " |
+ + "CompositorViewHolder", |
+ cvc.getViewportWidthPix(), oldWidth.get().intValue()); |
ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
@Override |
public void run() { |
- CompositorViewHolder compositorViewHolder = (CompositorViewHolder) getActivity() |
- .findViewById(R.id.compositor_view_holder); |
+ CompositorViewHolder compositorViewHolder = |
+ (CompositorViewHolder) mActivityTestRule.getActivity().findViewById( |
+ R.id.compositor_view_holder); |
compositorViewHolder.onExitVr(selector.get()); |
} |
}); |