Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PwsClientImpl.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PwsClientImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PwsClientImpl.java |
| index 2bd35ad4d8e3bba2dd24ddf461955c3a54641e7d..4a647aca3653ab625207e10ec2ac572029cb31c4 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PwsClientImpl.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/physicalweb/PwsClientImpl.java |
| @@ -270,25 +270,38 @@ class PwsClientImpl implements PwsClient { |
| @VisibleForTesting |
| static String prependToAcceptLanguagesIfNecessary(String locale, String acceptLanguages) |
| { |
| - if (locale.length() != 5 || locale.charAt(2) != '_') { |
| - return acceptLanguages; |
| + // Check if input locale is a list or a single locale |
|
Seigo Nonaka
2016/10/05 07:15:40
I think simply
String[] locales = locale.split("
Yirui Huang
2016/10/06 01:17:59
Done.
|
| + String[] locales; |
| + if (locale.length() > 5) { |
| + locales = locale.split(","); |
| + } else { |
| + locales = new String[1]; |
| + locales[0] = locale; |
| } |
| - String language = locale.substring(0, 2); |
| - String region = locale.substring(3); |
| - String languageTag = makeLanguageTag(language, region); |
| + Formatter parts = new Formatter(); |
| + for (String l : locales) { |
| + if (l.length() != 5 || l.charAt(2) != '_') { |
| + continue; |
| + } |
| - if (acceptLanguages.contains(languageTag)) { |
| - return acceptLanguages; |
| - } |
| + String language = l.substring(0, 2); |
| + String region = l.substring(3); |
| + String languageTag = makeLanguageTag(language, region); |
| - Formatter parts = new Formatter(); |
| - parts.format("%s,", languageTag); |
| - // If language is not in the accept languages list, also add language code. |
| - // This will work with the IDS_ACCEPT_LANGUAGES localized strings bundled with Chrome but |
| - // may fail on arbitrary lists of language tags due to differences in case and whitespace. |
| - if (!acceptLanguages.contains(language + ",") && !acceptLanguages.endsWith(language)) { |
| - parts.format("%s,", language); |
| + if (acceptLanguages.contains(languageTag)) { |
| + continue; |
| + } |
| + |
| + parts.format("%s,", languageTag); |
| + // If language is not in the accept languages list, also add language code. |
| + // This will work with the IDS_ACCEPT_LANGUAGES localized strings bundled with Chrome |
| + // but |
|
Seigo Nonaka
2016/10/05 07:15:40
please continue the line.
Yirui Huang
2016/10/06 01:17:59
Done.
|
| + // may fail on arbitrary lists of language tags due to differences in case and |
| + // whitespace. |
| + if (!acceptLanguages.contains(language + ",") && !acceptLanguages.endsWith(language)) { |
| + parts.format("%s,", language); |
| + } |
| } |
| parts.format("%s", acceptLanguages); |
| return parts.toString(); |