Commit ee12ef22 authored by Amirhossein Simjour's avatar Amirhossein Simjour Committed by Commit Bot

VR: RenderTest for javascript alert dialog

I also made some changes on Build files to make sure that there is
no circular dependencies.
More tests to come in follow up CLs.

BUG=810847

Change-Id: I04fe2d848ebd76a076a09d1c0aab7cdaba9e205a
Reviewed-on: https://chromium-review.googlesource.com/1099563
Commit-Queue: Amirhossein Simjour <asimjour@chromium.org>
Reviewed-by: default avatarBrian Sheedy <bsheedy@chromium.org>
Reviewed-by: default avataragrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#582898}
parent 6f995966
......@@ -533,6 +533,30 @@ zip("chrome_version_srcjar") {
]
}
# Files used for both chrome tests and VR/AR tests
android_library("chrome_test_util_java") {
testonly = true
java_files = [
"javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTestRule.java",
"javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsTestUtils.java",
"javatests/src/org/chromium/chrome/browser/media/RouterTestUtils.java",
"javatests/src/org/chromium/chrome/browser/webapps/TestFetchStorageCallback.java",
"javatests/src/org/chromium/chrome/browser/webapps/WebappActivityTestRule.java",
]
deps = [
":browser_java_test_support",
"//base:base_java",
"//base:base_java_test_support",
"//chrome/android:chrome_java",
"//chrome/test/android:chrome_java_test_support",
"//content/public/android:content_java",
"//third_party/custom_tabs_client:custom_tabs_support_java",
"//third_party/espresso:espresso_all_java",
]
}
android_library("chrome_test_java") {
testonly = true
......@@ -541,6 +565,7 @@ android_library("chrome_test_java") {
deps = [
":browser_java_test_support",
":chrome_test_util_java",
":partner_location_descriptor_proto_java",
"$google_play_services_package:google_play_services_base_java",
"$google_play_services_package:google_play_services_basement_java",
......@@ -704,9 +729,6 @@ if (enable_vr || (enable_arcore && package_arcore)) {
testonly = true
java_files = [
"javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTestRule.java",
"javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsTestUtils.java",
"javatests/src/org/chromium/chrome/browser/media/RouterTestUtils.java",
"javatests/src/org/chromium/chrome/browser/vr/rules/ChromeTabbedActivityXrTestRule.java",
"javatests/src/org/chromium/chrome/browser/vr/rules/CustomTabActivityXrTestRule.java",
"javatests/src/org/chromium/chrome/browser/vr/rules/XrActivityRestriction.java",
......@@ -716,11 +738,9 @@ if (enable_vr || (enable_arcore && package_arcore)) {
"javatests/src/org/chromium/chrome/browser/vr/util/XrTestRuleUtils.java",
"javatests/src/org/chromium/chrome/browser/vr/WebXrTestFramework.java",
"javatests/src/org/chromium/chrome/browser/vr/XrTestFramework.java",
"javatests/src/org/chromium/chrome/browser/webapps/TestFetchStorageCallback.java",
"javatests/src/org/chromium/chrome/browser/webapps/WebappActivityTestRule.java",
]
deps = chrome_test_xr_java_deps
deps = chrome_test_xr_java_deps + [ ":chrome_test_util_java" ]
data = [
"//chrome/test/data/xr/e2e_test_files/",
......@@ -734,6 +754,7 @@ if (enable_vr || (enable_arcore && package_arcore)) {
testonly = true
java_files = [
"javatests/src/org/chromium/chrome/browser/vr/jsdialog/VrBrowserJavaScriptModalDialogTest.java",
"javatests/src/org/chromium/chrome/browser/vr/EmulatedVrController.java",
"javatests/src/org/chromium/chrome/browser/vr/mock/MockBrowserKeyboardInterface.java",
"javatests/src/org/chromium/chrome/browser/vr/mock/MockVrCoreVersionChecker.java",
......@@ -777,6 +798,7 @@ if (enable_vr || (enable_arcore && package_arcore)) {
"//chrome/android:chrome_test_xr_java",
"//third_party/gvr-android-sdk:controller_test_api_java",
"//third_party/gvr-android-sdk:gvr_common_java",
":chrome_test_util_java",
]
data = [
......
......@@ -1733,11 +1733,9 @@ chrome_test_java_sources = [
"javatests/src/org/chromium/chrome/browser/crypto/CipherFactoryTest.java",
"javatests/src/org/chromium/chrome/browser/customtabs/ClientManagerTest.java",
"javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java",
"javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTestRule.java",
"javatests/src/org/chromium/chrome/browser/customtabs/CustomTabExternalNavigationTest.java",
"javatests/src/org/chromium/chrome/browser/customtabs/CustomTabFromChromeExternalNavigationTest.java",
"javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsConnectionTest.java",
"javatests/src/org/chromium/chrome/browser/customtabs/CustomTabsTestUtils.java",
"javatests/src/org/chromium/chrome/browser/customtabs/CustomTabTabPersistenceIntegrationTest.java",
"javatests/src/org/chromium/chrome/browser/customtabs/CustomTabTabPersistencePolicyTest.java",
"javatests/src/org/chromium/chrome/browser/customtabs/DetachedResourceRequestTest.java",
......@@ -1815,7 +1813,6 @@ chrome_test_java_sources = [
"javatests/src/org/chromium/chrome/browser/locale/LocaleManagerReferralTest.java",
"javatests/src/org/chromium/chrome/browser/locale/LocaleManagerTest.java",
"javatests/src/org/chromium/chrome/browser/media/MediaLauncherActivityTest.java",
"javatests/src/org/chromium/chrome/browser/media/RouterTestUtils.java",
"javatests/src/org/chromium/chrome/browser/media/remote/CastNotificationTest.java",
"javatests/src/org/chromium/chrome/browser/media/remote/CastPositionTransferTest.java",
"javatests/src/org/chromium/chrome/browser/media/remote/CastStartStopTest.java",
......@@ -2065,12 +2062,10 @@ chrome_test_java_sources = [
"javatests/src/org/chromium/chrome/browser/webapps/ActivityAssignerTest.java",
"javatests/src/org/chromium/chrome/browser/webapps/AddToHomescreenDialogTest.java",
"javatests/src/org/chromium/chrome/browser/webapps/AddToHomescreenManagerTest.java",
"javatests/src/org/chromium/chrome/browser/webapps/TestFetchStorageCallback.java",
"javatests/src/org/chromium/chrome/browser/webapps/TrustedWebActivityTest.java",
"javatests/src/org/chromium/chrome/browser/webapps/WebApkUpdateDataFetcherTest.java",
"javatests/src/org/chromium/chrome/browser/webapps/WebApkUpdateManagerTest.java",
"javatests/src/org/chromium/chrome/browser/webapps/WebappActionsNotificationTest.java",
"javatests/src/org/chromium/chrome/browser/webapps/WebappActivityTestRule.java",
"javatests/src/org/chromium/chrome/browser/webapps/WebappAuthenticatorTest.java",
"javatests/src/org/chromium/chrome/browser/webapps/WebappDeferredStartupTest.java",
"javatests/src/org/chromium/chrome/browser/webapps/WebappDisplayModeTest.java",
......
// Copyright 2018 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.jsdialog;
import static org.chromium.chrome.browser.vr.XrTestFramework.POLL_TIMEOUT_LONG_MS;
import static org.chromium.chrome.test.util.ChromeRestriction.RESTRICTION_TYPE_VIEWER_DAYDREAM;
import android.support.test.filters.MediumTest;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.Restriction;
import org.chromium.base.test.util.UrlUtils;
import org.chromium.chrome.browser.ChromeSwitches;
import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.jsdialog.JavascriptTabModalDialog;
import org.chromium.chrome.browser.vr.rules.ChromeTabbedActivityVrTestRule;
import org.chromium.chrome.browser.vr.util.NativeUiUtils;
import org.chromium.chrome.browser.vr.util.VrBrowserTransitionUtils;
import org.chromium.chrome.test.ChromeJUnit4ClassRunner;
import org.chromium.chrome.test.util.RenderTestRule;
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 java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
/**
* Test JavaScript modal dialogs in VR.
*/
@RunWith(ChromeJUnit4ClassRunner.class)
@CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE})
public class VrBrowserJavaScriptModalDialogTest {
@Rule
public ChromeTabbedActivityVrTestRule mActivityTestRule = new ChromeTabbedActivityVrTestRule();
@Rule
public RenderTestRule mRenderTestRule =
new RenderTestRule("components/test/data/js_dialogs/render_tests");
private static final String EMPTY_PAGE = UrlUtils.encodeHtmlDataUri(
"<html><title>Modal Dialog Test</title><p>Testcase.</p></title></html>");
private ChromeTabbedActivity mActivity;
@Before
public void setUp() throws InterruptedException {
mActivity = mActivityTestRule.getActivity();
}
/**
* Verifies modal alert-dialog appearance and that it looks as it is expected.
*/
@Test
@MediumTest
@Restriction(RESTRICTION_TYPE_VIEWER_DAYDREAM)
@Feature({"Browser", "RenderTest"})
public void testAlertModalDialog()
throws InterruptedException, TimeoutException, ExecutionException, Throwable {
VrBrowserTransitionUtils.forceEnterVrBrowserOrFail(POLL_TIMEOUT_LONG_MS);
executeJavaScriptAndWaitForDialog("alert('Hello Android!')");
JavascriptTabModalDialog jsDialog = getCurrentDialog();
Assert.assertNotNull("No dialog showing.", jsDialog);
Assert.assertEquals(NativeUiUtils.getVrViewContainer().getChildCount(), 1);
mRenderTestRule.render(
NativeUiUtils.getVrViewContainer().getChildAt(0), "js_modal_view_vr");
}
/**
* Asynchronously executes the given code for spawning a dialog and waits
* for the dialog to be visible.
*/
private void executeJavaScriptAndWaitForDialog(String script) {
JavaScriptUtils.executeJavaScript(mActivity.getCurrentWebContents(), script);
checkDialogShowing("Could not spawn or locate a modal dialog.", true);
}
/**
* Returns the current JavaScript modal dialog showing or null if no such dialog is currently
* showing.
*/
private JavascriptTabModalDialog getCurrentDialog() throws ExecutionException {
return (JavascriptTabModalDialog) ThreadUtils.runOnUiThreadBlocking(
() -> mActivity.getModalDialogManager().getCurrentDialogForTest().getController());
}
/**
* Check whether dialog is showing as expected.
*/
private void checkDialogShowing(final String errorMessage, final boolean shouldBeShown) {
CriteriaHelper.pollUiThread(new Criteria(errorMessage) {
@Override
public boolean isSatisfied() {
final boolean isShown = mActivity.getModalDialogManager().isShowing();
return shouldBeShown == isShown;
}
});
}
}
......@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.vr.util;
import android.graphics.PointF;
import android.view.Choreographer;
import android.view.View;
import android.view.ViewGroup;
import org.junit.Assert;
......@@ -172,6 +173,14 @@ public class NativeUiUtils {
frameLatch.await();
}
/**
* Returns the Container of 2D UI that is shown in VR.
*/
public static ViewGroup getVrViewContainer() {
VrShell vrShell = TestVrShellDelegate.getVrShellForTesting();
return vrShell.getVrViewContainerForTesting();
}
private static void clickFallbackUiButton(int buttonId) throws InterruptedException {
VrShell vrShell = TestVrShellDelegate.getVrShellForTesting();
VrViewContainer viewContainer = vrShell.getVrViewContainerForTesting();
......
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