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 94d061bef1d7656a1be521fa13334935ca98854b..b09fb6e7f536f1ddaa64934c8d994dee64f7f551 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; |
| /** |
| @@ -31,66 +33,72 @@ public class PwsClientImplTest extends InstrumentationTestCase { |
| @SmallTest |
| public void testAcceptLanguageNonEmpty() { |
| - assertFalse(TextUtils.isEmpty(mPwsClientImpl.getAcceptLanguage())); |
| + assertFalse(TextUtils.isEmpty(mPwsClientImpl.updateAcceptLanguage())); |
| } |
| @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)); |
| - } |
| + public void testLanguageTagIsIncludedInAcceptLanguageHeader() { |
| + String defaultLocale = LocaleUtils.getDefaultLocale(); |
| + String[] languageTags = defaultLocale.split(","); |
| - @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")); |
| + // 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 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")); |
| + public void testLanguageTagIsPrepended() { |
| + 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 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.getLocale(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.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(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,58 +108,44 @@ 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.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-ZZ,xx"; |
| - languageListWithTag = PwsClientImpl.prependToAcceptLanguagesIfNecessary(locale, |
| - languageList); |
| - assertEquals("xx-XX,xx-YY,xx-ZZ,xx", languageListWithTag); |
| - } |
| - |
| - @SmallTest |
| - public void testInvalidLanguageTagNotPrepended() { |
|
ksk1
2016/10/17 05:06:04
I think we shouldn't remove tests for invalid case
Yirui Huang
2016/10/17 10:40:52
Done.
|
| - String locale = "not_valid"; |
| - String languageList = "xx-XX,xx"; |
| - |
| - // Language list should be unmodified since the language tag is invalid. |
| - 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.getLocale(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); |