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

Unified Diff: android_webview/javatests/src/org/chromium/android_webview/test/AcceptLanguageTest.java

Issue 2559243003: Extend with a language code in http accept languages
Patch Set: Rebased, fixed nits and handed over this CL :( Created 4 years 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/javatests/src/org/chromium/android_webview/test/AcceptLanguageTest.java
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AcceptLanguageTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AcceptLanguageTest.java
index 75160e04f25a96a825d0cb0c4ac787af375421f8..58ed86fbea5c22c9b834b6abf83f24149d4ddef9 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AcceptLanguageTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AcceptLanguageTest.java
@@ -17,7 +17,6 @@ import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.MinAndroidSdkLevel;
import org.chromium.net.test.EmbeddedTestServer;
-import java.util.Arrays;
import java.util.Locale;
import java.util.regex.Pattern;
@@ -54,12 +53,12 @@ public class AcceptLanguageTest extends AwTestBase {
* The Accept-Language header can have more than one language along with optional quality
* factors for each, e.g.
*
- * "de-DE,en-US;q=0.8,en-UK;q=0.5"
+ * "de-DE,de;q=0.8,en-US;q=0.6,en-GB;q=0.4,en;q=0.2"
*
* This function extracts only the language strings from the Accept-Language header, so
* the example above would yield the following:
*
- * ["de-DE", "en-US", "en-UK"]
+ * ["de-DE", "de", "en-US", "en-GB", "en"]
*
* @param raw String containing the raw Accept-Language header
* @return A list of languages as Strings.
@@ -91,12 +90,9 @@ public class AcceptLanguageTest extends AwTestBase {
JSUtils.executeJavaScriptAndWaitForResult(
this, mAwContents, mContentsClient.getOnEvaluateJavaScriptResultHelper(),
"navigator.languages.join(',')"));
- assertEquals(acceptLanguagesJs.length, acceptLanguages.length);
- for (int i = 0; i < acceptLanguagesJs.length; ++i) {
- assertEquals(acceptLanguagesJs[i], acceptLanguages[i]);
- }
+ assertEquals(LocaleUtils.getDefaultLocaleString(), acceptLanguagesJs[0]);
- // Test locale change at run time
+ // Test locale change at run time.
Locale.setDefault(new Locale("de", "DE"));
mAwContents.updateDefaultLocale();
mAwContents.getSettings().updateAcceptLanguages();
@@ -107,7 +103,7 @@ public class AcceptLanguageTest extends AwTestBase {
JSUtils.executeJavaScriptAndWaitForResult(
this, mAwContents, mContentsClient.getOnEvaluateJavaScriptResultHelper(),
"document.body.textContent"));
- assertEquals(LocaleUtils.getDefaultLocaleString(), acceptLanguages[0]);
+ assertEquals("de-DE,de", acceptLanguages[0] + "," + acceptLanguages[1]);
}
/**
@@ -119,43 +115,45 @@ public class AcceptLanguageTest extends AwTestBase {
@MinAndroidSdkLevel(Build.VERSION_CODES.N)
@SuppressLint("NewApi")
@Feature({"AndroidWebView"})
- public void testAcceptLanguagesWithenUS() throws Throwable {
+ public void testAcceptLanguages() throws Throwable {
getAwSettingsOnUiThread(mAwContents).setJavaScriptEnabled(true);
-
- // This should yield a lightly formatted page with the contents of the Accept-Language
- // header, e.g. "en-US" or "de-DE,en-US;q=0.8", as the only text content.
String url = mTestServer.getURL("/echoheader?Accept-Language");
loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
- String[] acceptLanguages = getAcceptLanguages(JSUtils.executeJavaScriptAndWaitForResult(
- this, mAwContents, mContentsClient.getOnEvaluateJavaScriptResultHelper(),
- "document.body.textContent"));
- assertEquals(
- LocaleUtils.getDefaultLocaleListString(), TextUtils.join(",", acceptLanguages));
-
String[] acceptLanguagesJs = getAcceptLanguages(JSUtils.executeJavaScriptAndWaitForResult(
this, mAwContents, mContentsClient.getOnEvaluateJavaScriptResultHelper(),
"navigator.languages.join(',')"));
- assertEquals(acceptLanguagesJs.length, acceptLanguages.length);
- for (int i = 0; i < acceptLanguagesJs.length; ++i) {
- assertEquals(acceptLanguagesJs[i], acceptLanguages[i]);
- }
+ assertEquals(
+ LocaleUtils.getDefaultLocaleListString(), TextUtils.join(",", acceptLanguagesJs));
- // Test locales that contain "en-US" change at run time
+ // Test locales that contain "en-US" change at run time.
LocaleList.setDefault(new LocaleList(new Locale("de", "DE"), new Locale("en", "US")));
mAwContents.updateDefaultLocale();
mAwContents.getSettings().updateAcceptLanguages();
loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
+ String[] acceptLanguages = getAcceptLanguages(JSUtils.executeJavaScriptAndWaitForResult(
+ this, mAwContents, mContentsClient.getOnEvaluateJavaScriptResultHelper(),
+ "document.body.textContent"));
+ assertEquals("de-DE,de,en-US,en", TextUtils.join(",", acceptLanguages));
+
+ // Test locales that do not contain "en-US" change at run time, "en-US" should be added with
+ // lower priority.
+ LocaleList.setDefault(new LocaleList(new Locale("de", "DE"), new Locale("ja", "JP")));
+ mAwContents.updateDefaultLocale();
+ mAwContents.getSettings().updateAcceptLanguages();
+
+ loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
+
acceptLanguages = getAcceptLanguages(JSUtils.executeJavaScriptAndWaitForResult(this,
mAwContents, mContentsClient.getOnEvaluateJavaScriptResultHelper(),
"document.body.textContent"));
- assertEquals(
- LocaleUtils.getDefaultLocaleListString(), TextUtils.join(",", acceptLanguages));
+ assertEquals("de-DE,de,ja-JP,ja,en-US,en", TextUtils.join(",", acceptLanguages));
- // Test locales that contain "en-us" change at run time
- LocaleList.setDefault(new LocaleList(new Locale("de", "DE"), new Locale("en", "us")));
+ // Test language code is inserted only after the last language tag that contains that
+ // language.
+ LocaleList.setDefault(new LocaleList(new Locale("en", "GB"), new Locale("en", "US")));
mAwContents.updateDefaultLocale();
mAwContents.getSettings().updateAcceptLanguages();
@@ -164,11 +162,9 @@ public class AcceptLanguageTest extends AwTestBase {
acceptLanguages = getAcceptLanguages(JSUtils.executeJavaScriptAndWaitForResult(this,
mAwContents, mContentsClient.getOnEvaluateJavaScriptResultHelper(),
"document.body.textContent"));
- assertEquals(
- LocaleUtils.getDefaultLocaleListString(), TextUtils.join(",", acceptLanguages));
+ assertEquals("en-GB,en-US,en", TextUtils.join(",", acceptLanguages));
- // Test locales that do not contain "en-us" or "en-US" change at run time
- LocaleList.setDefault(new LocaleList(new Locale("de", "DE"), new Locale("ja", "JP")));
+ LocaleList.setDefault(new LocaleList(new Locale("en", "GB"), new Locale("ja", "JP")));
mAwContents.updateDefaultLocale();
mAwContents.getSettings().updateAcceptLanguages();
@@ -177,7 +173,6 @@ public class AcceptLanguageTest extends AwTestBase {
acceptLanguages = getAcceptLanguages(JSUtils.executeJavaScriptAndWaitForResult(this,
mAwContents, mContentsClient.getOnEvaluateJavaScriptResultHelper(),
"document.body.textContent"));
- String[] acceptLangs = Arrays.copyOfRange(acceptLanguages, 0, acceptLanguages.length - 1);
- assertEquals(LocaleUtils.getDefaultLocaleListString(), TextUtils.join(",", acceptLangs));
+ assertEquals("en-GB,ja-JP,ja,en-US,en", TextUtils.join(",", acceptLanguages));
}
}

Powered by Google App Engine
This is Rietveld 408576698