| Index: chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrTestBase.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrTestBase.java b/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrTestBase.java
|
| deleted file mode 100644
|
| index 5792fa21050bb1a07c7a938ef7321730cfb73f5b..0000000000000000000000000000000000000000
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrTestBase.java
|
| +++ /dev/null
|
| @@ -1,212 +0,0 @@
|
| -// Copyright 2017 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -package org.chromium.chrome.browser.vr_shell;
|
| -
|
| -import static org.chromium.chrome.browser.vr_shell.VrUtils.POLL_CHECK_INTERVAL_LONG_MS;
|
| -import static org.chromium.chrome.browser.vr_shell.VrUtils.POLL_CHECK_INTERVAL_SHORT_MS;
|
| -import static org.chromium.chrome.browser.vr_shell.VrUtils.POLL_TIMEOUT_LONG_MS;
|
| -import static org.chromium.chrome.browser.vr_shell.VrUtils.POLL_TIMEOUT_SHORT_MS;
|
| -
|
| -import org.chromium.base.Log;
|
| -import org.chromium.base.test.util.UrlUtils;
|
| -import org.chromium.chrome.test.ChromeTabbedActivityTestBase;
|
| -import org.chromium.content.browser.test.util.ClickUtils;
|
| -import org.chromium.content.browser.test.util.Criteria;
|
| -import org.chromium.content.browser.test.util.CriteriaHelper;
|
| -import org.chromium.content.browser.test.util.JavaScriptUtils;
|
| -import org.chromium.content_public.browser.WebContents;
|
| -
|
| -import java.util.concurrent.Callable;
|
| -import java.util.concurrent.TimeUnit;
|
| -import java.util.concurrent.TimeoutException;
|
| -
|
| -/**
|
| - * This is a workaround for testing aspects of WebVR that aren't testable with
|
| - * WebVR's mocked layout tests, such as E2E tests.
|
| - *
|
| - * The general test flow is:
|
| - * - Load the HTML file containing the test, which:
|
| - * - Loads the WebVR boilerplate code and some test functions
|
| - * - Sets up common elements like the canvas and synchronization variable
|
| - * - Sets up any steps that need to be triggered by the Java code
|
| - * - Check if any VRDisplay objects were found and fail the test if it doesn't
|
| - * match what we expect for that test
|
| - * - Repeat:
|
| - * - Run any necessary Java-side code, e.g. trigger a user action
|
| - * - Trigger the next JavaScript test step and wait for it to finish
|
| - *
|
| - * The JavaScript code will automatically process test results once all
|
| - * testharness.js tests are done, just like in layout tests. Once the results
|
| - * are processed, the JavaScript code will automatically signal the Java code,
|
| - * which can then grab the results and pass/fail the instrumentation test.
|
| - */
|
| -public class VrTestBase extends ChromeTabbedActivityTestBase {
|
| - private static final String TAG = "VrTestBase";
|
| - protected static final String TEST_DIR = "chrome/test/data/android/webvr_instrumentation";
|
| - protected static final int PAGE_LOAD_TIMEOUT_S = 10;
|
| -
|
| - protected WebContents mWebContents;
|
| -
|
| - @Override
|
| - protected void setUp() throws Exception {
|
| - super.setUp();
|
| - mWebContents = getActivity().getActivityTab().getWebContents();
|
| - }
|
| -
|
| - @Override
|
| - public void startMainActivity() throws InterruptedException {
|
| - startMainActivityOnBlankPage();
|
| - }
|
| -
|
| - /**
|
| - * 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
|
| - */
|
| - protected static String getHtmlTestFile(String testName) {
|
| - return "file://" + UrlUtils.getIsolatedTestFilePath(TEST_DIR) + "/html/" + testName
|
| - + ".html";
|
| - }
|
| -
|
| - /**
|
| - * Blocks until the promise returned by nagivator.getVRDisplays() resolves,
|
| - * then checks whether a VRDisplay was actually found.
|
| - * @param webContents The WebContents to run the JavaScript through
|
| - * @return Whether a VRDisplay was found
|
| - */
|
| - protected boolean vrDisplayFound(WebContents webContents) {
|
| - pollJavaScriptBoolean("vrDisplayPromiseDone", POLL_TIMEOUT_SHORT_MS, webContents);
|
| - return !runJavaScriptOrFail("vrDisplay", POLL_TIMEOUT_SHORT_MS, webContents).equals("null");
|
| - }
|
| -
|
| - /**
|
| - * Use to tap in the middle of the screen, triggering the canvas' onclick
|
| - * to fulfil WebVR's gesture requirement for presenting.
|
| - */
|
| - protected void enterVrTap() {
|
| - ClickUtils.mouseSingleClickView(
|
| - getInstrumentation(), getActivity().getWindow().getDecorView().getRootView());
|
| - }
|
| -
|
| - /**
|
| - * Taps in the middle of the screen then waits for the JavaScript step to finish.
|
| - * @param webContents The WebContents for the tab the JavaScript step is in
|
| - */
|
| - protected void enterVrTapAndWait(WebContents webContents) {
|
| - enterVrTap();
|
| - waitOnJavaScriptStep(webContents);
|
| - }
|
| -
|
| - /**
|
| - * Use to simulate a Daydream View NFC scan without blocking afterwards
|
| - */
|
| - protected void simNfcScan() {
|
| - VrUtils.simNfc(getActivity());
|
| - }
|
| -
|
| - /**
|
| - * Simulate an NFC scan and wait for the JavaScript code in the given
|
| - * WebContents to signal that it is done with the step.
|
| - * @param webContents The WebContents for the JavaScript that will be polled
|
| - */
|
| - protected void simNfcScanAndWait(WebContents webContents) {
|
| - simNfcScan();
|
| - waitOnJavaScriptStep(webContents);
|
| - }
|
| -
|
| - /**
|
| - * Helper function to run the given JavaScript, return the return value,
|
| - * and fail if a timeout/interrupt occurs so we don't have to catch or
|
| - * declare exceptions all the time.
|
| - * @param js The JavaScript to run
|
| - * @param timeout The timeout in milliseconds before a failure
|
| - * @param webContents The WebContents object to run the JavaScript in
|
| - * @return The return value of the JavaScript
|
| - */
|
| - protected String runJavaScriptOrFail(String js, int timeout, WebContents webContents) {
|
| - try {
|
| - return JavaScriptUtils.executeJavaScriptAndWaitForResult(
|
| - webContents, js, timeout, TimeUnit.MILLISECONDS);
|
| - } catch (InterruptedException | TimeoutException e) {
|
| - fail("Fatal interruption or timeout running JavaScript: " + js);
|
| - }
|
| - return "Not reached";
|
| - }
|
| -
|
| - /**
|
| - * Ends the test harness test and checks whether there it passed
|
| - * @param webContents The WebContents for the tab to check results in
|
| - * @return "Passed" if test passed, String with failure reason otherwise
|
| - */
|
| - protected String checkResults(WebContents webContents) {
|
| - if (runJavaScriptOrFail("testPassed", POLL_TIMEOUT_SHORT_MS, webContents).equals("true")) {
|
| - return "Passed";
|
| - }
|
| - return runJavaScriptOrFail("resultString", POLL_TIMEOUT_SHORT_MS, webContents);
|
| - }
|
| -
|
| - /**
|
| - * Helper function to end the test harness test and assert that it passed,
|
| - * setting the failure reason as the description if it didn't.
|
| - * @param webContents The WebContents for the tab to check test results in
|
| - */
|
| - protected void endTest(WebContents webContents) {
|
| - assertEquals("Passed", checkResults(webContents));
|
| - }
|
| -
|
| - /**
|
| - * Polls the provided JavaScript boolean until the timeout is reached or
|
| - * the boolean is true.
|
| - * @param boolName The name of the JavaScript boolean or expression to poll
|
| - * @param timeoutMs The polling timeout in milliseconds
|
| - * @param webContents The WebContents to run the JavaScript through
|
| - * @return True if the boolean evaluated to true, false if timed out
|
| - */
|
| - protected boolean pollJavaScriptBoolean(
|
| - final String boolName, int timeoutMs, final WebContents webContents) {
|
| - try {
|
| - CriteriaHelper.pollInstrumentationThread(Criteria.equals(true, new Callable<Boolean>() {
|
| - @Override
|
| - public Boolean call() {
|
| - String result = "false";
|
| - try {
|
| - result = JavaScriptUtils.executeJavaScriptAndWaitForResult(webContents,
|
| - boolName, POLL_CHECK_INTERVAL_SHORT_MS, TimeUnit.MILLISECONDS);
|
| - } catch (InterruptedException | TimeoutException e) {
|
| - // Expected to happen regularly, do nothing
|
| - }
|
| - return Boolean.parseBoolean(result);
|
| - }
|
| - }), timeoutMs, POLL_CHECK_INTERVAL_LONG_MS);
|
| - } catch (AssertionError e) {
|
| - Log.d(TAG, "pollJavaScriptBoolean() timed out");
|
| - return false;
|
| - }
|
| - return true;
|
| - }
|
| -
|
| - /**
|
| - * Waits for a JavaScript step to finish, asserting that the step finished
|
| - * instead of timing out.
|
| - * @param webContents The WebContents for the tab the JavaScript step is in
|
| - */
|
| - protected void waitOnJavaScriptStep(WebContents webContents) {
|
| - assertTrue("Polling JavaScript boolean javascriptDone timed out",
|
| - pollJavaScriptBoolean("javascriptDone", POLL_TIMEOUT_LONG_MS, webContents));
|
| - // Reset the synchronization boolean
|
| - runJavaScriptOrFail("javascriptDone = false", POLL_TIMEOUT_SHORT_MS, webContents);
|
| - }
|
| -
|
| - /**
|
| - * Executes a JavaScript step function using the given WebContents.
|
| - * @param stepFunction The JavaScript step function to call
|
| - * @param webContents The WebContents for the tab the JavaScript is in
|
| - */
|
| - protected void executeStepAndWait(String stepFunction, WebContents webContents) {
|
| - // Run the step and block
|
| - JavaScriptUtils.executeJavaScript(webContents, stepFunction);
|
| - waitOnJavaScriptStep(webContents);
|
| - }
|
| -}
|
|
|