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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/physicalweb/PwsClientImplTest.java

Issue 2406203002: Use BCP47 compliant format for locale representation (Closed)
Patch Set: add more explanations about why Locale.getLanguage/toLanguageTag is not used Created 4 years, 2 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: chrome/android/javatests/src/org/chromium/chrome/browser/physicalweb/PwsClientImplTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/physicalweb/PwsClientImplTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/physicalweb/PwsClientImplTest.java
index 94d061bef1d7656a1be521fa13334935ca98854b..3d36c02a98a5eb477b696c75fac715e0aa6f9a3a 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/physicalweb/PwsClientImplTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/physicalweb/PwsClientImplTest.java
@@ -9,6 +9,8 @@ import android.test.InstrumentationTestCase;
import android.test.suitebuilder.annotation.SmallTest;
import android.text.TextUtils;
+import org.chromium.base.LocaleUtils;
+
import java.util.Locale;
/**
@@ -30,67 +32,68 @@ public class PwsClientImplTest extends InstrumentationTestCase {
}
@SmallTest
- public void testAcceptLanguageNonEmpty() {
- assertFalse(TextUtils.isEmpty(mPwsClientImpl.getAcceptLanguage()));
- }
+ public void testLanguageTagIsIncludedInAcceptLanguageHeader() {
+ String defaultLocaleString = LocaleUtils.getDefaultLocaleString();
+ String[] languageTags = defaultLocaleString.split(",");
- @SmallTest
- public void testDefaultLocaleIsValid() {
- // Ensure the current locale is of the form xx_XX, otherwise it will not be prepended
- // correctly in prependToAcceptLanguagesIfNecessary.
- String defaultLocale = Locale.getDefault().toString();
- assertEquals(5, defaultLocale.length());
- assertEquals('_', defaultLocale.charAt(2));
+ // Ensure Accept-Language contains the full language tag.
+ String acceptLanguage = mPwsClientImpl.updateAcceptLanguage();
+ for (String tag : languageTags) {
+ assertTrue(acceptLanguage.contains(tag));
+ // Ensure Accept-Language also contains the language code by itself.
+ String languageCode;
+ if (tag.length() == 2 || tag.length() == 3) {
+ languageCode = tag;
+ } else if (tag.charAt(2) == '-') {
+ languageCode = tag.substring(0, 2);
+ } else { // length of the language code is 3.
+ languageCode = tag.substring(0, 3);
+ }
+ assertTrue(acceptLanguage.startsWith(languageCode + ",")
+ || acceptLanguage.contains(languageCode + ";")
+ || acceptLanguage.equals(languageCode));
+ }
}
@SmallTest
- public void testMakeLanguageTag() {
- assertEquals("en-GB", PwsClientImpl.makeLanguageTag("en", "GB"));
- assertEquals("fr-CA", PwsClientImpl.makeLanguageTag("fr", "CA"));
- assertEquals("zh-TW", PwsClientImpl.makeLanguageTag("zh", "TW"));
- }
+ public void testLanguageTagIsPrepended() {
+ Locale locale = new Locale("aa", "AA");
+ String defaultLocale = LocaleUtils.getLocaleString(locale);
+ String languageList = "xx-XX,xx-YY,xx";
- @SmallTest
- public void testLanguageTagSpecialCases() {
- // Java mostly follows ISO-639-1 and ICU, except for the following three.
- // See documentation on java.util.Locale constructor for more.
- assertEquals("he-XX", PwsClientImpl.makeLanguageTag("iw", "XX"));
- assertEquals("yi-XX", PwsClientImpl.makeLanguageTag("ji", "XX"));
- assertEquals("id-XX", PwsClientImpl.makeLanguageTag("in", "XX"));
+ // Should prepend the language tag "aa-AA" as well as the language code "aa".
+ String languageListWithTag =
+ PwsClientImpl.prependToAcceptLanguagesIfNecessary(defaultLocale, languageList);
+ assertEquals("aa-AA,aa,xx-XX,xx-YY,xx", languageListWithTag);
}
@SmallTest
- public void testLanguageTagIsIncludedInAcceptLanguageHeader() {
- String defaultLocale = Locale.getDefault().toString();
- String languageCode = defaultLocale.substring(0, 2);
- String countryCode = defaultLocale.substring(3);
- String languageTag = PwsClientImpl.makeLanguageTag(languageCode, countryCode);
+ public void testLanguageOnlyTagIsPrepended() {
+ Locale locale = new Locale("aaa");
+ String defaultLocale = LocaleUtils.getLocaleString(locale);
+ String languageList = "xx-XX,xx-YY,xx";
- // Ensure Accept-Language contains the full language tag.
- String acceptLanguage = mPwsClientImpl.getAcceptLanguage();
- assertTrue(acceptLanguage.contains(languageTag));
-
- // Ensure Accept-Language also contains the language code by itself. Include the separator
- // character so we don't match, for instance, the "en" in "en-US".
- assertTrue(acceptLanguage.startsWith(languageCode + ",")
- || acceptLanguage.contains(languageCode + ";")
- || acceptLanguage.equals(languageCode));
+ // Should prepend the language code only language tag "aaa".
+ String languageListWithTag =
+ PwsClientImpl.prependToAcceptLanguagesIfNecessary(defaultLocale, languageList);
+ assertEquals("aaa,xx-XX,xx-YY,xx", languageListWithTag);
}
@SmallTest
- public void testLanguageTagIsPrepended() {
- String locale = new Locale("aa", "AA").toString();
+ public void testSpecialLengthCountryCodeIsPrepended() {
+ Locale locale = new Locale("aa", "000");
+ String defaultLocale = LocaleUtils.getLocaleString(locale);
String languageList = "xx-XX,xx-YY,xx";
- // Should prepend the language tag "aa-AA" as well as the language code "aa".
- String languageListWithTag = PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale,
- languageList);
- assertEquals("aa-AA,aa,xx-XX,xx-YY,xx", languageListWithTag);
+ // Should prepend the language tag "aa-AAA" as well as the language code "aa".
+ String languageListWithTag =
+ PwsClientImpl.prependToAcceptLanguagesIfNecessary(defaultLocale, languageList);
+ assertEquals("aa-000,aa,xx-XX,xx-YY,xx", languageListWithTag);
}
@SmallTest
public void testMultipleLanguageTagIsPrepended() {
- String locale = "aa_AA,bb_BB";
+ String locale = "aa-AA,bb-BB";
String languageList = "xx-XX,xx-YY,xx";
// Should prepend the language tag "aa-AA" as well as the language code "aa".
@@ -100,28 +103,23 @@ public class PwsClientImplTest extends InstrumentationTestCase {
// Make sure the language code is only inserted after the last languageTag that
// contains that language.
- locale = "aa_AA,bb_BB,bb_XX";
- languageListWithTag = PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale,
- languageList);
+ locale = "aa-AA,bb-BB,bb-XX";
+ languageListWithTag =
+ PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale, languageList);
assertEquals("aa-AA,aa,bb-BB,bb-XX,bb,xx-XX,xx-YY,xx", languageListWithTag);
}
@SmallTest
public void testLanguageTagIsPrependedWhenListContainsLanguageCode() {
- String locale = new Locale("xx", "XX").toString();
+ Locale locale = new Locale("xx", "XX");
+ String defaultLocale = LocaleUtils.getLocaleString(locale);
String languageList = "xx-YY,xx";
// Should prepend the language tag "xx-XX" but not the language code "xx" as it's already
// included at the end of the list.
- String languageListWithTag = PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale,
- languageList);
+ String languageListWithTag =
+ PwsClientImpl.prependToAcceptLanguagesIfNecessary(defaultLocale, languageList);
assertEquals("xx-XX,xx-YY,xx", languageListWithTag);
-
- // Test again with the language code "xx" in the middle of the list.
- languageList = "xx-YY,xx-ZZ,xx";
- languageListWithTag = PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale,
- languageList);
- assertEquals("xx-XX,xx-YY,xx-ZZ,xx", languageListWithTag);
}
@SmallTest
@@ -130,28 +128,30 @@ public class PwsClientImplTest extends InstrumentationTestCase {
String languageList = "xx-XX,xx";
// Language list should be unmodified since the language tag is invalid.
- String languageListWithTag = PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale,
- languageList);
+ String languageListWithTag =
+ PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale, languageList);
assertEquals(languageList, languageListWithTag);
}
@SmallTest
public void testLanguageTagNotPrependedWhenUnnecessary() {
- String locale = new Locale("xx", "XX").toString();
+ Locale locale = new Locale("xx", "XX");
+ String defaultLocale = LocaleUtils.getLocaleString(locale);
String languageList = "xx-XX,xx-YY,xx";
// Language list should be unmodified since the tag is already present.
- String languageListWithTag = PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale,
- languageList);
+ String languageListWithTag =
+ PwsClientImpl.prependToAcceptLanguagesIfNecessary(defaultLocale, languageList);
assertEquals(languageList, languageListWithTag);
}
@SmallTest
public void testMultiLanguageTagNotPrependedWhenUnnecessary() {
String locale = "xx-XX,yy-YY";
- String languageList = "xx-XX,xx,yy-YY,yy";
+ String languageList = "xx-XX,yy-YY,xx,yy";
- // Language list should be unmodified since the tag is already present.
+ // Language list should be unmodified since the tag is already present. However, the order
+ // changes because a language-code-only language tag is acceptable now.
String languageListWithTag = PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale,
languageList);
assertEquals(languageList, languageListWithTag);

Powered by Google App Engine
This is Rietveld 408576698