diff options
author | Android Merger <noreply-android-build-merger@google.com> | 2019-02-19 18:50:04 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-02-19 18:50:04 +0000 |
commit | 47ddfb6f683588a59a663f401295b257c63ec761 (patch) | |
tree | bc4f914c98e4f045a0c3c20831ad08f780b58caa | |
parent | f58a22f7b39c8d069413d1dc731591e92861b76d (diff) | |
parent | ca6ee186d402f2e4a0a209f3ae3119640bcfd147 (diff) | |
download | cts-47ddfb6f683588a59a663f401295b257c63ec761.tar.gz |
Merge "Merge "CTS: Update and clarify WebView useragent test." into nougat-cts-dev am: 561b585834" into nougat-mr1-cts-dev
-rw-r--r-- | tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java | 58 |
1 files changed, 24 insertions, 34 deletions
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java b/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java index a3a72799251..f52c28e4e2b 100644 --- a/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java +++ b/tests/tests/webkit/src/android/webkit/cts/WebSettingsTest.java @@ -104,10 +104,9 @@ public class WebSettingsTest extends ActivityInstrumentationTestCase2<WebViewCts * compatibility definition (tokens in angle brackets are variables, tokens in square * brackets are optional): * <p/> - * Mozilla/5.0 (Linux;[ U;] Android <version>;[ <language>-<country>;] - * [<devicemodel>;] Build/<buildID>; wv) AppleWebKit/<major>.<minor> (KHTML, like Gecko) - * Version/<major>.<minor> Chrome/<major>.<minor>.<branch>.<build>[ Mobile] - * Safari/<major>.<minor> + * Mozilla/5.0 (Linux; Android <version>; [<devicemodel>;] [Build/<buildID>;] wv) + * AppleWebKit/<major>.<minor> (KHTML, like Gecko) Version/<major>.<minor> + * Chrome/<major>.<minor>.<branch>.<build>[ Mobile] Safari/<major>.<minor> */ public void testUserAgentString_default() { if (!NullWebViewUtils.isWebViewAvailable()) { @@ -115,43 +114,34 @@ public class WebSettingsTest extends ActivityInstrumentationTestCase2<WebViewCts } final String actualUserAgentString = mSettings.getUserAgentString(); Log.i(LOG_TAG, String.format("Checking user agent string %s", actualUserAgentString)); + + String expectedRelease, expectedModel; + if ("REL".equals(Build.VERSION.CODENAME)) { + expectedRelease = Pattern.quote(Build.VERSION.RELEASE); + expectedModel = Pattern.quote(Build.MODEL); + } else { + // Non-release builds don't include real release version/model, be lenient. + expectedRelease = expectedModel = "[^;]+"; + } + + // Build expected regex inserting the appropriate variables, as this is easier to + // understand and get right than matching any possible useragent and comparing the + // variables afterward. final String patternString = - "Mozilla/5\\.0 \\(Linux;( U;)? Android ([^;]+);( (\\w+)-(\\w+);)?" + - "\\s?(.*)\\sBuild/(.+); wv\\) AppleWebKit/(\\d+)\\.(\\d+) " + - "\\(KHTML, like Gecko\\) " + - "Version/\\d+\\.\\d+ Chrome/\\d+\\.\\d+\\.\\d+\\.\\d+( Mobile)? " + - "Safari/(\\d+)\\.(\\d+)"; - // Groups used: - // 1 - SSL encryption strength token " U;" (optional) - // 2 - Android version - // 3 - full locale string (optional) - // 4 - country - // 5 - language - // 6 - device model (optional) - // 7 - build ID - // 8 - AppleWebKit major version number - // 9 - AppleWebKit minor version number - // 10 - " Mobile" string (optional) - // 11 - Safari major version number - // 12 - Safari minor version number + Pattern.quote("Mozilla/5.0 (Linux; Android ") + expectedRelease + "; " + + "(" + expectedModel + "; )?" + // Optional + "(Build/" + Pattern.quote(Build.ID) + "; )?" + // Optional + Pattern.quote("wv) ") + + "AppleWebKit/\\d+\\.\\d+ " + + Pattern.quote("(KHTML, like Gecko) Version/4.0 ") + + "Chrome/\\d+\\.\\d+\\.\\d+\\.\\d+ " + + "(Mobile )?Safari/\\d+\\.\\d+"; Log.i(LOG_TAG, String.format("Trying to match pattern %s", patternString)); final Pattern userAgentExpr = Pattern.compile(patternString); Matcher patternMatcher = userAgentExpr.matcher(actualUserAgentString); assertTrue(String.format("User agent string did not match expected pattern. \nExpected " + "pattern:\n%s\nActual:\n%s", patternString, actualUserAgentString), patternMatcher.find()); - if (patternMatcher.group(3) != null) { - Locale currentLocale = Locale.getDefault(); - assertEquals(currentLocale.getLanguage().toLowerCase(), patternMatcher.group(4)); - assertEquals(currentLocale.getCountry().toLowerCase(), patternMatcher.group(5)); - } - if ("REL".equals(Build.VERSION.CODENAME)) { - // Model is only added in release builds - assertEquals(Build.MODEL, patternMatcher.group(6)); - // Release version is valid only in release builds - assertEquals(Build.VERSION.RELEASE, patternMatcher.group(2)); - } - assertEquals(Build.ID, patternMatcher.group(7)); } public void testAccessUserAgentString() throws Exception { |