Commit 96d43c20 authored by Alex Cooper's avatar Alex Cooper Committed by Commit Bot

Switch Android VR tests to use embedded test server

As part of the work to use the permissions prompt by default, instead of
the custom consent dialogs, tests will need to be updated to use the
embedded test server rather than directly navigating to a file. This is
due to the fact that the Permissions code will DCHECK if saving the
permission for a file-type URL.

TODO:Revert changes to PermissionUtil and content_features, these are
currently loaded to validate that the tests will pass with these
changes.

Bug: 1043241
Change-Id: Iaa820812fac0bc389af47c22f8e069e81929b05a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2047987
Commit-Queue: Alexander Cooper <alcooper@chromium.org>
Reviewed-by: default avatarBrian Sheedy <bsheedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#740399}
parent 5e8ebb5f
...@@ -83,7 +83,7 @@ public class VrBrowserControllerInputTest { ...@@ -83,7 +83,7 @@ public class VrBrowserControllerInputTest {
@Test @Test
@MediumTest @MediumTest
public void testControllerScrolling() throws InterruptedException, Exception { public void testControllerScrolling() throws InterruptedException, Exception {
String url = VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_controller_scrolling"); String url = mVrBrowserTestFramework.getUrlForFile("test_controller_scrolling");
final AtomicReference<RenderCoordinates> coord = new AtomicReference<RenderCoordinates>(); final AtomicReference<RenderCoordinates> coord = new AtomicReference<RenderCoordinates>();
Runnable waitScrollable = () -> { Runnable waitScrollable = () -> {
...@@ -109,8 +109,8 @@ public class VrBrowserControllerInputTest { ...@@ -109,8 +109,8 @@ public class VrBrowserControllerInputTest {
@Test @Test
@MediumTest @MediumTest
public void testControllerScrollingIframe() throws InterruptedException, Exception { public void testControllerScrollingIframe() throws InterruptedException, Exception {
String url = VrBrowserTestFramework.getFileUrlForHtmlTestFile( String url =
"test_controller_scrolling_iframe_outer"); mVrBrowserTestFramework.getUrlForFile("test_controller_scrolling_iframe_outer");
Runnable waitScrollable = () -> { Runnable waitScrollable = () -> {
// We need to focus the iframe before we can start running JavaScript in it. // We need to focus the iframe before we can start running JavaScript in it.
...@@ -194,8 +194,7 @@ public class VrBrowserControllerInputTest { ...@@ -194,8 +194,7 @@ public class VrBrowserControllerInputTest {
@Test @Test
@LargeTest @LargeTest
public void testControllerFlingScrolling() throws InterruptedException { public void testControllerFlingScrolling() throws InterruptedException {
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("test_controller_scrolling"),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_controller_scrolling"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
final RenderCoordinates coord = final RenderCoordinates coord =
RenderCoordinates.fromWebContents(mVrTestRule.getWebContents()); RenderCoordinates.fromWebContents(mVrTestRule.getWebContents());
...@@ -324,13 +323,13 @@ public class VrBrowserControllerInputTest { ...@@ -324,13 +323,13 @@ public class VrBrowserControllerInputTest {
@Test @Test
@MediumTest @MediumTest
public void testControllerClicksRegisterOnWebpage() { public void testControllerClicksRegisterOnWebpage() {
mVrTestRule.loadUrl(VrBrowserTestFramework.getFileUrlForHtmlTestFile( mVrTestRule.loadUrl(
"test_controller_clicks_register_on_webpage"), mVrBrowserTestFramework.getUrlForFile("test_controller_clicks_register_on_webpage"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
NativeUiUtils.clickElement(UserFriendlyElementName.CONTENT_QUAD, new PointF()); NativeUiUtils.clickElement(UserFriendlyElementName.CONTENT_QUAD, new PointF());
ChromeTabUtils.waitForTabPageLoaded(mVrTestRule.getActivity().getActivityTab(), ChromeTabUtils.waitForTabPageLoaded(mVrTestRule.getActivity().getActivityTab(),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_navigation_2d_page")); mVrBrowserTestFramework.getUrlForFile("test_navigation_2d_page"));
} }
/** /**
...@@ -342,14 +341,12 @@ public class VrBrowserControllerInputTest { ...@@ -342,14 +341,12 @@ public class VrBrowserControllerInputTest {
@Test @Test
@MediumTest @MediumTest
public void testControllerClicksRegisterOnIframe() { public void testControllerClicksRegisterOnIframe() {
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("test_iframe_clicks_outer"));
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_iframe_clicks_outer"));
NativeUiUtils.clickElement(UserFriendlyElementName.CONTENT_QUAD, new PointF()); NativeUiUtils.clickElement(UserFriendlyElementName.CONTENT_QUAD, new PointF());
// Wait until the iframe's current location matches the URL of the page that gets navigated // Wait until the iframe's current location matches the URL of the page that gets navigated
// to on click. // to on click.
mVrBrowserTestFramework.pollJavaScriptBooleanInFrameOrFail("window.location.href == '" mVrBrowserTestFramework.pollJavaScriptBooleanInFrameOrFail("window.location.href == '"
+ VrBrowserTestFramework.getFileUrlForHtmlTestFile( + mVrBrowserTestFramework.getUrlForFile("test_iframe_clicks_inner_nav")
"test_iframe_clicks_inner_nav")
+ "'", + "'",
POLL_TIMEOUT_SHORT_MS); POLL_TIMEOUT_SHORT_MS);
} }
...@@ -364,23 +361,20 @@ public class VrBrowserControllerInputTest { ...@@ -364,23 +361,20 @@ public class VrBrowserControllerInputTest {
public void testControllerScrollingNative() throws InterruptedException { public void testControllerScrollingNative() throws InterruptedException {
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
// Fill history with enough items to scroll // Fill history with enough items to scroll
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("test_navigation_2d_page"),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_navigation_2d_page"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("test_controller_scrolling"),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_controller_scrolling"),
PAGE_LOAD_TIMEOUT_S);
mVrTestRule.loadUrl(VrBrowserTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
mVrTestRule.loadUrl( mVrTestRule.loadUrl(
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_navigation_webxr_page"), mVrBrowserTestFramework.getUrlForFile("generic_webxr_page"), PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S); mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("test_navigation_webxr_page"),
mVrTestRule.loadUrl(VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_webxr_input"),
PAGE_LOAD_TIMEOUT_S);
mVrTestRule.loadUrl(VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_webxr_consent"),
PAGE_LOAD_TIMEOUT_S);
mVrTestRule.loadUrl(VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_gamepad_button"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
mVrTestRule.loadUrl(
mVrBrowserTestFramework.getUrlForFile("test_webxr_input"), PAGE_LOAD_TIMEOUT_S);
mVrTestRule.loadUrl(
mVrBrowserTestFramework.getUrlForFile("test_webxr_consent"), PAGE_LOAD_TIMEOUT_S);
mVrTestRule.loadUrl(
mVrBrowserTestFramework.getUrlForFile("test_gamepad_button"), PAGE_LOAD_TIMEOUT_S);
mVrTestRule.loadUrl(UrlConstants.HISTORY_URL, PAGE_LOAD_TIMEOUT_S); mVrTestRule.loadUrl(UrlConstants.HISTORY_URL, PAGE_LOAD_TIMEOUT_S);
...@@ -411,9 +405,8 @@ public class VrBrowserControllerInputTest { ...@@ -411,9 +405,8 @@ public class VrBrowserControllerInputTest {
@Test @Test
@MediumTest @MediumTest
public void testAppButtonExitsFullscreen() throws TimeoutException { public void testAppButtonExitsFullscreen() throws TimeoutException {
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( mVrBrowserTestFramework.loadFileAndAwaitInitialization(
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_navigation_2d_page"), "test_navigation_2d_page", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
// Enter fullscreen // Enter fullscreen
DOMUtils.clickNode(mVrBrowserTestFramework.getCurrentWebContents(), "fullscreen", DOMUtils.clickNode(mVrBrowserTestFramework.getCurrentWebContents(), "fullscreen",
false /* goThroughRootAndroidView */); false /* goThroughRootAndroidView */);
...@@ -444,8 +437,7 @@ public class VrBrowserControllerInputTest { ...@@ -444,8 +437,7 @@ public class VrBrowserControllerInputTest {
@Test @Test
@MediumTest @MediumTest
public void testDragRefresh() { public void testDragRefresh() {
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("test_controller_scrolling"),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_controller_scrolling"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
waitForPageToBeScrollable(RenderCoordinates.fromWebContents(mVrTestRule.getWebContents())); waitForPageToBeScrollable(RenderCoordinates.fromWebContents(mVrTestRule.getWebContents()));
// The navigationStart time should change anytime we refresh, so save the value and compare // The navigationStart time should change anytime we refresh, so save the value and compare
......
...@@ -91,11 +91,7 @@ public class VrBrowserDialogTest { ...@@ -91,11 +91,7 @@ public class VrBrowserDialogTest {
} }
private void navigateAndDisplayPermissionPrompt(String page, final String promptCommand) { private void navigateAndDisplayPermissionPrompt(String page, final String promptCommand) {
// Trying to grant permissions on file:// URLs ends up hitting DCHECKS, so load from a local mVrBrowserTestFramework.loadFileAndAwaitInitialization(page, PAGE_LOAD_TIMEOUT_S);
// server instead.
mVrBrowserTestFramework.loadUrlAndAwaitInitialization(
mVrBrowserTestFramework.getEmbeddedServerUrlForHtmlTestFile(page),
PAGE_LOAD_TIMEOUT_S);
// Display the given permission prompt. // Display the given permission prompt.
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
......
...@@ -65,9 +65,6 @@ public class VrBrowserNativeUiTest { ...@@ -65,9 +65,6 @@ public class VrBrowserNativeUiTest {
private VrBrowserTestFramework mVrBrowserTestFramework; private VrBrowserTestFramework mVrBrowserTestFramework;
private static final String TEST_PAGE_2D_URL =
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_navigation_2d_page");
@Before @Before
public void setUp() { public void setUp() {
mVrBrowserTestFramework = new VrBrowserTestFramework(mVrTestRule); mVrBrowserTestFramework = new VrBrowserTestFramework(mVrTestRule);
...@@ -93,7 +90,8 @@ public class VrBrowserNativeUiTest { ...@@ -93,7 +90,8 @@ public class VrBrowserNativeUiTest {
@Test @Test
@MediumTest @MediumTest
public void testUrlOnNonNativeUi() throws IllegalArgumentException { public void testUrlOnNonNativeUi() throws IllegalArgumentException {
mVrTestRule.loadUrl(TEST_PAGE_2D_URL, PAGE_LOAD_TIMEOUT_S); mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("test_navigation_2d_page"),
PAGE_LOAD_TIMEOUT_S);
Assert.assertTrue("URL is not being show for non-native page", Assert.assertTrue("URL is not being show for non-native page",
TestVrShellDelegate.isDisplayingUrlForTesting()); TestVrShellDelegate.isDisplayingUrlForTesting());
} }
...@@ -105,10 +103,8 @@ public class VrBrowserNativeUiTest { ...@@ -105,10 +103,8 @@ public class VrBrowserNativeUiTest {
@Test @Test
@MediumTest @MediumTest
public void testPaymentRequest() { public void testPaymentRequest() {
// We can't request payment on file:// URLs, so use a local server. mVrBrowserTestFramework.loadFileAndAwaitInitialization(
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( "test_payment_request", PAGE_LOAD_TIMEOUT_S);
mVrBrowserTestFramework.getEmbeddedServerUrlForHtmlTestFile("test_payment_request"),
PAGE_LOAD_TIMEOUT_S);
// Set up an observer so we'll know if the payment request is shown. // Set up an observer so we'll know if the payment request is shown.
AtomicBoolean requestShown = new AtomicBoolean(false); AtomicBoolean requestShown = new AtomicBoolean(false);
PaymentRequestObserverForTest observer = new PaymentRequestObserverForTest() { PaymentRequestObserverForTest observer = new PaymentRequestObserverForTest() {
...@@ -364,8 +360,8 @@ public class VrBrowserNativeUiTest { ...@@ -364,8 +360,8 @@ public class VrBrowserNativeUiTest {
@Feature({"Browser", "RenderTest"}) @Feature({"Browser", "RenderTest"})
public void testFileUrlEmphasis() throws InterruptedException, IOException { public void testFileUrlEmphasis() throws InterruptedException, IOException {
NativeUiUtils.enableMockedInput(); NativeUiUtils.enableMockedInput();
mVrTestRule.loadUrl(VrBrowserTestFramework.getFileUrlForHtmlTestFile("2d_permission_page"), mVrTestRule.loadUrl(
PAGE_LOAD_TIMEOUT_S); mVrBrowserTestFramework.getUrlForFile("2d_permission_page"), PAGE_LOAD_TIMEOUT_S);
NativeUiUtils.waitForUiQuiescence(); NativeUiUtils.waitForUiQuiescence();
RenderTestUtils.dumpAndCompare(NativeUiUtils.FRAME_BUFFER_SUFFIX_BROWSER_UI, RenderTestUtils.dumpAndCompare(NativeUiUtils.FRAME_BUFFER_SUFFIX_BROWSER_UI,
"file_url_emphasis_browser_ui", mRenderTestRule); "file_url_emphasis_browser_ui", mRenderTestRule);
...@@ -381,8 +377,7 @@ public class VrBrowserNativeUiTest { ...@@ -381,8 +377,7 @@ public class VrBrowserNativeUiTest {
throws InterruptedException, TimeoutException, IOException { throws InterruptedException, TimeoutException, IOException {
// Use the mock keyboard so it doesn't show, reducing the chance of flakes due to AA. // Use the mock keyboard so it doesn't show, reducing the chance of flakes due to AA.
NativeUiUtils.enableMockedKeyboard(); NativeUiUtils.enableMockedKeyboard();
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("generic_text_entry_page"),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("generic_text_entry_page"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
NativeUiUtils.clickContentNode( NativeUiUtils.clickContentNode(
"textfield", new PointF(), 1 /* numClicks */, mVrBrowserTestFramework); "textfield", new PointF(), 1 /* numClicks */, mVrBrowserTestFramework);
...@@ -595,10 +590,8 @@ public class VrBrowserNativeUiTest { ...@@ -595,10 +590,8 @@ public class VrBrowserNativeUiTest {
@MediumTest @MediumTest
@Feature({"Browser", "RenderTest"}) @Feature({"Browser", "RenderTest"})
public void testScrollResizing() throws InterruptedException, IOException { public void testScrollResizing() throws InterruptedException, IOException {
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( mVrBrowserTestFramework.loadFileAndAwaitInitialization(
VrBrowserTestFramework.getFileUrlForHtmlTestFile( "test_content_resizing_does_not_affect_webpage", PAGE_LOAD_TIMEOUT_S);
"test_content_resizing_does_not_affect_webpage"),
PAGE_LOAD_TIMEOUT_S);
mVrBrowserTestFramework.executeStepAndWait("stepGetInitialDimensions()"); mVrBrowserTestFramework.executeStepAndWait("stepGetInitialDimensions()");
resizeContentWindowToMinimum(); resizeContentWindowToMinimum();
RenderTestUtils.dumpAndCompare( RenderTestUtils.dumpAndCompare(
...@@ -616,8 +609,7 @@ public class VrBrowserNativeUiTest { ...@@ -616,8 +609,7 @@ public class VrBrowserNativeUiTest {
@Feature({"Browser", "RenderTest"}) @Feature({"Browser", "RenderTest"})
public void testOverflowAndKeyboardFollowContentQuad() public void testOverflowAndKeyboardFollowContentQuad()
throws InterruptedException, TimeoutException, IOException { throws InterruptedException, TimeoutException, IOException {
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("generic_text_entry_page"),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("generic_text_entry_page"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
// Drag the content quad up and to the left. // Drag the content quad up and to the left.
NativeUiUtils.selectRepositionBar(); NativeUiUtils.selectRepositionBar();
...@@ -646,10 +638,8 @@ public class VrBrowserNativeUiTest { ...@@ -646,10 +638,8 @@ public class VrBrowserNativeUiTest {
@MediumTest @MediumTest
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
public void testRAFsFireWhileRepositioning() { public void testRAFsFireWhileRepositioning() {
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( mVrBrowserTestFramework.loadFileAndAwaitInitialization(
VrBrowserTestFramework.getFileUrlForHtmlTestFile( "test_rafs_fire_while_repositioning", PAGE_LOAD_TIMEOUT_S);
"test_rafs_fire_while_repositioning"),
PAGE_LOAD_TIMEOUT_S);
NativeUiUtils.selectRepositionBar(); NativeUiUtils.selectRepositionBar();
mVrBrowserTestFramework.executeStepAndWait("stepCheckForRafs()"); mVrBrowserTestFramework.executeStepAndWait("stepCheckForRafs()");
mVrBrowserTestFramework.endTest(); mVrBrowserTestFramework.endTest();
...@@ -663,10 +653,8 @@ public class VrBrowserNativeUiTest { ...@@ -663,10 +653,8 @@ public class VrBrowserNativeUiTest {
@Feature({"Browser", "RenderTest"}) @Feature({"Browser", "RenderTest"})
public void testRepositionBarDoesNotAppearWithPermissionPromptVisible() public void testRepositionBarDoesNotAppearWithPermissionPromptVisible()
throws InterruptedException, IOException { throws InterruptedException, IOException {
// We don't need to actually accept the prompt, so we don't need to use the local server. mVrBrowserTestFramework.loadFileAndAwaitInitialization(
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( "2d_permission_page", PAGE_LOAD_TIMEOUT_S);
VrBrowserTestFramework.getFileUrlForHtmlTestFile("2d_permission_page"),
PAGE_LOAD_TIMEOUT_S);
NativeUiUtils.enableMockedInput(); NativeUiUtils.enableMockedInput();
NativeUiUtils.waitForUiQuiescence(); NativeUiUtils.waitForUiQuiescence();
NativeUiUtils.performActionAndWaitForUiQuiescence(() -> { NativeUiUtils.performActionAndWaitForUiQuiescence(() -> {
...@@ -752,9 +740,8 @@ public class VrBrowserNativeUiTest { ...@@ -752,9 +740,8 @@ public class VrBrowserNativeUiTest {
@MediumTest @MediumTest
public void testVoiceInputUnavailableIfSiteUsingMicrophone() throws InterruptedException { public void testVoiceInputUnavailableIfSiteUsingMicrophone() throws InterruptedException {
NativeUiUtils.enableMockedInput(); NativeUiUtils.enableMockedInput();
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( mVrBrowserTestFramework.loadFileAndAwaitInitialization(
mVrBrowserTestFramework.getEmbeddedServerUrlForHtmlTestFile("2d_permission_page"), "2d_permission_page", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
// Wait for any residual animations from navigating. // Wait for any residual animations from navigating.
NativeUiUtils.waitForUiQuiescence(); NativeUiUtils.waitForUiQuiescence();
// Display and accept the permission. // Display and accept the permission.
...@@ -819,8 +806,7 @@ public class VrBrowserNativeUiTest { ...@@ -819,8 +806,7 @@ public class VrBrowserNativeUiTest {
private void testSecurityTokenImpl(String identifier) throws InterruptedException, IOException { private void testSecurityTokenImpl(String identifier) throws InterruptedException, IOException {
NativeUiUtils.enableMockedInput(); NativeUiUtils.enableMockedInput();
mVrTestRule.loadUrl( mVrTestRule.loadUrl(
mVrBrowserTestFramework.getEmbeddedServerUrlForHtmlTestFile("2d_permission_page"), mVrBrowserTestFramework.getUrlForFile("2d_permission_page"), PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
// Wait for any residual animations from loading to go away. // Wait for any residual animations from loading to go away.
NativeUiUtils.waitForUiQuiescence(); NativeUiUtils.waitForUiQuiescence();
RenderTestUtils.dumpAndCompare(NativeUiUtils.FRAME_BUFFER_SUFFIX_BROWSER_UI, RenderTestUtils.dumpAndCompare(NativeUiUtils.FRAME_BUFFER_SUFFIX_BROWSER_UI,
......
...@@ -162,8 +162,7 @@ public class VrBrowserTransitionTest { ...@@ -162,8 +162,7 @@ public class VrBrowserTransitionTest {
private String testVrEntryIntentInternal() { private String testVrEntryIntentInternal() {
// Send a VR intent, which will open the link in a CTA. // Send a VR intent, which will open the link in a CTA.
final String url = final String url = mVrBrowserTestFramework.getUrlForFile("test_navigation_2d_page");
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_navigation_2d_page");
VrBrowserTransitionUtils.sendVrLaunchIntent(url); VrBrowserTransitionUtils.sendVrLaunchIntent(url);
// Wait until we enter VR and have the correct URL. // Wait until we enter VR and have the correct URL.
...@@ -213,9 +212,8 @@ public class VrBrowserTransitionTest { ...@@ -213,9 +212,8 @@ public class VrBrowserTransitionTest {
@MediumTest @MediumTest
public void testExitFullscreenAfterExitingVrFromCinemaMode() throws TimeoutException { public void testExitFullscreenAfterExitingVrFromCinemaMode() throws TimeoutException {
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( mVrBrowserTestFramework.loadFileAndAwaitInitialization(
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_navigation_2d_page"), "test_navigation_2d_page", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
DOMUtils.clickNode(mVrBrowserTestFramework.getCurrentWebContents(), "fullscreen", DOMUtils.clickNode(mVrBrowserTestFramework.getCurrentWebContents(), "fullscreen",
false /* goThroughRootAndroidView */); false /* goThroughRootAndroidView */);
mVrBrowserTestFramework.waitOnJavaScriptStep(); mVrBrowserTestFramework.waitOnJavaScriptStep();
...@@ -249,14 +247,12 @@ public class VrBrowserTransitionTest { ...@@ -249,14 +247,12 @@ public class VrBrowserTransitionTest {
@Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM_OR_STANDALONE) @Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM_OR_STANDALONE)
@MediumTest @MediumTest
public void testExitPresentationWebXrToVrShell() throws IllegalArgumentException { public void testExitPresentationWebXrToVrShell() throws IllegalArgumentException {
exitPresentationToVrShellImpl( exitPresentationToVrShellImpl("test_navigation_webxr_page", mWebXrVrTestFramework);
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_navigation_webxr_page"),
mWebXrVrTestFramework);
} }
private void exitPresentationToVrShellImpl(String url, WebXrVrTestFramework framework) { private void exitPresentationToVrShellImpl(String url, WebXrVrTestFramework framework) {
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
VrShell vrShell = TestVrShellDelegate.getVrShellForTesting(); VrShell vrShell = TestVrShellDelegate.getVrShellForTesting();
float expectedWidth = vrShell.getContentWidthForTesting(); float expectedWidth = vrShell.getContentWidthForTesting();
float expectedHeight = vrShell.getContentHeightForTesting(); float expectedHeight = vrShell.getContentHeightForTesting();
...@@ -284,25 +280,22 @@ public class VrBrowserTransitionTest { ...@@ -284,25 +280,22 @@ public class VrBrowserTransitionTest {
@Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM_OR_STANDALONE) @Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM_OR_STANDALONE)
@MediumTest @MediumTest
public void testWebXrReEntryFromVrBrowser() { public void testWebXrReEntryFromVrBrowser() {
reEntryFromVrBrowserImpl(WebXrVrTestFramework.getFileUrlForHtmlTestFile( reEntryFromVrBrowserImpl(
"test_webxr_reentry_from_vr_browser"), "test_webxr_reentry_from_vr_browser", mWebXrVrTestFramework, false);
mWebXrVrTestFramework, false);
} }
@Test @Test
@Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM_OR_STANDALONE) @Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM_OR_STANDALONE)
@MediumTest @MediumTest
public void testWebXrReEntryFromVrBrowserViaEndSession() { public void testWebXrReEntryFromVrBrowserViaEndSession() {
reEntryFromVrBrowserImpl(WebXrVrTestFramework.getFileUrlForHtmlTestFile( reEntryFromVrBrowserImpl("test_webxr_reentry_from_vr_browser", mWebXrVrTestFramework, true);
"test_webxr_reentry_from_vr_browser"),
mWebXrVrTestFramework, true);
} }
private void reEntryFromVrBrowserImpl( private void reEntryFromVrBrowserImpl(
String url, WebXrVrTestFramework framework, boolean useEndSession) { String url, WebXrVrTestFramework framework, boolean useEndSession) {
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.enterSessionWithUserGestureOrFail(); framework.enterSessionWithUserGestureOrFail();
framework.executeStepAndWait("stepVerifyFirstPresent()"); framework.executeStepAndWait("stepVerifyFirstPresent()");
...@@ -438,9 +431,8 @@ public class VrBrowserTransitionTest { ...@@ -438,9 +431,8 @@ public class VrBrowserTransitionTest {
@Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM) @Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM)
@LargeTest @LargeTest
public void testExitVrWithPromptDisplayed() { public void testExitVrWithPromptDisplayed() {
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( mVrBrowserTestFramework.loadFileAndAwaitInitialization(
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_navigation_2d_page"), "test_navigation_2d_page", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
// Test JavaScript dialogs. // Test JavaScript dialogs.
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
...@@ -529,11 +521,8 @@ public class VrBrowserTransitionTest { ...@@ -529,11 +521,8 @@ public class VrBrowserTransitionTest {
@Restriction({RESTRICTION_TYPE_VIEWER_DAYDREAM}) @Restriction({RESTRICTION_TYPE_VIEWER_DAYDREAM})
@MediumTest @MediumTest
public void testPermissionsPersistWhenEnteringVrBrowser() { public void testPermissionsPersistWhenEnteringVrBrowser() {
// Permissions don't work on file:// URLs, so use a local server. mVrBrowserTestFramework.loadFileAndAwaitInitialization(
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( "test_permissions_persist_when_entering_vr_browser", PAGE_LOAD_TIMEOUT_S);
mVrBrowserTestFramework.getEmbeddedServerUrlForHtmlTestFile(
"test_permissions_persist_when_entering_vr_browser"),
PAGE_LOAD_TIMEOUT_S);
// Ensure that permission requests initially trigger a prompt. // Ensure that permission requests initially trigger a prompt.
Assert.assertTrue("Camera permission would not trigger prompt", Assert.assertTrue("Camera permission would not trigger prompt",
mVrBrowserTestFramework.permissionRequestWouldTriggerPrompt("camera")); mVrBrowserTestFramework.permissionRequestWouldTriggerPrompt("camera"));
...@@ -547,10 +536,8 @@ public class VrBrowserTransitionTest { ...@@ -547,10 +536,8 @@ public class VrBrowserTransitionTest {
PermissionUtils.acceptPermissionPrompt(); PermissionUtils.acceptPermissionPrompt();
mVrBrowserTestFramework.waitOnJavaScriptStep(); mVrBrowserTestFramework.waitOnJavaScriptStep();
// Reload the page and ensure that the permissions are still granted. // Reload the page and ensure that the permissions are still granted.
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( mVrBrowserTestFramework.loadFileAndAwaitInitialization(
mVrBrowserTestFramework.getEmbeddedServerUrlForHtmlTestFile( "test_permissions_persist_when_entering_vr_browser", PAGE_LOAD_TIMEOUT_S);
"test_permissions_persist_when_entering_vr_browser"),
PAGE_LOAD_TIMEOUT_S);
Assert.assertFalse("Camera permission would trigger prompt after reload", Assert.assertFalse("Camera permission would trigger prompt after reload",
mVrBrowserTestFramework.permissionRequestWouldTriggerPrompt("camera")); mVrBrowserTestFramework.permissionRequestWouldTriggerPrompt("camera"));
Assert.assertFalse("Microphone permission would trigger prompt after reload", Assert.assertFalse("Microphone permission would trigger prompt after reload",
......
...@@ -78,8 +78,7 @@ public class VrBrowserWebInputEditingTest { ...@@ -78,8 +78,7 @@ public class VrBrowserWebInputEditingTest {
@MediumTest @MediumTest
@CommandLineFlags.Add("enable-features=VrLaunchIntents") @CommandLineFlags.Add("enable-features=VrLaunchIntents")
public void testWebInputFocus() throws InterruptedException { public void testWebInputFocus() throws InterruptedException {
testWebInputFocusImpl( testWebInputFocusImpl(mVrBrowserTestFramework.getUrlForFile("test_web_input_editing"));
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_web_input_editing"));
} }
/** /**
...@@ -91,8 +90,8 @@ public class VrBrowserWebInputEditingTest { ...@@ -91,8 +90,8 @@ public class VrBrowserWebInputEditingTest {
@MediumTest @MediumTest
@CommandLineFlags.Add("enable-features=VrLaunchIntents") @CommandLineFlags.Add("enable-features=VrLaunchIntents")
public void testWebInputFocusIframe() throws InterruptedException { public void testWebInputFocusIframe() throws InterruptedException {
testWebInputFocusImpl(VrBrowserTestFramework.getFileUrlForHtmlTestFile( testWebInputFocusImpl(
"test_web_input_editing_iframe_outer")); mVrBrowserTestFramework.getUrlForFile("test_web_input_editing_iframe_outer"));
} }
private void testWebInputFocusImpl(String url) throws InterruptedException { private void testWebInputFocusImpl(String url) throws InterruptedException {
...@@ -154,8 +153,8 @@ public class VrBrowserWebInputEditingTest { ...@@ -154,8 +153,8 @@ public class VrBrowserWebInputEditingTest {
@Test @Test
@MediumTest @MediumTest
public void testSelectTag() throws TimeoutException { public void testSelectTag() throws TimeoutException {
mVrTestRule.loadUrl(VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_select_tag"), mVrTestRule.loadUrl(
PAGE_LOAD_TIMEOUT_S); mVrBrowserTestFramework.getUrlForFile("test_select_tag"), PAGE_LOAD_TIMEOUT_S);
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
NativeUiUtils.enableMockedInput(); NativeUiUtils.enableMockedInput();
// Click on the <select> tag and wait for the resulting modal dialog to appear. // Click on the <select> tag and wait for the resulting modal dialog to appear.
...@@ -198,8 +197,7 @@ public class VrBrowserWebInputEditingTest { ...@@ -198,8 +197,7 @@ public class VrBrowserWebInputEditingTest {
@Test @Test
@MediumTest @MediumTest
public void testKeyboardAutomaticallyClosesOnNavigation() throws InterruptedException { public void testKeyboardAutomaticallyClosesOnNavigation() throws InterruptedException {
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("test_web_input_editing"),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_web_input_editing"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
...@@ -222,8 +220,7 @@ public class VrBrowserWebInputEditingTest { ...@@ -222,8 +220,7 @@ public class VrBrowserWebInputEditingTest {
POLL_CHECK_INTERVAL_SHORT_MS); POLL_CHECK_INTERVAL_SHORT_MS);
// Navigate to a different page and ensure the keyboard automatically hides. // Navigate to a different page and ensure the keyboard automatically hides.
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("test_navigation_2d_page"),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_navigation_2d_page"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
// The hiding should be done by the time navigation completes, so assert instead of polling. // The hiding should be done by the time navigation completes, so assert instead of polling.
Assert.assertFalse( Assert.assertFalse(
...@@ -240,8 +237,8 @@ public class VrBrowserWebInputEditingTest { ...@@ -240,8 +237,8 @@ public class VrBrowserWebInputEditingTest {
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
NativeUiUtils.enableMockedInput(); NativeUiUtils.enableMockedInput();
NativeUiUtils.enableMockedKeyboard(); NativeUiUtils.enableMockedKeyboard();
mVrTestRule.loadUrl(VrBrowserTestFramework.getFileUrlForHtmlTestFile( mVrTestRule.loadUrl(
"test_web_input_cursor_reposition"), mVrBrowserTestFramework.getUrlForFile("test_web_input_cursor_reposition"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
NativeUiUtils.clickContentNode( NativeUiUtils.clickContentNode(
"textfield", new PointF(), 1 /* numClicks */, mVrBrowserTestFramework); "textfield", new PointF(), 1 /* numClicks */, mVrBrowserTestFramework);
...@@ -282,8 +279,7 @@ public class VrBrowserWebInputEditingTest { ...@@ -282,8 +279,7 @@ public class VrBrowserWebInputEditingTest {
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
NativeUiUtils.enableMockedInput(); NativeUiUtils.enableMockedInput();
NativeUiUtils.enableMockedKeyboard(); NativeUiUtils.enableMockedKeyboard();
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("test_web_input_selection"),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_web_input_selection"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
NativeUiUtils.clickContentNode( NativeUiUtils.clickContentNode(
"textfield", new PointF(), 1 /* numClicks */, mVrBrowserTestFramework); "textfield", new PointF(), 1 /* numClicks */, mVrBrowserTestFramework);
...@@ -329,8 +325,7 @@ public class VrBrowserWebInputEditingTest { ...@@ -329,8 +325,7 @@ public class VrBrowserWebInputEditingTest {
@MediumTest @MediumTest
public void testClicksHideKeyboard() throws InterruptedException, TimeoutException { public void testClicksHideKeyboard() throws InterruptedException, TimeoutException {
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("generic_text_entry_page"),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("generic_text_entry_page"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
NativeUiUtils.enableMockedInput(); NativeUiUtils.enableMockedInput();
...@@ -400,8 +395,7 @@ public class VrBrowserWebInputEditingTest { ...@@ -400,8 +395,7 @@ public class VrBrowserWebInputEditingTest {
@MediumTest @MediumTest
public void testAppButtonHidesKeyboard() throws InterruptedException, TimeoutException { public void testAppButtonHidesKeyboard() throws InterruptedException, TimeoutException {
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("generic_text_entry_page"),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("generic_text_entry_page"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
NativeUiUtils.enableMockedInput(); NativeUiUtils.enableMockedInput();
...@@ -451,9 +445,8 @@ public class VrBrowserWebInputEditingTest { ...@@ -451,9 +445,8 @@ public class VrBrowserWebInputEditingTest {
mRenderTestRule.setPixelDiffThreshold(2); mRenderTestRule.setPixelDiffThreshold(2);
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
NativeUiUtils.enableMockedInput(); NativeUiUtils.enableMockedInput();
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( mVrBrowserTestFramework.loadFileAndAwaitInitialization(
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_video_controls"), "test_video_controls", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
// Click the fullscreen button. We use a separate button instead of the controls' fullscreen // Click the fullscreen button. We use a separate button instead of the controls' fullscreen
// button since that's more stable. // button since that's more stable.
......
...@@ -49,10 +49,8 @@ public class VrFeedbackInfoBarTest { ...@@ -49,10 +49,8 @@ public class VrFeedbackInfoBarTest {
private WebXrVrTestFramework mWebXrVrTestFramework; private WebXrVrTestFramework mWebXrVrTestFramework;
private VrBrowserTestFramework mVrBrowserTestFramework; private VrBrowserTestFramework mVrBrowserTestFramework;
private static final String TEST_PAGE_2D_URL = private static final String TEST_PAGE_2D_FILE = "test_navigation_2d_page";
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_navigation_2d_page"); private static final String TEST_PAGE_WEBXR_FILE = "generic_webxr_page";
private static final String TEST_PAGE_WEBXR_URL =
WebXrVrTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page");
@Before @Before
public void setUp() { public void setUp() {
...@@ -81,8 +79,8 @@ public class VrFeedbackInfoBarTest { ...@@ -81,8 +79,8 @@ public class VrFeedbackInfoBarTest {
@MediumTest @MediumTest
@Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM) @Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM)
public void testFeedbackFrequency() { public void testFeedbackFrequency() {
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( mVrBrowserTestFramework.loadFileAndAwaitInitialization(
TEST_PAGE_2D_URL, PAGE_LOAD_TIMEOUT_S); TEST_PAGE_2D_FILE, PAGE_LOAD_TIMEOUT_S);
// Set frequency of infobar to every 2nd time. // Set frequency of infobar to every 2nd time.
VrShellDelegateUtils.getDelegateInstance().setFeedbackFrequencyForTesting(2); VrShellDelegateUtils.getDelegateInstance().setFeedbackFrequencyForTesting(2);
...@@ -109,8 +107,8 @@ public class VrFeedbackInfoBarTest { ...@@ -109,8 +107,8 @@ public class VrFeedbackInfoBarTest {
@MediumTest @MediumTest
@Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM) @Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM)
public void testFeedbackOptOut() { public void testFeedbackOptOut() {
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( mVrBrowserTestFramework.loadFileAndAwaitInitialization(
TEST_PAGE_2D_URL, PAGE_LOAD_TIMEOUT_S); TEST_PAGE_2D_FILE, PAGE_LOAD_TIMEOUT_S);
// Show infobar every time. // Show infobar every time.
VrShellDelegateUtils.getDelegateInstance().setFeedbackFrequencyForTesting(1); VrShellDelegateUtils.getDelegateInstance().setFeedbackFrequencyForTesting(1);
...@@ -136,12 +134,12 @@ public class VrFeedbackInfoBarTest { ...@@ -136,12 +134,12 @@ public class VrFeedbackInfoBarTest {
@MediumTest @MediumTest
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
public void testFeedbackOnlyOnVrBrowsing_WebXr() { public void testFeedbackOnlyOnVrBrowsing_WebXr() {
feedbackOnlyOnVrBrowsingImpl(TEST_PAGE_WEBXR_URL, mWebXrVrTestFramework); feedbackOnlyOnVrBrowsingImpl(TEST_PAGE_WEBXR_FILE, mWebXrVrTestFramework);
} }
private void feedbackOnlyOnVrBrowsingImpl(String url, WebXrVrTestFramework framework) { private void feedbackOnlyOnVrBrowsingImpl(String url, WebXrVrTestFramework framework) {
// Enter VR presentation mode. // Enter VR presentation mode.
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.enterSessionWithUserGestureOrFail(); framework.enterSessionWithUserGestureOrFail();
assertState(true /* isInVr */, false /* isInfobarVisible */); assertState(true /* isInVr */, false /* isInfobarVisible */);
Assert.assertTrue("Did not enter WebVR presentation", Assert.assertTrue("Did not enter WebVR presentation",
...@@ -166,19 +164,20 @@ public class VrFeedbackInfoBarTest { ...@@ -166,19 +164,20 @@ public class VrFeedbackInfoBarTest {
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
// Enter VR presentation mode. // Enter VR presentation mode.
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
TEST_PAGE_WEBXR_URL, PAGE_LOAD_TIMEOUT_S); TEST_PAGE_WEBXR_FILE, PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.enterSessionWithUserGestureOrFail(); mWebXrVrTestFramework.enterSessionWithUserGestureOrFail();
assertState(true /* isInVr */, false /* isInfobarVisible */); assertState(true /* isInVr */, false /* isInfobarVisible */);
Assert.assertTrue("Did not enter WebVR presentation", Assert.assertTrue("Did not enter WebVR presentation",
TestVrShellDelegate.getVrShellForTesting().getWebVrModeEnabled()); TestVrShellDelegate.getVrShellForTesting().getWebVrModeEnabled());
String page2DUrl = mWebXrVrTestFramework.getUrlForFile(TEST_PAGE_2D_FILE);
// Exit presentation mode by navigating to a different url. // Exit presentation mode by navigating to a different url.
ChromeTabUtils.waitForTabPageLoaded( ChromeTabUtils.waitForTabPageLoaded(
mTestRule.getActivity().getActivityTab(), TEST_PAGE_2D_URL, () -> { mTestRule.getActivity().getActivityTab(), page2DUrl, () -> {
mVrBrowserTestFramework.runJavaScriptOrFail( mVrBrowserTestFramework.runJavaScriptOrFail(
"window.location.href = '" + TEST_PAGE_2D_URL + "';", "window.location.href = '" + page2DUrl + "';", POLL_TIMEOUT_SHORT_MS);
POLL_TIMEOUT_SHORT_MS);
}, POLL_TIMEOUT_LONG_MS); }, POLL_TIMEOUT_LONG_MS);
// Exiting VR should prompt for feedback since 2D browsing was performed after. // Exiting VR should prompt for feedback since 2D browsing was performed after.
......
...@@ -64,9 +64,12 @@ public class VrInstallUpdateInfoBarTest { ...@@ -64,9 +64,12 @@ public class VrInstallUpdateInfoBarTest {
private ChromeActivityTestRule mVrTestRule; private ChromeActivityTestRule mVrTestRule;
private VrBrowserTestFramework mVrBrowserTestFramework;
public VrInstallUpdateInfoBarTest(Callable<ChromeActivityTestRule> callable) throws Exception { public VrInstallUpdateInfoBarTest(Callable<ChromeActivityTestRule> callable) throws Exception {
mVrTestRule = callable.call(); mVrTestRule = callable.call();
mRuleChain = VrTestRuleUtils.wrapRuleInActivityRestrictionRule(mVrTestRule); mRuleChain = VrTestRuleUtils.wrapRuleInActivityRestrictionRule(mVrTestRule);
mVrBrowserTestFramework = new VrBrowserTestFramework(mVrTestRule);
} }
/** /**
...@@ -181,8 +184,7 @@ public class VrInstallUpdateInfoBarTest { ...@@ -181,8 +184,7 @@ public class VrInstallUpdateInfoBarTest {
} }
private void testKeyboardInstallUpgradeImpl(final int uiElementToClick) { private void testKeyboardInstallUpgradeImpl(final int uiElementToClick) {
mVrTestRule.loadUrl( mVrTestRule.loadUrl(mVrBrowserTestFramework.getUrlForFile("test_web_input_editing"),
VrBrowserTestFramework.getFileUrlForHtmlTestFile("test_web_input_editing"),
PAGE_LOAD_TIMEOUT_S); PAGE_LOAD_TIMEOUT_S);
GvrKeyboardLoaderClient.setFailLoadForTesting(true); GvrKeyboardLoaderClient.setFailLoadForTesting(true);
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
......
...@@ -67,10 +67,8 @@ public class WebXrArHitTestTest { ...@@ -67,10 +67,8 @@ public class WebXrArHitTestTest {
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
@ArPlaybackFile("chrome/test/data/xr/ar_playback_datasets/floor_short_start_with_plane.mp4") @ArPlaybackFile("chrome/test/data/xr/ar_playback_datasets/floor_short_start_with_plane.mp4")
public void testHitTestSucceedsWithPlane() { public void testHitTestSucceedsWithPlane() {
mWebXrArTestFramework.loadUrlAndAwaitInitialization( mWebXrArTestFramework.loadFileAndAwaitInitialization(
mWebXrArTestFramework.getEmbeddedServerUrlForHtmlTestFile( "webxr_test_basic_hittest", PAGE_LOAD_TIMEOUT_S);
"webxr_test_basic_hittest"),
PAGE_LOAD_TIMEOUT_S);
mWebXrArTestFramework.enterSessionWithUserGestureOrFail(); mWebXrArTestFramework.enterSessionWithUserGestureOrFail();
mWebXrArTestFramework.executeStepAndWait("stepStartHitTesting()"); mWebXrArTestFramework.executeStepAndWait("stepStartHitTesting()");
mWebXrArTestFramework.assertNoJavaScriptErrors(); mWebXrArTestFramework.assertNoJavaScriptErrors();
......
...@@ -68,10 +68,8 @@ public class WebXrArSessionTest { ...@@ -68,10 +68,8 @@ public class WebXrArSessionTest {
@MediumTest @MediumTest
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testArRequestSessionSucceeds() { public void testArRequestSessionSucceeds() {
mWebXrArTestFramework.loadUrlAndAwaitInitialization( mWebXrArTestFramework.loadFileAndAwaitInitialization(
mWebXrArTestFramework.getEmbeddedServerUrlForHtmlTestFile( "test_ar_request_session_succeeds", PAGE_LOAD_TIMEOUT_S);
"test_ar_request_session_succeeds"),
PAGE_LOAD_TIMEOUT_S);
mWebXrArTestFramework.enterSessionWithUserGestureOrFail(); mWebXrArTestFramework.enterSessionWithUserGestureOrFail();
mWebXrArTestFramework.assertNoJavaScriptErrors(); mWebXrArTestFramework.assertNoJavaScriptErrors();
} }
...@@ -85,10 +83,8 @@ public class WebXrArSessionTest { ...@@ -85,10 +83,8 @@ public class WebXrArSessionTest {
@MediumTest @MediumTest
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testConsentPersistanceOnSamePage() { public void testConsentPersistanceOnSamePage() {
mWebXrArTestFramework.loadUrlAndAwaitInitialization( mWebXrArTestFramework.loadFileAndAwaitInitialization(
mWebXrArTestFramework.getEmbeddedServerUrlForHtmlTestFile( "test_ar_request_session_succeeds", PAGE_LOAD_TIMEOUT_S);
"test_ar_request_session_succeeds"),
PAGE_LOAD_TIMEOUT_S);
WebContents contents = mWebXrArTestFramework.getCurrentWebContents(); WebContents contents = mWebXrArTestFramework.getCurrentWebContents();
// Start session, decline consent prompt. // Start session, decline consent prompt.
...@@ -119,10 +115,8 @@ public class WebXrArSessionTest { ...@@ -119,10 +115,8 @@ public class WebXrArSessionTest {
@MediumTest @MediumTest
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testRepeatedArSessionsSucceed() { public void testRepeatedArSessionsSucceed() {
mWebXrArTestFramework.loadUrlAndAwaitInitialization( mWebXrArTestFramework.loadFileAndAwaitInitialization(
mWebXrArTestFramework.getEmbeddedServerUrlForHtmlTestFile( "test_ar_request_session_succeeds", PAGE_LOAD_TIMEOUT_S);
"test_ar_request_session_succeeds"),
PAGE_LOAD_TIMEOUT_S);
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
mWebXrArTestFramework.enterSessionWithUserGestureOrFail(); mWebXrArTestFramework.enterSessionWithUserGestureOrFail();
mWebXrArTestFramework.endSession(); mWebXrArTestFramework.endSession();
......
...@@ -71,9 +71,8 @@ public class WebXrVrConsentTest { ...@@ -71,9 +71,8 @@ public class WebXrVrConsentTest {
WebXrVrTestFramework.CONSENT_DIALOG_ACTION_DENY); WebXrVrTestFramework.CONSENT_DIALOG_ACTION_DENY);
mWebXrVrConsentTestFramework.setConsentDialogExpected(true); mWebXrVrConsentTestFramework.setConsentDialogExpected(true);
mWebXrVrConsentTestFramework.loadUrlAndAwaitInitialization( mWebXrVrConsentTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_webxr_consent"), "test_webxr_consent", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrConsentTestFramework.enterSessionWithUserGesture(); mWebXrVrConsentTestFramework.enterSessionWithUserGesture();
mWebXrVrConsentTestFramework.pollJavaScriptBooleanOrFail( mWebXrVrConsentTestFramework.pollJavaScriptBooleanOrFail(
...@@ -91,9 +90,8 @@ public class WebXrVrConsentTest { ...@@ -91,9 +90,8 @@ public class WebXrVrConsentTest {
@MediumTest @MediumTest
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testConsentPersistsSameLevel() { public void testConsentPersistsSameLevel() {
mWebXrVrConsentTestFramework.loadUrlAndAwaitInitialization( mWebXrVrConsentTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page"), "generic_webxr_page", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrConsentTestFramework.enterSessionWithUserGestureOrFail(); mWebXrVrConsentTestFramework.enterSessionWithUserGestureOrFail();
mWebXrVrConsentTestFramework.endSession(); mWebXrVrConsentTestFramework.endSession();
...@@ -112,9 +110,8 @@ public class WebXrVrConsentTest { ...@@ -112,9 +110,8 @@ public class WebXrVrConsentTest {
public void testConsentNotNeededForInline() { public void testConsentNotNeededForInline() {
mWebXrVrConsentTestFramework.setConsentDialogExpected(false); mWebXrVrConsentTestFramework.setConsentDialogExpected(false);
mWebXrVrConsentTestFramework.loadUrlAndAwaitInitialization( mWebXrVrConsentTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_webxr_consent"), "test_webxr_consent", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrConsentTestFramework.runJavaScriptOrFail( mWebXrVrConsentTestFramework.runJavaScriptOrFail(
"requestMagicWindowSession()", POLL_TIMEOUT_SHORT_MS); "requestMagicWindowSession()", POLL_TIMEOUT_SHORT_MS);
...@@ -130,9 +127,8 @@ public class WebXrVrConsentTest { ...@@ -130,9 +127,8 @@ public class WebXrVrConsentTest {
@MediumTest @MediumTest
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testConsentPersistsLowerLevel() { public void testConsentPersistsLowerLevel() {
mWebXrVrConsentTestFramework.loadUrlAndAwaitInitialization( mWebXrVrConsentTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_webxr_consent"), "test_webxr_consent", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
// Set up to request the highest level of consent support on Android (height). // Set up to request the highest level of consent support on Android (height).
mWebXrVrConsentTestFramework.runJavaScriptOrFail( mWebXrVrConsentTestFramework.runJavaScriptOrFail(
...@@ -155,9 +151,8 @@ public class WebXrVrConsentTest { ...@@ -155,9 +151,8 @@ public class WebXrVrConsentTest {
@MediumTest @MediumTest
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testConsentRepromptsHigherLevel() { public void testConsentRepromptsHigherLevel() {
mWebXrVrConsentTestFramework.loadUrlAndAwaitInitialization( mWebXrVrConsentTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_webxr_consent"), "test_webxr_consent", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
// Request a session at the lowest level of consent, and ensure that it is entered. // Request a session at the lowest level of consent, and ensure that it is entered.
mWebXrVrConsentTestFramework.runJavaScriptOrFail( mWebXrVrConsentTestFramework.runJavaScriptOrFail(
...@@ -179,16 +174,14 @@ public class WebXrVrConsentTest { ...@@ -179,16 +174,14 @@ public class WebXrVrConsentTest {
@MediumTest @MediumTest
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testConsentRepromptsAfterReload() { public void testConsentRepromptsAfterReload() {
mWebXrVrConsentTestFramework.loadUrlAndAwaitInitialization( mWebXrVrConsentTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page"), "generic_webxr_page", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrConsentTestFramework.enterSessionWithUserGestureOrFail(); mWebXrVrConsentTestFramework.enterSessionWithUserGestureOrFail();
mWebXrVrConsentTestFramework.endSession(); mWebXrVrConsentTestFramework.endSession();
mWebXrVrConsentTestFramework.loadUrlAndAwaitInitialization( mWebXrVrConsentTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page"), "generic_webxr_page", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrConsentTestFramework.enterSessionWithUserGestureOrFail(); mWebXrVrConsentTestFramework.enterSessionWithUserGestureOrFail();
} }
} }
...@@ -76,9 +76,8 @@ public class WebXrVrDeviceTest { ...@@ -76,9 +76,8 @@ public class WebXrVrDeviceTest {
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
@MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) // WebXR is only supported on L+ @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) // WebXR is only supported on L+
public void testWebXrCapabilities() { public void testWebXrCapabilities() {
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_webxr_capabilities"), "test_webxr_capabilities", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.executeStepAndWait("stepCheckCapabilities('Daydream')"); mWebXrVrTestFramework.executeStepAndWait("stepCheckCapabilities('Daydream')");
mWebXrVrTestFramework.endTest(); mWebXrVrTestFramework.endTest();
} }
...@@ -99,9 +98,8 @@ public class WebXrVrDeviceTest { ...@@ -99,9 +98,8 @@ public class WebXrVrDeviceTest {
@MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) // WebXR is only supported on L+ @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) // WebXR is only supported on L+
public void testForNullPosesInInlineVrPostImmersive() { public void testForNullPosesInInlineVrPostImmersive() {
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_inline_vr_poses"), "test_inline_vr_poses", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.enterMagicWindowSessionWithUserGestureOrFail(); mWebXrVrTestFramework.enterMagicWindowSessionWithUserGestureOrFail();
mWebXrVrTestFramework.enterSessionWithUserGestureOrFail(); mWebXrVrTestFramework.enterSessionWithUserGestureOrFail();
...@@ -135,9 +133,8 @@ public class WebXrVrDeviceTest { ...@@ -135,9 +133,8 @@ public class WebXrVrDeviceTest {
@Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM) @Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM)
@MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) // WebXR is only supported on L+ @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) // WebXR is only supported on L+
public void testForNullPosesInInlineVrFromNfc() { public void testForNullPosesInInlineVrFromNfc() {
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_inline_vr_poses"), "test_inline_vr_poses", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
NfcSimUtils.simNfcScanUntilVrEntry(mTestRule.getActivity()); NfcSimUtils.simNfcScanUntilVrEntry(mTestRule.getActivity());
mWebXrVrTestFramework.enterMagicWindowSessionWithUserGestureOrFail(); mWebXrVrTestFramework.enterMagicWindowSessionWithUserGestureOrFail();
...@@ -169,9 +166,8 @@ public class WebXrVrDeviceTest { ...@@ -169,9 +166,8 @@ public class WebXrVrDeviceTest {
@MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) // WebXR is only supported on L+ @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP) // WebXR is only supported on L+
public void testForNullPosesInInlineVrOnNavigation() { public void testForNullPosesInInlineVrOnNavigation() {
NfcSimUtils.simNfcScanUntilVrEntry(mTestRule.getActivity()); NfcSimUtils.simNfcScanUntilVrEntry(mTestRule.getActivity());
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_inline_vr_poses"), "test_inline_vr_poses", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.enterMagicWindowSessionWithUserGestureOrFail(); mWebXrVrTestFramework.enterMagicWindowSessionWithUserGestureOrFail();
mWebXrVrTestFramework.executeStepAndWait("posesTurnedOffStep()"); mWebXrVrTestFramework.executeStepAndWait("posesTurnedOffStep()");
......
...@@ -104,14 +104,12 @@ public class WebXrVrInputTest { ...@@ -104,14 +104,12 @@ public class WebXrVrInputTest {
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void public void
testScreenTapsNotRegistered_WebXr() throws InterruptedException { testScreenTapsNotRegistered_WebXr() throws InterruptedException {
screenTapsNotRegisteredImpl(WebXrVrTestFramework.getFileUrlForHtmlTestFile( screenTapsNotRegisteredImpl("webxr_test_screen_taps_not_registered", mWebXrVrTestFramework);
"webxr_test_screen_taps_not_registered"),
mWebXrVrTestFramework);
} }
private void screenTapsNotRegisteredImpl(String url, final WebXrVrTestFramework framework) private void screenTapsNotRegisteredImpl(String url, final WebXrVrTestFramework framework)
throws InterruptedException { throws InterruptedException {
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.executeStepAndWait("stepVerifyNoInitialTaps()"); framework.executeStepAndWait("stepVerifyNoInitialTaps()");
framework.enterSessionWithUserGestureOrFail(); framework.enterSessionWithUserGestureOrFail();
VrTransitionUtils.waitForOverlayGone(); VrTransitionUtils.waitForOverlayGone();
...@@ -143,9 +141,8 @@ public class WebXrVrInputTest { ...@@ -143,9 +141,8 @@ public class WebXrVrInputTest {
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testControllerClicksRegisteredOnDaydream_WebXr() { public void testControllerClicksRegisteredOnDaydream_WebXr() {
EmulatedVrController controller = new EmulatedVrController(mTestRule.getActivity()); EmulatedVrController controller = new EmulatedVrController(mTestRule.getActivity());
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_webxr_input"), "test_webxr_input", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.enterSessionWithUserGestureOrFail(); mWebXrVrTestFramework.enterSessionWithUserGestureOrFail();
int numIterations = 10; int numIterations = 10;
...@@ -177,9 +174,8 @@ public class WebXrVrInputTest { ...@@ -177,9 +174,8 @@ public class WebXrVrInputTest {
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testControllerExposedAsGamepadOnDaydream_WebXr() { public void testControllerExposedAsGamepadOnDaydream_WebXr() {
EmulatedVrController controller = new EmulatedVrController(mTestRule.getActivity()); EmulatedVrController controller = new EmulatedVrController(mTestRule.getActivity());
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_webxr_gamepad_support"), "test_webxr_gamepad_support", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.enterSessionWithUserGestureOrFail(); mWebXrVrTestFramework.enterSessionWithUserGestureOrFail();
// There must be interaction with the controller before an XRInputSource // There must be interaction with the controller before an XRInputSource
...@@ -292,9 +288,8 @@ public class WebXrVrInputTest { ...@@ -292,9 +288,8 @@ public class WebXrVrInputTest {
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testScreenTapsRegisteredOnCardboard_WebXr() { public void testScreenTapsRegisteredOnCardboard_WebXr() {
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_webxr_input"), "test_webxr_input", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.enterSessionWithUserGestureOrFail(); mWebXrVrTestFramework.enterSessionWithUserGestureOrFail();
// Make it so that the webpage doesn't try to finish the JavaScript step after each input // Make it so that the webpage doesn't try to finish the JavaScript step after each input
// since we don't need to ack each one like with the Daydream controller. // since we don't need to ack each one like with the Daydream controller.
...@@ -328,9 +323,8 @@ public class WebXrVrInputTest { ...@@ -328,9 +323,8 @@ public class WebXrVrInputTest {
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testTransientScreenTapsRegisteredOnCardboard_WebXr() { public void testTransientScreenTapsRegisteredOnCardboard_WebXr() {
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_webxr_transient_input"), "test_webxr_transient_input", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
// Make it so that the webpage doesn't try to finish the JavaScript step after each input // Make it so that the webpage doesn't try to finish the JavaScript step after each input
// since we don't need to ack each one like with the Daydream controller. // since we don't need to ack each one like with the Daydream controller.
mWebXrVrTestFramework.runJavaScriptOrFail( mWebXrVrTestFramework.runJavaScriptOrFail(
...@@ -359,20 +353,18 @@ public class WebXrVrInputTest { ...@@ -359,20 +353,18 @@ public class WebXrVrInputTest {
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testPresentationLocksFocus_WebXr() { public void testPresentationLocksFocus_WebXr() {
presentationLocksFocusImpl(WebXrVrTestFramework.getFileUrlForHtmlTestFile( presentationLocksFocusImpl("webxr_test_presentation_locks_focus", mWebXrVrTestFramework);
"webxr_test_presentation_locks_focus"),
mWebXrVrTestFramework);
} }
private void presentationLocksFocusImpl(String url, WebXrVrTestFramework framework) { private void presentationLocksFocusImpl(String url, WebXrVrTestFramework framework) {
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.enterSessionWithUserGestureOrFail(); framework.enterSessionWithUserGestureOrFail();
framework.executeStepAndWait("stepSetupFocusLoss()"); framework.executeStepAndWait("stepSetupFocusLoss()");
framework.endTest(); framework.endTest();
} }
private void appButtonExitsPresentationImpl(String url, WebXrVrTestFramework framework) { private void appButtonExitsPresentationImpl(String url, WebXrVrTestFramework framework) {
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.enterSessionWithUserGestureOrFail(); framework.enterSessionWithUserGestureOrFail();
NativeUiUtils.clickAppButton(UserFriendlyElementName.NONE, new PointF()); NativeUiUtils.clickAppButton(UserFriendlyElementName.NONE, new PointF());
assertAppButtonEffect(true /* shouldHaveExited */, framework); assertAppButtonEffect(true /* shouldHaveExited */, framework);
...@@ -389,8 +381,7 @@ public class WebXrVrInputTest { ...@@ -389,8 +381,7 @@ public class WebXrVrInputTest {
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
public void testAppButtonNoopsWhenBrowsingDisabled_WebXr() throws ExecutionException { public void testAppButtonNoopsWhenBrowsingDisabled_WebXr() throws ExecutionException {
appButtonNoopsTestImpl(WebXrVrTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page"), appButtonNoopsTestImpl("generic_webxr_page", mWebXrVrTestFramework);
mWebXrVrTestFramework);
} }
/** /**
...@@ -405,14 +396,13 @@ public class WebXrVrInputTest { ...@@ -405,14 +396,13 @@ public class WebXrVrInputTest {
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
public void public void
testAppButtonNoopsWhenBrowsingNotSupported_WebXr() throws ExecutionException { testAppButtonNoopsWhenBrowsingNotSupported_WebXr() throws ExecutionException {
appButtonNoopsTestImpl(WebXrVrTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page"), appButtonNoopsTestImpl("generic_webxr_page", mWebXrVrTestFramework);
mWebXrVrTestFramework);
} }
private void appButtonNoopsTestImpl(String url, WebXrVrTestFramework framework) private void appButtonNoopsTestImpl(String url, WebXrVrTestFramework framework)
throws ExecutionException { throws ExecutionException {
VrShellDelegateUtils.getDelegateInstance().setVrBrowsingDisabled(true); VrShellDelegateUtils.getDelegateInstance().setVrBrowsingDisabled(true);
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.enterSessionWithUserGestureOrFail(); framework.enterSessionWithUserGestureOrFail();
MockVrDaydreamApi mockApi = new MockVrDaydreamApi(); MockVrDaydreamApi mockApi = new MockVrDaydreamApi();
...@@ -441,13 +431,11 @@ public class WebXrVrInputTest { ...@@ -441,13 +431,11 @@ public class WebXrVrInputTest {
@Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM_OR_STANDALONE) @Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM_OR_STANDALONE)
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
public void testAppButtonAfterPageStopsSubmitting_WebXr() { public void testAppButtonAfterPageStopsSubmitting_WebXr() {
appButtonAfterPageStopsSubmittingImpl( appButtonAfterPageStopsSubmittingImpl("webxr_page_submits_once", mWebXrVrTestFramework);
WebXrVrTestFramework.getFileUrlForHtmlTestFile("webxr_page_submits_once"),
mWebXrVrTestFramework);
} }
private void appButtonAfterPageStopsSubmittingImpl(String url, WebXrVrTestFramework framework) { private void appButtonAfterPageStopsSubmittingImpl(String url, WebXrVrTestFramework framework) {
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.enterSessionWithUserGestureOrFail(); framework.enterSessionWithUserGestureOrFail();
// Wait for page to stop submitting frames. // Wait for page to stop submitting frames.
framework.waitOnJavaScriptStep(); framework.waitOnJavaScriptStep();
...@@ -485,9 +473,8 @@ public class WebXrVrInputTest { ...@@ -485,9 +473,8 @@ public class WebXrVrInputTest {
} }
private void webxrGamepadSupportImpl(boolean daydream) { private void webxrGamepadSupportImpl(boolean daydream) {
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("test_webxr_gamepad_support"), "test_webxr_gamepad_support", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.enterSessionWithUserGestureOrFail(); mWebXrVrTestFramework.enterSessionWithUserGestureOrFail();
// Spam input to make sure the Gamepad API registers the gamepad if it should. // Spam input to make sure the Gamepad API registers the gamepad if it should.
...@@ -548,10 +535,8 @@ public class WebXrVrInputTest { ...@@ -548,10 +535,8 @@ public class WebXrVrInputTest {
private void testAppButtonLongPressDisplaysPermissionsImpl() throws InterruptedException { private void testAppButtonLongPressDisplaysPermissionsImpl() throws InterruptedException {
// Note that we need to pass in the WebContents to use throughout this because automatically // Note that we need to pass in the WebContents to use throughout this because automatically
// using the first tab's WebContents doesn't work in Incognito. // using the first tab's WebContents doesn't work in Incognito.
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
mWebXrVrTestFramework.getEmbeddedServerUrlForHtmlTestFile( "generic_webxr_permission_page", PAGE_LOAD_TIMEOUT_S);
"generic_webxr_permission_page"),
PAGE_LOAD_TIMEOUT_S);
WebXrVrTestFramework.runJavaScriptOrFail("requestPermission({audio:true})", WebXrVrTestFramework.runJavaScriptOrFail("requestPermission({audio:true})",
POLL_TIMEOUT_SHORT_MS, mTestRule.getWebContents()); POLL_TIMEOUT_SHORT_MS, mTestRule.getWebContents());
...@@ -630,10 +615,8 @@ public class WebXrVrInputTest { ...@@ -630,10 +615,8 @@ public class WebXrVrInputTest {
private void testInSessionPermissionRequestsImpl() { private void testInSessionPermissionRequestsImpl() {
// Note that we need to pass in the WebContents to use throughout this because automatically // Note that we need to pass in the WebContents to use throughout this because automatically
// using the first tab's WebContents doesn't work in Incognito. // using the first tab's WebContents doesn't work in Incognito.
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
mWebXrVrTestFramework.getEmbeddedServerUrlForHtmlTestFile( "generic_webxr_permission_page", PAGE_LOAD_TIMEOUT_S);
"generic_webxr_permission_page"),
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.enterSessionWithUserGestureOrFail(mTestRule.getWebContents()); mWebXrVrTestFramework.enterSessionWithUserGestureOrFail(mTestRule.getWebContents());
NativeUiUtils.enableMockedInput(); NativeUiUtils.enableMockedInput();
NativeUiUtils.performActionAndWaitForVisibilityStatus( NativeUiUtils.performActionAndWaitForVisibilityStatus(
......
...@@ -74,13 +74,11 @@ public class WebXrVrTabTest { ...@@ -74,13 +74,11 @@ public class WebXrVrTabTest {
@Restriction(RESTRICTION_TYPE_SVR) @Restriction(RESTRICTION_TYPE_SVR)
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
public void testPoseDataUnfocusedTab_WebXr() { public void testPoseDataUnfocusedTab_WebXr() {
testPoseDataUnfocusedTabImpl(WebXrVrTestFramework.getFileUrlForHtmlTestFile( testPoseDataUnfocusedTabImpl("webxr_test_pose_data_unfocused_tab", mWebXrVrTestFramework);
"webxr_test_pose_data_unfocused_tab"),
mWebXrVrTestFramework);
} }
private void testPoseDataUnfocusedTabImpl(String url, WebXrVrTestFramework framework) { private void testPoseDataUnfocusedTabImpl(String url, WebXrVrTestFramework framework) {
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.executeStepAndWait("stepCheckFrameDataWhileFocusedTab()"); framework.executeStepAndWait("stepCheckFrameDataWhileFocusedTab()");
WebContents firstTabContents = framework.getCurrentWebContents(); WebContents firstTabContents = framework.getCurrentWebContents();
...@@ -112,10 +110,8 @@ public class WebXrVrTabTest { ...@@ -112,10 +110,8 @@ public class WebXrVrTabTest {
} }
private void testPermissionsInOtherTabImpl(boolean incognito) throws InterruptedException { private void testPermissionsInOtherTabImpl(boolean incognito) throws InterruptedException {
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
mWebXrVrTestFramework.getEmbeddedServerUrlForHtmlTestFile( "generic_webxr_permission_page", PAGE_LOAD_TIMEOUT_S);
"generic_webxr_permission_page"),
PAGE_LOAD_TIMEOUT_S);
// Be sure to store the stream we're given so that the permission is actually in use, as // Be sure to store the stream we're given so that the permission is actually in use, as
// otherwise the toast doesn't show up since another tab isn't actually using the // otherwise the toast doesn't show up since another tab isn't actually using the
// permission. // permission.
...@@ -143,9 +139,8 @@ public class WebXrVrTabTest { ...@@ -143,9 +139,8 @@ public class WebXrVrTabTest {
mTestRule.loadUrlInNewTab("about:blank"); mTestRule.loadUrlInNewTab("about:blank");
} }
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page"), "generic_webxr_page", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.enterSessionWithUserGestureOrFail(); mWebXrVrTestFramework.enterSessionWithUserGestureOrFail();
NativeUiUtils.performActionAndWaitForVisibilityStatus( NativeUiUtils.performActionAndWaitForVisibilityStatus(
UserFriendlyElementName.WEB_XR_AUDIO_INDICATOR, true /* visible */, () -> {}); UserFriendlyElementName.WEB_XR_AUDIO_INDICATOR, true /* visible */, () -> {});
......
...@@ -97,13 +97,11 @@ public class WebXrVrTransitionTest { ...@@ -97,13 +97,11 @@ public class WebXrVrTransitionTest {
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testRequestSessionEntersVr() { public void testRequestSessionEntersVr() {
testPresentationEntryImpl( testPresentationEntryImpl("generic_webxr_page", mWebXrVrTestFramework);
WebXrVrTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page"),
mWebXrVrTestFramework);
} }
private void testPresentationEntryImpl(String url, WebXrVrTestFramework framework) { private void testPresentationEntryImpl(String url, WebXrVrTestFramework framework) {
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.enterSessionWithUserGestureOrFail(); framework.enterSessionWithUserGestureOrFail();
Assert.assertTrue("Browser did not enter VR", VrShellDelegate.isInVr()); Assert.assertTrue("Browser did not enter VR", VrShellDelegate.isInVr());
...@@ -150,13 +148,12 @@ public class WebXrVrTransitionTest { ...@@ -150,13 +148,12 @@ public class WebXrVrTransitionTest {
.Add({"disable-features=WebXR"}) .Add({"disable-features=WebXR"})
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testWebXrDisabledWithoutFlagSet() { public void testWebXrDisabledWithoutFlagSet() {
apiDisabledWithoutFlagSetImpl(WebXrVrTestFramework.getFileUrlForHtmlTestFile( apiDisabledWithoutFlagSetImpl(
"test_webxr_disabled_without_flag_set"), "test_webxr_disabled_without_flag_set", mWebXrVrTestFramework);
mWebXrVrTestFramework);
} }
private void apiDisabledWithoutFlagSetImpl(String url, WebXrVrTestFramework framework) { private void apiDisabledWithoutFlagSetImpl(String url, WebXrVrTestFramework framework) {
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.waitOnJavaScriptStep(); framework.waitOnJavaScriptStep();
framework.endTest(); framework.endTest();
} }
...@@ -173,14 +170,13 @@ public class WebXrVrTransitionTest { ...@@ -173,14 +170,13 @@ public class WebXrVrTransitionTest {
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testPresentationPromiseUnresolvedDuringDon_WebXr() { public void testPresentationPromiseUnresolvedDuringDon_WebXr() {
presentationPromiseUnresolvedDuringDonImpl( presentationPromiseUnresolvedDuringDonImpl(
WebXrVrTestFramework.getFileUrlForHtmlTestFile(
"webxr_test_presentation_promise_unresolved_during_don"), "webxr_test_presentation_promise_unresolved_during_don", mWebXrVrTestFramework);
mWebXrVrTestFramework);
} }
private void presentationPromiseUnresolvedDuringDonImpl( private void presentationPromiseUnresolvedDuringDonImpl(
String url, WebXrVrTestFramework framework) { String url, WebXrVrTestFramework framework) {
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.enterSessionWithUserGestureAndWait(); framework.enterSessionWithUserGestureAndWait();
framework.endTest(); framework.endTest();
} }
...@@ -196,14 +192,13 @@ public class WebXrVrTransitionTest { ...@@ -196,14 +192,13 @@ public class WebXrVrTransitionTest {
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testPresentationPromiseRejectedIfDonCanceled_WebXr() { public void testPresentationPromiseRejectedIfDonCanceled_WebXr() {
presentationPromiseRejectedIfDonCanceledImpl( presentationPromiseRejectedIfDonCanceledImpl(
WebXrVrTestFramework.getFileUrlForHtmlTestFile(
"webxr_test_presentation_promise_rejected_if_don_canceled"), "webxr_test_presentation_promise_rejected_if_don_canceled", mWebXrVrTestFramework);
mWebXrVrTestFramework);
} }
private void presentationPromiseRejectedIfDonCanceledImpl( private void presentationPromiseRejectedIfDonCanceledImpl(
String url, WebXrVrTestFramework framework) { String url, WebXrVrTestFramework framework) {
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
final UiDevice uiDevice = final UiDevice uiDevice =
UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
framework.enterSessionWithUserGesture(); framework.enterSessionWithUserGesture();
...@@ -226,14 +221,12 @@ public class WebXrVrTransitionTest { ...@@ -226,14 +221,12 @@ public class WebXrVrTransitionTest {
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
@Restriction(RESTRICTION_TYPE_SVR) @Restriction(RESTRICTION_TYPE_SVR)
public void testControlsVisibleAfterExitingVr_WebXr() throws InterruptedException { public void testControlsVisibleAfterExitingVr_WebXr() throws InterruptedException {
controlsVisibleAfterExitingVrImpl( controlsVisibleAfterExitingVrImpl("generic_webxr_page", mWebXrVrTestFramework);
WebXrVrTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page"),
mWebXrVrTestFramework);
} }
private void controlsVisibleAfterExitingVrImpl(String url, final WebXrVrTestFramework framework) private void controlsVisibleAfterExitingVrImpl(String url, final WebXrVrTestFramework framework)
throws InterruptedException { throws InterruptedException {
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.enterSessionWithUserGestureOrFail(); framework.enterSessionWithUserGestureOrFail();
VrTransitionUtils.forceExitVr(); VrTransitionUtils.forceExitVr();
// The hiding of the controls may only propagate after VR has exited, so give it a chance // The hiding of the controls may only propagate after VR has exited, so give it a chance
...@@ -262,14 +255,14 @@ public class WebXrVrTransitionTest { ...@@ -262,14 +255,14 @@ public class WebXrVrTransitionTest {
public void testWindowRafStopsFiringWhilePresenting_WebXr() public void testWindowRafStopsFiringWhilePresenting_WebXr()
throws InterruptedException { throws InterruptedException {
windowRafStopsFiringWhilePresentingImpl( windowRafStopsFiringWhilePresentingImpl(
WebXrVrTestFramework.getFileUrlForHtmlTestFile(
"webxr_test_window_raf_stops_firing_during_immersive_session"), "webxr_test_window_raf_stops_firing_during_immersive_session",
mWebXrVrTestFramework); mWebXrVrTestFramework);
} }
private void windowRafStopsFiringWhilePresentingImpl(String url, WebXrVrTestFramework framework) private void windowRafStopsFiringWhilePresentingImpl(String url, WebXrVrTestFramework framework)
throws InterruptedException { throws InterruptedException {
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.executeStepAndWait("stepVerifyBeforePresent()"); framework.executeStepAndWait("stepVerifyBeforePresent()");
// Pausing of window.rAF is done asynchronously, so wait until that's done. // Pausing of window.rAF is done asynchronously, so wait until that's done.
final CountDownLatch vsyncPausedLatch = new CountDownLatch(1); final CountDownLatch vsyncPausedLatch = new CountDownLatch(1);
...@@ -291,13 +284,11 @@ public class WebXrVrTransitionTest { ...@@ -291,13 +284,11 @@ public class WebXrVrTransitionTest {
@Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM_OR_STANDALONE) @Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM_OR_STANDALONE)
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
public void testRendererKilledInWebXrStaysInVr() throws IllegalArgumentException { public void testRendererKilledInWebXrStaysInVr() throws IllegalArgumentException {
rendererKilledInVrStaysInVrImpl( rendererKilledInVrStaysInVrImpl("generic_webxr_page", mWebXrVrTestFramework);
WebXrVrTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page"),
mWebXrVrTestFramework);
} }
private void rendererKilledInVrStaysInVrImpl(String url, WebXrVrTestFramework framework) { private void rendererKilledInVrStaysInVrImpl(String url, WebXrVrTestFramework framework) {
framework.loadUrlAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S); framework.loadFileAndAwaitInitialization(url, PAGE_LOAD_TIMEOUT_S);
framework.enterSessionWithUserGestureOrFail(); framework.enterSessionWithUserGestureOrFail();
framework.simulateRendererKilled(); framework.simulateRendererKilled();
Assert.assertTrue("Browser did not enter VR", VrShellDelegate.isInVr()); Assert.assertTrue("Browser did not enter VR", VrShellDelegate.isInVr());
...@@ -312,10 +303,8 @@ public class WebXrVrTransitionTest { ...@@ -312,10 +303,8 @@ public class WebXrVrTransitionTest {
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
public void testWindowRafFiresDuringNonImmersiveSession() { public void testWindowRafFiresDuringNonImmersiveSession() {
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile( "test_window_raf_fires_during_non_immersive_session", PAGE_LOAD_TIMEOUT_S);
"test_window_raf_fires_during_non_immersive_session"),
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.waitOnJavaScriptStep(); mWebXrVrTestFramework.waitOnJavaScriptStep();
mWebXrVrTestFramework.endTest(); mWebXrVrTestFramework.endTest();
} }
...@@ -330,10 +319,8 @@ public class WebXrVrTransitionTest { ...@@ -330,10 +319,8 @@ public class WebXrVrTransitionTest {
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL})
@DisableFeatures(ChromeFeatureList.SEND_TAB_TO_SELF) @DisableFeatures(ChromeFeatureList.SEND_TAB_TO_SELF)
public void testNonImmersiveStopsDuringImmersive() { public void testNonImmersiveStopsDuringImmersive() {
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile( "test_non_immersive_stops_during_immersive", PAGE_LOAD_TIMEOUT_S);
"test_non_immersive_stops_during_immersive"),
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.executeStepAndWait("stepBeforeImmersive()"); mWebXrVrTestFramework.executeStepAndWait("stepBeforeImmersive()");
mWebXrVrTestFramework.enterSessionWithUserGestureOrFail(); mWebXrVrTestFramework.enterSessionWithUserGestureOrFail();
mWebXrVrTestFramework.executeStepAndWait("stepDuringImmersive()"); mWebXrVrTestFramework.executeStepAndWait("stepDuringImmersive()");
...@@ -352,9 +339,8 @@ public class WebXrVrTransitionTest { ...@@ -352,9 +339,8 @@ public class WebXrVrTransitionTest {
@CommandLineFlags.Add({"enable-features=WebXR"}) @CommandLineFlags.Add({"enable-features=WebXR"})
@XrActivityRestriction({XrActivityRestriction.SupportedActivity.CTA}) @XrActivityRestriction({XrActivityRestriction.SupportedActivity.CTA})
public void testAppButtonExitToast() { public void testAppButtonExitToast() {
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page"), "generic_webxr_page", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.enterSessionWithUserGestureOrFail(); mWebXrVrTestFramework.enterSessionWithUserGestureOrFail();
NativeUiUtils.performActionAndWaitForVisibilityStatus( NativeUiUtils.performActionAndWaitForVisibilityStatus(
UserFriendlyElementName.APP_BUTTON_EXIT_TOAST, true /* visible*/, () -> {}); UserFriendlyElementName.APP_BUTTON_EXIT_TOAST, true /* visible*/, () -> {});
...@@ -371,9 +357,8 @@ public class WebXrVrTransitionTest { ...@@ -371,9 +357,8 @@ public class WebXrVrTransitionTest {
public void testConsentDialogIsDismissedWhenPageNavigatesAwayInMainFrame() { public void testConsentDialogIsDismissedWhenPageNavigatesAwayInMainFrame() {
mWebXrVrTestFramework.setConsentDialogAction( mWebXrVrTestFramework.setConsentDialogAction(
WebXrVrTestFramework.CONSENT_DIALOG_ACTION_DO_NOTHING); WebXrVrTestFramework.CONSENT_DIALOG_ACTION_DO_NOTHING);
mWebXrVrTestFramework.loadUrlAndAwaitInitialization( mWebXrVrTestFramework.loadFileAndAwaitInitialization(
WebXrVrTestFramework.getFileUrlForHtmlTestFile("generic_webxr_page"), "generic_webxr_page", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
mWebXrVrTestFramework.enterSessionWithUserGesture(); mWebXrVrTestFramework.enterSessionWithUserGesture();
mWebXrVrTestFramework.runJavaScriptOrFail( mWebXrVrTestFramework.runJavaScriptOrFail(
"window.location.href = 'https://google.com'", POLL_TIMEOUT_SHORT_MS); "window.location.href = 'https://google.com'", POLL_TIMEOUT_SHORT_MS);
......
...@@ -11,7 +11,6 @@ import androidx.annotation.IntDef; ...@@ -11,7 +11,6 @@ import androidx.annotation.IntDef;
import org.junit.Assert; import org.junit.Assert;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.base.test.util.UrlUtils;
import org.chromium.chrome.browser.tab.SadTab; import org.chromium.chrome.browser.tab.SadTab;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabLaunchType; import org.chromium.chrome.browser.tab.TabLaunchType;
...@@ -84,17 +83,6 @@ public abstract class XrTestFramework { ...@@ -84,17 +83,6 @@ public abstract class XrTestFramework {
private ChromeActivityTestRule mRule; private ChromeActivityTestRule mRule;
/**
* Gets the file:// URL to the test file.
*
* @param testName The name of the test whose file will be retrieved.
* @return The file:// URL to the specified test file.
*/
public static String getFileUrlForHtmlTestFile(String testName) {
return "file://" + UrlUtils.getIsolatedTestFilePath(TEST_DIR) + "/html/" + testName
+ ".html";
}
/** /**
* Checks whether a request for the given permission would trigger a permission prompt. * Checks whether a request for the given permission would trigger a permission prompt.
* *
...@@ -395,24 +383,27 @@ public abstract class XrTestFramework { ...@@ -395,24 +383,27 @@ public abstract class XrTestFramework {
} }
/** /**
* Gets the URL that loads the given test file from the embedded test server. * Gets the URL that loads the given test file from the embedded test server
* Note that because sessions may cause permissions prompts to appear, this
* uses the embedded server, as granting permissions to file:// URLs results
* in DCHECKs.
* *
* @param testName The name of the test whose file will be retrieved. * @param testName The name of the test whose file will be retrieved.
*/ */
public String getEmbeddedServerUrlForHtmlTestFile(String testName) { public String getUrlForFile(String testName) {
return mRule.getTestServer().getURL("/" + TEST_DIR + "/html/" + testName + ".html"); return mRule.getTestServer().getURL("/" + TEST_DIR + "/html/" + testName + ".html");
} }
/** /**
* Loads the given URL with the given timeout then waits for JavaScript to * Loads the given file on an embedded server with the given timeout then
* signal that it's ready for testing. * waits for JavaScript to signal that it's ready for testing.
* *
* @param url The URL of the page to load. * @param file The name of the page to load.
* @param timeoutSec The timeout of the page load in seconds. * @param timeoutSec The timeout of the page load in seconds.
* @return The return value of ChromeActivityTestRule.loadUrl(). * @return The return value of ChromeActivityTestRule.loadUrl().
*/ */
public int loadUrlAndAwaitInitialization(String url, int timeoutSec) { public int loadFileAndAwaitInitialization(String url, int timeoutSec) {
int result = mRule.loadUrl(url, timeoutSec); int result = mRule.loadUrl(getUrlForFile(url), timeoutSec);
Assert.assertTrue("Timed out waiting for JavaScript test initialization", Assert.assertTrue("Timed out waiting for JavaScript test initialization",
pollJavaScriptBoolean("isInitializationComplete()", POLL_TIMEOUT_LONG_MS, pollJavaScriptBoolean("isInitializationComplete()", POLL_TIMEOUT_LONG_MS,
mRule.getWebContents())); mRule.getWebContents()));
......
...@@ -27,7 +27,7 @@ For a concrete example, take a look at ...@@ -27,7 +27,7 @@ For a concrete example, take a look at
The general flow in tests will be: The general flow in tests will be:
1. Load the HTML file with loadUrlAndAwaitInitialization - this ensures that any 1. Load the HTML file with loadFileAndAwaitInitialization - this ensures that any
pre-test setup in JavaScript is completed. pre-test setup in JavaScript is completed.
2. Run some code on Java's side. 2. Run some code on Java's side.
3. Trigger some JavaScript code and wait for it to signal that it is finished. 3. Trigger some JavaScript code and wait for it to signal that it is finished.
...@@ -192,4 +192,4 @@ bucket. ...@@ -192,4 +192,4 @@ bucket.
[webxr_vr_transition_test_html]: https://chromium.googlesource.com/chromium/src/+/master/chrome/test/data/xr/e2e_test_files/html/test_non_immersive_stops_during_immersive.html [webxr_vr_transition_test_html]: https://chromium.googlesource.com/chromium/src/+/master/chrome/test/data/xr/e2e_test_files/html/test_non_immersive_stops_during_immersive.html
[vr_settings_service_utils]: https://chromium.googlesource.com/chromium/src/+/master/chrome/android/javatests/src/org/chromium/chrome/browser/vr/util/VrSettingsServiceUtils.java [vr_settings_service_utils]: https://chromium.googlesource.com/chromium/src/+/master/chrome/android/javatests/src/org/chromium/chrome/browser/vr/util/VrSettingsServiceUtils.java
[vr_browser_transition_test]: https://chromium.googlesource.com/chromium/src/+/master/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserTransitionTest.java [vr_browser_transition_test]: https://chromium.googlesource.com/chromium/src/+/master/chrome/android/javatests/src/org/chromium/chrome/browser/vr/VrBrowserTransitionTest.java
[build_gn]: https://chromium.googlesource.com/chromium/src/+/master/chrome/android/BUILD.gn [build_gn]: https://chromium.googlesource.com/chromium/src/+/master/chrome/android/BUILD.gn
\ No newline at end of file
...@@ -55,9 +55,8 @@ public class VrBrowserJavaScriptModalDialogTest { ...@@ -55,9 +55,8 @@ public class VrBrowserJavaScriptModalDialogTest {
public void setUp() { public void setUp() {
mActivity = mActivityTestRule.getActivity(); mActivity = mActivityTestRule.getActivity();
mVrBrowserTestFramework = new VrBrowserTestFramework(mActivityTestRule); mVrBrowserTestFramework = new VrBrowserTestFramework(mActivityTestRule);
mVrBrowserTestFramework.loadUrlAndAwaitInitialization( mVrBrowserTestFramework.loadFileAndAwaitInitialization(
VrBrowserTestFramework.getFileUrlForHtmlTestFile("2d_permission_page"), "2d_permission_page", PAGE_LOAD_TIMEOUT_S);
PAGE_LOAD_TIMEOUT_S);
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS); VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
NativeUiUtils.enableMockedInput(); NativeUiUtils.enableMockedInput();
// Wait for any residual animations from entering VR to finish so that they don't get caught // Wait for any residual animations from entering VR to finish so that they don't get caught
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment