Index: android_webview/tools/system_webview_shell/layout_tests/src/org/chromium/webview_shell/test/WebViewLayoutTest.java |
diff --git a/android_webview/tools/system_webview_shell/layout_tests/src/org/chromium/webview_shell/test/WebViewLayoutTest.java b/android_webview/tools/system_webview_shell/layout_tests/src/org/chromium/webview_shell/test/WebViewLayoutTest.java |
index a7218502d06b5b5d427402276ae5a731eff3a559..8bd9124e0f48faca8040d5e36dc62b0277e69ea2 100644 |
--- a/android_webview/tools/system_webview_shell/layout_tests/src/org/chromium/webview_shell/test/WebViewLayoutTest.java |
+++ b/android_webview/tools/system_webview_shell/layout_tests/src/org/chromium/webview_shell/test/WebViewLayoutTest.java |
@@ -22,8 +22,10 @@ import java.io.FileNotFoundException; |
import java.io.FileOutputStream; |
import java.io.IOException; |
import java.io.InputStreamReader; |
+import java.util.Arrays; |
import java.util.HashMap; |
import java.util.HashSet; |
+import java.util.List; |
import java.util.concurrent.TimeUnit; |
import java.util.concurrent.TimeoutException; |
@@ -39,12 +41,24 @@ public class WebViewLayoutTest |
private static final String BASE_WEBVIEW_TEST_PATH = |
"android_webview/tools/system_webview_shell/test/data/"; |
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 String GLOBAL_LISTING_FILE = |
+ "webexposed/global-interface-listing-expected.txt"; |
+ |
+ // Due to the specifics of the rebaselining algorithm in blink the files containing |
+ // stable interfaces can dissapear and reappear later. To select the file to compare |
+ // against a fallback approach is used. The order in the List below is important due |
+ // to how blink performs baseline optimizations. For more details see |
+ // third_party/WebKit/Tools/Scripts/webkitpy/common/checkout/baseline_optimizer.py. |
+ private static final List<String> BLINK_STABLE_FALLBACKS = Arrays.asList( |
+ EXTERNAL_PREFIX + BASE_BLINK_TEST_PATH + "virtual/stable/" + GLOBAL_LISTING_FILE, |
+ EXTERNAL_PREFIX + BASE_BLINK_TEST_PATH + "platform/linux/virtual/stable/" |
+ + GLOBAL_LISTING_FILE, |
+ EXTERNAL_PREFIX + BASE_BLINK_TEST_PATH + "platform/win/virtual/stable/" |
+ + GLOBAL_LISTING_FILE, |
+ EXTERNAL_PREFIX + BASE_BLINK_TEST_PATH + "platform/mac/virtual/stable/" |
+ + GLOBAL_LISTING_FILE); |
private static final long TIMEOUT_SECONDS = 20; |
@@ -157,14 +171,12 @@ public class WebViewLayoutTest |
assertEquals("Unexpected webview interfaces found", "", unexpected.toString()); |
} |
- @DisabledTest(message = "crbug.com/683153") |
@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 blinkStableExpected = readFileWithFallbacks(BLINK_STABLE_FALLBACKS); |
String webviewExcluded = readFile(PATH_WEBVIEW_PREFIX |
+ "webexposed/not-webview-exposed.txt"); |
mTestActivity.waitForFinish(TIMEOUT_SECONDS, TimeUnit.SECONDS); |
@@ -343,6 +355,21 @@ public class WebViewLayoutTest |
} |
/** |
+ * Reads the first available file in the 'fallback' list and returns the result. |
+ * Throws FileNotFoundException if non of the files exist. |
+ */ |
+ private static String readFileWithFallbacks(List<String> fallbackFileNames) throws IOException { |
+ for (String fileName : fallbackFileNames) { |
+ File file = new File(fileName); |
+ if (file.exists()) { |
+ return readFile(fileName); |
+ } |
+ } |
+ |
+ throw new FileNotFoundException("None of the fallback files could be read"); |
+ } |
+ |
+ /** |
* 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. |