Chromium Code Reviews| 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 06a4457c356727c274e22c680ef729c36e043e7c..2db5bf8440f6ef61ffc3f204bc69d96e1348ea06 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; |
| /** |
| @@ -35,19 +37,10 @@ public class PwsClientImplTest extends InstrumentationTestCase { |
| } |
| @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)); |
| - } |
| - |
| - @SmallTest |
| public void testMakeLanguageTag() { |
| - assertEquals("en-GB", PwsClientImpl.makeLanguageTag("en", "GB")); |
| + assertEquals("en-", PwsClientImpl.makeLanguageTag("en", "")); |
| assertEquals("fr-CA", PwsClientImpl.makeLanguageTag("fr", "CA")); |
| - assertEquals("zh-TW", PwsClientImpl.makeLanguageTag("zh", "TW")); |
| + assertEquals("es-419", PwsClientImpl.makeLanguageTag("es", "419")); |
| } |
| @SmallTest |
| @@ -61,68 +54,102 @@ public class PwsClientImplTest extends InstrumentationTestCase { |
| @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); |
| + String defaultLocale = LocaleUtils.getDefaultLocale(); |
| + String[] languageTags = defaultLocale.split(","); |
| // 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)); |
| + for (String tag : languageTags) { |
| + assertTrue(acceptLanguage.contains(tag)); |
|
ksk1
2016/10/11 09:58:08
If tag is "xx" and acceptLanguage is "xx-XXX", thi
Yirui Huang
2016/10/11 12:17:32
Done.
|
| + } |
| } |
| @SmallTest |
| public void testLanguageTagIsPrepended() { |
| - String locale = new Locale("aa", "AA").toString(); |
| - String languageList = "xx-XX,xx,xx-YY"; |
| + Locale locale = new Locale("aa", "AA"); |
| + String defaultLocale = LocaleUtils.getLocale(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(defaultLocale, languageList); |
| + assertEquals("aa-AA,aa,xx-XX,xx-YY,xx", languageListWithTag); |
| + } |
| + |
| + @SmallTest |
| + public void testLanguageOnlyTagIsPrepended() { |
| + Locale locale = new Locale("aaa"); |
| + String defaultLocale = LocaleUtils.getLocale(locale); |
| + String languageList = "xx-XX,xx-YY,xx"; |
| + |
| + // 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 testSpecialLengthCountryCodeIsPrepended() { |
| + Locale locale = new Locale("aa", "AAA"); |
| + String defaultLocale = LocaleUtils.getLocale(locale); |
| + String languageList = "xx-XX,xx-YY,xx"; |
| + |
| + // Should prepend the language tag "aa-AAA" as well as the language code "aa". |
| + String languageListWithTag = |
| + PwsClientImpl.prependToAcceptLanguagesIfNecessary(defaultLocale, languageList); |
| + assertEquals("aa-AAA,aa,xx-XX,xx-YY,xx", languageListWithTag); |
| + } |
| + |
| + @SmallTest |
| + public void testMultipleLanguageTagIsPrepended() { |
| + 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". |
| String languageListWithTag = PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale, |
| languageList); |
| - assertEquals("aa-AA,aa,xx-XX,xx,xx-YY", languageListWithTag); |
| + assertEquals("aa-AA,aa,bb-BB,bb,xx-XX,xx-YY,xx", languageListWithTag); |
| + |
| + // 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); |
| + 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.getLocale(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,xx-ZZ"; |
| - languageListWithTag = PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale, |
| - languageList); |
| - assertEquals("xx-XX,xx-YY,xx,xx-ZZ", languageListWithTag); |
| } |
| @SmallTest |
| - public void testInvalidLanguageTagNotPrepended() { |
| - String locale = "not_valid"; |
| - String languageList = "xx-XX,xx"; |
| + public void testLanguageTagNotPrependedWhenUnnecessary() { |
| + Locale locale = new Locale("xx", "XX"); |
| + String defaultLocale = LocaleUtils.getLocale(locale); |
| + String languageList = "xx-XX,xx-YY,xx"; |
| - // Language list should be unmodified since the language tag is invalid. |
| - String languageListWithTag = PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale, |
| - languageList); |
| + // Language list should be unmodified since the tag is already present. |
| + String languageListWithTag = |
| + PwsClientImpl.prependToAcceptLanguagesIfNecessary(defaultLocale, languageList); |
| assertEquals(languageList, languageListWithTag); |
| } |
| @SmallTest |
| - public void testLanguageTagNotPrependedWhenUnnecessary() { |
| - String locale = new Locale("xx", "XX").toString(); |
| - String languageList = "xx-XX,xx,xx-YY"; |
| + public void testMultiLanguageTagNotPrependedWhenUnnecessary() { |
| + String locale = "xx-XX,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); |
| @@ -130,11 +157,11 @@ public class PwsClientImplTest extends InstrumentationTestCase { |
| @SmallTest |
| public void testAcceptLanguageQvalues() { |
| - String languageList = "xx-XX,xx,xx-YY,zz-ZZ,zz"; |
| + String languageList = "xx-XX,xx-YY,xx,zz-ZZ,zz"; |
| // Should insert q-values for each item except the first which implicitly has q=1.0. |
| String acceptLanguage = PwsClientImpl.generateAcceptLanguageHeader(languageList); |
| - assertEquals("xx-XX,xx;q=0.8,xx-YY;q=0.6,zz-ZZ;q=0.4,zz;q=0.2", acceptLanguage); |
| + assertEquals("xx-XX,xx-YY;q=0.8,xx;q=0.6,zz-ZZ;q=0.4,zz;q=0.2", acceptLanguage); |
| // When there are six or more items, the q-value should not go below 0.2. |
| languageList = "xx-XA,xx-XB,xx-XC,xx-XD,xx-XE,xx-XF"; |