| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/translate/core/browser/translate_manager.h" | 5 #include "components/translate/core/browser/translate_manager.h" |
| 6 | 6 |
| 7 #include "components/pref_registry/pref_registry_syncable.h" |
| 8 #include "components/pref_registry/testing_pref_service_syncable.h" |
| 7 #include "components/translate/core/browser/translate_download_manager.h" | 9 #include "components/translate/core/browser/translate_download_manager.h" |
| 10 #include "components/translate/core/browser/translate_prefs.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 9 | 12 |
| 10 namespace translate { | 13 namespace translate { |
| 11 | 14 |
| 15 namespace { |
| 16 |
| 17 #if defined(OS_CHROMEOS) |
| 18 const char kLanguagePreferredLanguages[] = |
| 19 "settings.language.preferred_languages"; |
| 20 #else |
| 21 const char* kLanguagePreferredLanguages = nullptr; |
| 22 #endif |
| 23 const char kAcceptLanguages[] = "intl.accept_languages"; |
| 24 |
| 25 class TranslateManagerTest : public testing::Test { |
| 26 protected: |
| 27 TranslateManagerTest() |
| 28 : translate_prefs_(&prefs_, |
| 29 kAcceptLanguages, |
| 30 kLanguagePreferredLanguages), |
| 31 manager_(TranslateDownloadManager::GetInstance()) {} |
| 32 |
| 33 void SetUp() override { |
| 34 // Ensure we're not requesting a server-side translate language list. |
| 35 TranslateLanguageList::DisableUpdate(); |
| 36 prefs_.registry()->RegisterStringPref(kAcceptLanguages, std::string()); |
| 37 #if defined(OS_CHROMEOS) |
| 38 prefs_.registry()->RegisterStringPref(kLanguagePreferredLanguages, |
| 39 std::string()); |
| 40 #endif |
| 41 TranslatePrefs::RegisterProfilePrefs(prefs_.registry()); |
| 42 manager_->ResetForTesting(); |
| 43 } |
| 44 user_prefs::TestingPrefServiceSyncable prefs_; |
| 45 TranslatePrefs translate_prefs_; |
| 46 TranslateDownloadManager* manager_; |
| 47 |
| 48 void TearDown() override { manager_->ResetForTesting(); } |
| 49 }; |
| 50 |
| 51 } // namespace |
| 52 |
| 12 // Target language comes from application locale if the locale's language | 53 // Target language comes from application locale if the locale's language |
| 13 // is supported. | 54 // is supported. |
| 14 TEST(TranslateManagerTest, GetTargetLanguageDefaultsToAppLocale) { | 55 TEST_F(TranslateManagerTest, GetTargetLanguageDefaultsToAppLocale) { |
| 15 std::vector<std::string> accept_language_list; | |
| 16 | |
| 17 // Ensure we're not requesting a server-side translate language list. | |
| 18 TranslateLanguageList::DisableUpdate(); | |
| 19 | |
| 20 // Ensure the locale is set to a supported language. | 56 // Ensure the locale is set to a supported language. |
| 21 ASSERT_TRUE(TranslateDownloadManager::IsSupportedLanguage("en")); | 57 ASSERT_TRUE(TranslateDownloadManager::IsSupportedLanguage("en")); |
| 22 TranslateDownloadManager* manager = TranslateDownloadManager::GetInstance(); | 58 manager_->set_application_locale("en"); |
| 23 manager->ResetForTesting(); | 59 EXPECT_EQ("en", TranslateManager::GetTargetLanguage(&translate_prefs_)); |
| 24 manager->set_application_locale("en"); | |
| 25 EXPECT_EQ("en", TranslateManager::GetTargetLanguage(accept_language_list)); | |
| 26 | 60 |
| 27 // Try a second supported language. | 61 // Try a second supported language. |
| 28 ASSERT_TRUE(TranslateDownloadManager::IsSupportedLanguage("de")); | 62 ASSERT_TRUE(TranslateDownloadManager::IsSupportedLanguage("de")); |
| 29 manager->set_application_locale("de"); | 63 manager_->set_application_locale("de"); |
| 30 EXPECT_EQ("de", TranslateManager::GetTargetLanguage(accept_language_list)); | 64 EXPECT_EQ("de", TranslateManager::GetTargetLanguage(&translate_prefs_)); |
| 31 } | 65 } |
| 32 | 66 |
| 33 // If the application locale's language is not supported, the target language | 67 // If the application locale's language is not supported, the target language |
| 34 // falls back to the first supported language in |accept_languages_list|. If | 68 // falls back to the first supported language in |accept_languages_list|. If |
| 35 // none of the languages in |accept_language_list| is supported, the target | 69 // none of the languages in |accept_language_list| is supported, the target |
| 36 // language is empty. | 70 // language is empty. |
| 37 TEST(TranslateManagerTest, GetTargetLanguageAcceptLangFallback) { | 71 TEST_F(TranslateManagerTest, GetTargetLanguageAcceptLangFallback) { |
| 38 std::vector<std::string> accept_language_list; | 72 std::vector<std::string> accept_language_list; |
| 39 | 73 |
| 40 // Ensure we're not requesting a server-side translate language list. | |
| 41 TranslateLanguageList::DisableUpdate(); | |
| 42 | |
| 43 // Ensure locale is set to a not-supported language. | 74 // Ensure locale is set to a not-supported language. |
| 44 ASSERT_FALSE(TranslateDownloadManager::IsSupportedLanguage("xy")); | 75 ASSERT_FALSE(TranslateDownloadManager::IsSupportedLanguage("xy")); |
| 45 TranslateDownloadManager* manager = TranslateDownloadManager::GetInstance(); | 76 manager_->set_application_locale("xy"); |
| 46 manager->ResetForTesting(); | |
| 47 manager->set_application_locale("xy"); | |
| 48 | 77 |
| 49 // Default return is empty string. | 78 // Default return is empty string. |
| 50 EXPECT_EQ("", TranslateManager::GetTargetLanguage(accept_language_list)); | 79 EXPECT_EQ("", TranslateManager::GetTargetLanguage(&translate_prefs_)); |
| 51 | 80 |
| 52 // Unsupported languages still result in the empty string. | 81 // Unsupported languages still result in the empty string. |
| 53 ASSERT_FALSE(TranslateDownloadManager::IsSupportedLanguage("xy")); | 82 ASSERT_FALSE(TranslateDownloadManager::IsSupportedLanguage("zy")); |
| 54 accept_language_list.push_back("xy"); | 83 accept_language_list.push_back("zy"); |
| 55 EXPECT_EQ("", TranslateManager::GetTargetLanguage(accept_language_list)); | 84 translate_prefs_.UpdateLanguageList(accept_language_list); |
| 85 EXPECT_EQ("", TranslateManager::GetTargetLanguage(&translate_prefs_)); |
| 56 | 86 |
| 57 // First supported language is the fallback language. | 87 // First supported language is the fallback language. |
| 58 ASSERT_TRUE(TranslateDownloadManager::IsSupportedLanguage("en")); | 88 ASSERT_TRUE(TranslateDownloadManager::IsSupportedLanguage("en")); |
| 59 accept_language_list.push_back("en"); | 89 accept_language_list.push_back("en"); |
| 60 EXPECT_EQ("en", TranslateManager::GetTargetLanguage(accept_language_list)); | 90 translate_prefs_.UpdateLanguageList(accept_language_list); |
| 91 EXPECT_EQ("en", TranslateManager::GetTargetLanguage(&translate_prefs_)); |
| 61 } | 92 } |
| 62 | 93 |
| 63 } // namespace translate | 94 } // namespace translate |
| OLD | NEW |