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

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

Issue 2496183002: Use GetDefaultLocaleListString for returning LocaleList (Closed)
Patch Set: change locales to localelist in AWContents.java Created 4 years, 1 month 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 4165e46f9703684a9d3436c411af563b6d30d897..cbbf8330a57a3fda2b1d538904b3650cf79572c8 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
@@ -4,14 +4,20 @@
package org.chromium.android_webview.test;
+import android.annotation.SuppressLint;
+import android.os.Build;
+import android.os.LocaleList;
import android.test.suitebuilder.annotation.SmallTest;
+import android.text.TextUtils;
import org.chromium.android_webview.AwContents;
import org.chromium.android_webview.test.util.JSUtils;
import org.chromium.base.LocaleUtils;
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.Matcher;
import java.util.regex.Pattern;
@@ -95,9 +101,9 @@ public class AcceptLanguageTest extends AwTestBase {
assertEquals(acceptLanguagesJs[i], acceptLanguages[i]);
}
- // Now test locale change at run time
+ // Test locale change at run time
Locale.setDefault(new Locale("de", "DE"));
- mAwContents.setLocale("de-DE");
+ mAwContents.updateDefaultLocale();
mAwContents.getSettings().updateAcceptLanguages();
loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
@@ -108,4 +114,75 @@ public class AcceptLanguageTest extends AwTestBase {
"document.body.textContent"));
assertEquals(LocaleUtils.getDefaultLocaleString(), acceptLanguages[0]);
}
+
+ /**
+ * Verify that the Accept Languages string is correct.
+ * When default locales do not contain "en-US" or "en-us",
+ * "en-US" should be added with lowest priority.
+ */
+ @SmallTest
+ @MinAndroidSdkLevel(Build.VERSION_CODES.N)
+ @SuppressLint("NewApi")
+ @Feature({"AndroidWebView"})
+ public void testAcceptLanguagesWithenUS() 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]);
+ }
+
+ // 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);
+
+ acceptLanguages = getAcceptLanguages(JSUtils.executeJavaScriptAndWaitForResult(this,
+ mAwContents, mContentsClient.getOnEvaluateJavaScriptResultHelper(),
+ "document.body.textContent"));
+ assertEquals(
+ LocaleUtils.getDefaultLocaleListString(), 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")));
+ 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));
+
+ // 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")));
+ mAwContents.updateDefaultLocale();
+ mAwContents.getSettings().updateAcceptLanguages();
+
+ loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
+
+ 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));
+ }
}
« no previous file with comments | « android_webview/java/src/org/chromium/android_webview/AwContents.java ('k') | android_webview/native/aw_contents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698