Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2004)

Unified Diff: android_webview/tools/WebViewShellTest/src/org/chromium/webview_shell/test/WebViewLayoutTest.java

Issue 1785283005: [WebView] Reorganize all of the WebView Shell apks into their own dir. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/tools/WebViewShellTest/src/org/chromium/webview_shell/test/WebViewLayoutTest.java
diff --git a/android_webview/tools/WebViewShellTest/src/org/chromium/webview_shell/test/WebViewLayoutTest.java b/android_webview/tools/WebViewShellTest/src/org/chromium/webview_shell/test/WebViewLayoutTest.java
deleted file mode 100644
index 93276d20459f354f98341814ab4f56169b18bd37..0000000000000000000000000000000000000000
--- a/android_webview/tools/WebViewShellTest/src/org/chromium/webview_shell/test/WebViewLayoutTest.java
+++ /dev/null
@@ -1,386 +0,0 @@
-// Copyright 2015 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.webview_shell.test;
-
-import android.os.Environment;
-import android.test.ActivityInstrumentationTestCase2;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import junit.framework.ComparisonFailure;
-
-import org.chromium.base.Log;
-import org.chromium.webview_shell.WebViewLayoutTestActivity;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-/**
- * Tests running end-to-end layout tests.
- */
-public class WebViewLayoutTest
- extends ActivityInstrumentationTestCase2<WebViewLayoutTestActivity> {
-
- private static final String TAG = "WebViewLayoutTest";
-
- private static final String EXTERNAL_PREFIX =
- Environment.getExternalStorageDirectory().getAbsolutePath() + "/";
- private static final String BASE_WEBVIEW_TEST_PATH = "android_webview/tools/WebViewShell/test/";
- private static final String BASE_BLINK_TEST_PATH = "third_party/WebKit/LayoutTests/";
- private static final String BASE_BLINK_STABLE_TEST_PATH =
- BASE_BLINK_TEST_PATH + "virtual/stable/";
- private static final String PATH_WEBVIEW_PREFIX = EXTERNAL_PREFIX + BASE_WEBVIEW_TEST_PATH;
- private static final String PATH_BLINK_PREFIX = EXTERNAL_PREFIX + BASE_BLINK_TEST_PATH;
- private static final String PATH_BLINK_STABLE_PREFIX =
- EXTERNAL_PREFIX + BASE_BLINK_STABLE_TEST_PATH;
-
- private static final long TIMEOUT_SECONDS = 20;
-
- private WebViewLayoutTestActivity mTestActivity;
-
- public WebViewLayoutTest() {
- super(WebViewLayoutTestActivity.class);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mTestActivity = (WebViewLayoutTestActivity) getActivity();
- }
-
- @Override
- protected void tearDown() throws Exception {
- mTestActivity.finish();
- super.tearDown();
- }
-
- @Override
- public WebViewLayoutTestRunner getInstrumentation() {
- return (WebViewLayoutTestRunner) super.getInstrumentation();
- }
-
- @MediumTest
- public void testSimple() throws Exception {
- runWebViewLayoutTest("experimental/basic-logging.html",
- "experimental/basic-logging-expected.txt");
- }
-
- // This is a non-failing test because it tends to require frequent rebaselines.
- @MediumTest
- public void testGlobalInterfaceNoFail() throws Exception {
- runBlinkLayoutTest("webexposed/global-interface-listing.html",
- "webexposed/global-interface-listing-expected.txt", true);
- }
-
- // This is a non-failing test to avoid 'blind' rebaselines by the sheriff
- // (see crbug.com/564765).
- @MediumTest
- public void testNoUnexpectedInterfaces() throws Exception {
- ensureJsTestCopied();
- loadUrlWebViewAsync("file://" + PATH_BLINK_PREFIX
- + "webexposed/global-interface-listing.html", mTestActivity);
- String webviewExpected = readFile(PATH_WEBVIEW_PREFIX
- + "webexposed/global-interface-listing-expected.txt");
- mTestActivity.waitForFinish(TIMEOUT_SECONDS, TimeUnit.SECONDS);
- String result = mTestActivity.getTestResult();
-
- HashMap<String, HashSet<String>> webviewInterfacesMap = buildHashMap(result);
- HashMap<String, HashSet<String>> webviewExpectedInterfacesMap =
- buildHashMap(webviewExpected);
- StringBuilder newInterfaces = new StringBuilder();
-
- // Check that each current webview interface is one of webview expected interfaces.
- for (String interfaceS : webviewInterfacesMap.keySet()) {
- if (webviewExpectedInterfacesMap.get(interfaceS) == null) {
- newInterfaces.append(interfaceS + "\n");
- }
- }
-
- if (newInterfaces.length() > 0) {
- Log.w(TAG, "Unexpected WebView interfaces found: " + newInterfaces.toString());
- }
- }
-
- @MediumTest
- public void testWebViewExcludedInterfaces() throws Exception {
- ensureJsTestCopied();
- loadUrlWebViewAsync("file://" + PATH_BLINK_PREFIX
- + "webexposed/global-interface-listing.html", mTestActivity);
- String blinkExpected = readFile(PATH_BLINK_PREFIX
- + "webexposed/global-interface-listing-expected.txt");
- String webviewExcluded = readFile(PATH_WEBVIEW_PREFIX
- + "webexposed/not-webview-exposed.txt");
- mTestActivity.waitForFinish(TIMEOUT_SECONDS, TimeUnit.SECONDS);
- String result = mTestActivity.getTestResult();
-
- HashMap<String, HashSet<String>> webviewExcludedInterfacesMap =
- buildHashMap(webviewExcluded);
- HashMap<String, HashSet<String>> webviewInterfacesMap = buildHashMap(result);
- HashMap<String, HashSet<String>> blinkInterfacesMap = buildHashMap(blinkExpected);
- StringBuilder unexpected = new StringBuilder();
-
- // Check that each excluded interface and its properties are present in blinkInterfaceMap
- // but not in webviewInterfacesMap.
- for (HashMap.Entry<String, HashSet<String>> entry :
- webviewExcludedInterfacesMap.entrySet()) {
- String interfaceS = entry.getKey();
- HashSet<String> subsetBlink = blinkInterfacesMap.get(interfaceS);
- assertNotNull("Interface " + interfaceS + " not exposed in blink", subsetBlink);
-
- HashSet<String> subsetWebView = webviewInterfacesMap.get(interfaceS);
- HashSet<String> subsetExcluded = entry.getValue();
- if (subsetExcluded.isEmpty() && subsetWebView != null) {
- unexpected.append(interfaceS + "\n");
- continue;
- }
-
- for (String property : subsetExcluded) {
- assertTrue("Interface " + interfaceS + "." + property + " not exposed in blink",
- subsetBlink.contains(property));
- if (subsetWebView != null && subsetWebView.contains(property)) {
- unexpected.append(interfaceS + "." + property + "\n");
- }
- }
- }
- assertEquals("Unexpected webview interfaces found", "", unexpected.toString());
- }
-
- @MediumTest
- public void testWebViewIncludedStableInterfaces() throws Exception {
- ensureJsTestCopied();
- loadUrlWebViewAsync("file://" + PATH_BLINK_PREFIX
- + "webexposed/global-interface-listing.html", mTestActivity);
- String blinkStableExpected = readFile(PATH_BLINK_STABLE_PREFIX
- + "webexposed/global-interface-listing-expected.txt");
- String webviewExcluded = readFile(PATH_WEBVIEW_PREFIX
- + "webexposed/not-webview-exposed.txt");
- mTestActivity.waitForFinish(TIMEOUT_SECONDS, TimeUnit.SECONDS);
- String result = mTestActivity.getTestResult();
-
- HashMap<String, HashSet<String>> webviewExcludedInterfacesMap =
- buildHashMap(webviewExcluded);
- HashMap<String, HashSet<String>> webviewInterfacesMap = buildHashMap(result);
- HashMap<String, HashSet<String>> blinkStableInterfacesMap =
- buildHashMap(blinkStableExpected);
- StringBuilder missing = new StringBuilder();
-
- // Check that each stable blink interface and its properties are present in webview
- // except the excluded interfaces/properties.
- for (HashMap.Entry<String, HashSet<String>> entry : blinkStableInterfacesMap.entrySet()) {
- String interfaceS = entry.getKey();
- HashSet<String> subsetExcluded = webviewExcludedInterfacesMap.get(interfaceS);
- if (subsetExcluded != null && subsetExcluded.isEmpty()) continue;
-
- HashSet<String> subsetBlink = entry.getValue();
- HashSet<String> subsetWebView = webviewInterfacesMap.get(interfaceS);
-
- if (subsetWebView == null) {
- // interface is missing completely
- missing.append(interfaceS + "\n");
- continue;
- }
-
- for (String propertyBlink : subsetBlink) {
- if (subsetExcluded != null && subsetExcluded.contains(propertyBlink)) continue;
- if (!subsetWebView.contains(propertyBlink)) {
- missing.append(interfaceS + "." + propertyBlink + "\n");
- }
- }
- }
- assertEquals("Missing webview interfaces found", "", missing.toString());
- }
-
- @MediumTest
- public void testRequestMIDIAccess() throws Exception {
- mTestActivity.setGrantPermission(true);
- runWebViewLayoutTest("blink-apis/webmidi/requestmidiaccess.html",
- "blink-apis/webmidi/requestmidiaccess-expected.txt");
- mTestActivity.setGrantPermission(false);
- }
-
- @MediumTest
- public void testRequestMIDIAccessDenyPermission() throws Exception {
- runWebViewLayoutTest("blink-apis/webmidi/requestmidiaccess-permission-denied.html",
- "blink-apis/webmidi/requestmidiaccess-permission-denied-expected.html");
- }
-
- // Blink platform API tests
-
- @MediumTest
- public void testGeolocationCallbacks() throws Exception {
- runWebViewLayoutTest("blink-apis/geolocation/geolocation-permission-callbacks.html",
- "blink-apis/geolocation/geolocation-permission-callbacks-expected.txt");
- }
-
- @MediumTest
- public void testMediaStreamApiDenyPermission() throws Exception {
- runWebViewLayoutTest("blink-apis/webrtc/mediastream-permission-denied-callbacks.html",
- "blink-apis/webrtc/mediastream-permission-denied-callbacks-expected.txt");
- }
-
- @MediumTest
- public void testMediaStreamApi() throws Exception {
- mTestActivity.setGrantPermission(true);
- runWebViewLayoutTest("blink-apis/webrtc/mediastream-callbacks.html",
- "blink-apis/webrtc/mediastream-callbacks-expected.txt");
- mTestActivity.setGrantPermission(false);
- }
-
- @MediumTest
- public void testBatteryApi() throws Exception {
- runWebViewLayoutTest("blink-apis/battery-status/battery-callback.html",
- "blink-apis/battery-status/battery-callback-expected.txt");
- }
-
- // test helper methods
-
- private void runWebViewLayoutTest(final String fileName, final String fileNameExpected)
- throws Exception {
- runTest(PATH_WEBVIEW_PREFIX + fileName, PATH_WEBVIEW_PREFIX + fileNameExpected, false);
- }
-
- private void runBlinkLayoutTest(final String fileName, final String fileNameExpected,
- boolean noFail) throws Exception {
- ensureJsTestCopied();
- runTest(PATH_BLINK_PREFIX + fileName, PATH_WEBVIEW_PREFIX + fileNameExpected, noFail);
- }
-
- private void runTest(final String fileName, final String fileNameExpected, boolean noFail)
- throws FileNotFoundException, IOException, InterruptedException, TimeoutException {
- loadUrlWebViewAsync("file://" + fileName, mTestActivity);
-
- if (getInstrumentation().isRebaseline()) {
- // this is the rebaseline process
- mTestActivity.waitForFinish(TIMEOUT_SECONDS, TimeUnit.SECONDS);
- String result = mTestActivity.getTestResult();
- writeFile(fileNameExpected, result, true);
- Log.i(TAG, "file: " + fileNameExpected + " --> rebaselined, length=" + result.length());
- } else {
- String expected = readFile(fileNameExpected);
- mTestActivity.waitForFinish(TIMEOUT_SECONDS, TimeUnit.SECONDS);
- String result = mTestActivity.getTestResult();
- if (noFail && !expected.equals(result)) {
- ComparisonFailure cf = new ComparisonFailure("Unexpected result", expected, result);
- Log.e(TAG, cf.toString());
- } else {
- assertEquals(expected, result);
- }
- }
- }
-
- private void loadUrlWebViewAsync(final String fileUrl,
- final WebViewLayoutTestActivity activity) {
- getInstrumentation().runOnMainSync(new Runnable() {
- @Override
- public void run() {
- activity.loadUrl(fileUrl);
- }
- });
- }
-
- private static void ensureJsTestCopied() throws IOException {
- File jsTestFile = new File(PATH_BLINK_PREFIX + "resources/js-test.js");
- if (jsTestFile.exists()) return;
- String original = readFile(PATH_WEBVIEW_PREFIX + "resources/js-test.js");
- writeFile(PATH_BLINK_PREFIX + "resources/js-test.js", original, false);
- }
-
- /**
- * Reads a file and returns it's contents as string.
- */
- private static String readFile(String fileName) throws IOException {
- FileInputStream inputStream = new FileInputStream(new File(fileName));
- try {
- BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
- try {
- StringBuilder contents = new StringBuilder();
- String line;
-
- while ((line = reader.readLine()) != null) {
- contents.append(line);
- contents.append("\n");
- }
- return contents.toString();
- } finally {
- reader.close();
- }
- } finally {
- inputStream.close();
- }
- }
-
- /**
- * Writes a file with the given fileName and contents. If overwrite is true overwrites any
- * exisiting file with the same file name. If the file does not exist any intermediate
- * required directories are created.
- */
- private static void writeFile(final String fileName, final String contents, boolean overwrite)
- throws FileNotFoundException, IOException {
- File fileOut = new File(fileName);
-
- if (fileOut.exists() && !overwrite) {
- return;
- }
-
- String absolutePath = fileOut.getAbsolutePath();
- File filePath = new File(absolutePath.substring(0, absolutePath.lastIndexOf("/")));
-
- if (!filePath.exists()) {
- if (!filePath.mkdirs())
- throw new IOException("failed to create directories: " + filePath);
- }
-
- FileOutputStream outputStream = new FileOutputStream(fileOut);
- try {
- outputStream.write(contents.getBytes());
- } finally {
- outputStream.close();
- }
- }
-
- private HashMap<String, HashSet<String>> buildHashMap(String contents) {
- String[] lineByLine = contents.split("\\n");
-
- HashSet subset = null;
- HashMap<String, HashSet<String>> interfaces = new HashMap<String, HashSet<String>>();
- for (String line : lineByLine) {
- String s = trimAndRemoveComments(line);
- if (isInterfaceOrGlobalObject(s)) {
- subset = interfaces.get(s);
- if (subset == null) {
- subset = new HashSet();
- interfaces.put(s, subset);
- }
- } else if (isInterfaceProperty(s) && subset != null) {
- subset.add(s);
- }
- }
- return interfaces;
- }
-
- private String trimAndRemoveComments(String line) {
- String s = line.trim();
- int commentIndex = s.indexOf("#"); // remove any potential comments
- return (commentIndex >= 0) ? s.substring(0, commentIndex).trim() : s;
- }
-
- private boolean isInterfaceOrGlobalObject(String s) {
- return s.startsWith("interface") || s.startsWith("[GLOBAL OBJECT]");
- }
-
- private boolean isInterfaceProperty(String s) {
- return s.startsWith("getter") || s.startsWith("setter")
- || s.startsWith("method") || s.startsWith("attribute");
- }
-
-}

Powered by Google App Engine
This is Rietveld 408576698