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

Side by Side Diff: components/translate/core/browser/translate_manager_unittest.cc

Issue 2565873002: [translate] Add translate ranker model loader. (Closed)
Patch Set: comments from sdefresne Created 3 years, 9 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 unified diff | Download patch
OLDNEW
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 "base/json/json_reader.h" 7 #include "base/json/json_reader.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/test/histogram_tester.h" 10 #include "base/test/histogram_tester.h"
11 #include "base/test/scoped_feature_list.h" 11 #include "base/test/scoped_feature_list.h"
12 #include "build/build_config.h" 12 #include "build/build_config.h"
13 #include "components/infobars/core/infobar.h" 13 #include "components/infobars/core/infobar.h"
14 #include "components/pref_registry/pref_registry_syncable.h" 14 #include "components/pref_registry/pref_registry_syncable.h"
15 #include "components/sync_preferences/testing_pref_service_syncable.h" 15 #include "components/sync_preferences/testing_pref_service_syncable.h"
16 #include "components/translate/core/browser/mock_translate_driver.h" 16 #include "components/translate/core/browser/mock_translate_driver.h"
17 #include "components/translate/core/browser/mock_translate_ranker.h"
17 #include "components/translate/core/browser/translate_browser_metrics.h" 18 #include "components/translate/core/browser/translate_browser_metrics.h"
18 #include "components/translate/core/browser/translate_client.h" 19 #include "components/translate/core/browser/translate_client.h"
19 #include "components/translate/core/browser/translate_download_manager.h" 20 #include "components/translate/core/browser/translate_download_manager.h"
20 #include "components/translate/core/browser/translate_prefs.h" 21 #include "components/translate/core/browser/translate_prefs.h"
21 #include "components/translate/core/common/translate_pref_names.h" 22 #include "components/translate/core/common/translate_pref_names.h"
22 #include "components/variations/variations_associated_data.h" 23 #include "components/variations/variations_associated_data.h"
23 #include "net/base/network_change_notifier.h" 24 #include "net/base/network_change_notifier.h"
24 #include "testing/gmock/include/gmock/gmock.h" 25 #include "testing/gmock/include/gmock/gmock.h"
25 #include "testing/gtest/include/gtest/gtest.h" 26 #include "testing/gtest/include/gtest/gtest.h"
26 27
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 158
158 void TearDown() override { 159 void TearDown() override {
159 manager_->ResetForTesting(); 160 manager_->ResetForTesting();
160 variations::testing::ClearAllVariationParams(); 161 variations::testing::ClearAllVariationParams();
161 } 162 }
162 163
163 // Utility function to prepare translate_manager_ for testing. 164 // Utility function to prepare translate_manager_ for testing.
164 void PrepareTranslateManager() { 165 void PrepareTranslateManager() {
165 TranslateManager::SetIgnoreMissingKeyForTesting(true); 166 TranslateManager::SetIgnoreMissingKeyForTesting(true);
166 translate_manager_.reset(new translate::TranslateManager( 167 translate_manager_.reset(new translate::TranslateManager(
167 &mock_translate_client_, kAcceptLanguages)); 168 &mock_translate_client_, &mock_translate_ranker_, kAcceptLanguages));
168 } 169 }
169 170
170 // Prepare the test for ULP related tests. 171 // Prepare the test for ULP related tests.
171 // Put the ulp json into profile. 172 // Put the ulp json into profile.
172 void PrepareULPTest(const char* ulp_json, bool turn_on_feature) { 173 void PrepareULPTest(const char* ulp_json, bool turn_on_feature) {
173 PrepareTranslateManager(); 174 PrepareTranslateManager();
174 std::unique_ptr<base::Value> profile(CreateProfileFromJSON(ulp_json)); 175 std::unique_ptr<base::Value> profile(CreateProfileFromJSON(ulp_json));
175 prefs_.SetUserPref(TranslatePrefs::kPrefLanguageProfile, profile.release()); 176 prefs_.SetUserPref(TranslatePrefs::kPrefLanguageProfile, profile.release());
176 if (turn_on_feature) 177 if (turn_on_feature)
177 TurnOnTranslateByULP(); 178 TurnOnTranslateByULP();
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 } 224 }
224 225
225 sync_preferences::TestingPrefServiceSyncable prefs_; 226 sync_preferences::TestingPrefServiceSyncable prefs_;
226 227
227 // TODO(groby): request TranslatePrefs from |mock_translate_client_| instead. 228 // TODO(groby): request TranslatePrefs from |mock_translate_client_| instead.
228 TranslatePrefs translate_prefs_; 229 TranslatePrefs translate_prefs_;
229 TranslateDownloadManager* manager_; 230 TranslateDownloadManager* manager_;
230 231
231 TestNetworkChangeNotifier network_notifier_; 232 TestNetworkChangeNotifier network_notifier_;
232 translate::testing::MockTranslateDriver driver_; 233 translate::testing::MockTranslateDriver driver_;
234 translate::testing::MockTranslateRanker mock_translate_ranker_;
233 ::testing::NiceMock<MockTranslateClient> mock_translate_client_; 235 ::testing::NiceMock<MockTranslateClient> mock_translate_client_;
234 std::unique_ptr<TranslateManager> translate_manager_; 236 std::unique_ptr<TranslateManager> translate_manager_;
235 std::unique_ptr<base::FieldTrialList> field_trial_list_; 237 std::unique_ptr<base::FieldTrialList> field_trial_list_;
236 base::test::ScopedFeatureList scoped_feature_list_; 238 base::test::ScopedFeatureList scoped_feature_list_;
237 }; 239 };
238 240
239 241
240 // Target language comes from application locale if the locale's language 242 // Target language comes from application locale if the locale's language
241 // is supported. 243 // is supported.
242 TEST_F(TranslateManagerTest, GetTargetLanguageDefaultsToAppLocale) { 244 TEST_F(TranslateManagerTest, GetTargetLanguageDefaultsToAppLocale) {
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 // First supported language is the fallback language. 276 // First supported language is the fallback language.
275 ASSERT_TRUE(TranslateDownloadManager::IsSupportedLanguage("en")); 277 ASSERT_TRUE(TranslateDownloadManager::IsSupportedLanguage("en"));
276 accept_language_list.push_back("en"); 278 accept_language_list.push_back("en");
277 translate_prefs_.UpdateLanguageList(accept_language_list); 279 translate_prefs_.UpdateLanguageList(accept_language_list);
278 EXPECT_EQ("en", TranslateManager::GetTargetLanguage(&translate_prefs_)); 280 EXPECT_EQ("en", TranslateManager::GetTargetLanguage(&translate_prefs_));
279 } 281 }
280 282
281 TEST_F(TranslateManagerTest, DontTranslateOffline) { 283 TEST_F(TranslateManagerTest, DontTranslateOffline) {
282 TranslateManager::SetIgnoreMissingKeyForTesting(true); 284 TranslateManager::SetIgnoreMissingKeyForTesting(true);
283 translate_manager_.reset(new translate::TranslateManager( 285 translate_manager_.reset(new translate::TranslateManager(
284 &mock_translate_client_, kAcceptLanguages)); 286 &mock_translate_client_, &mock_translate_ranker_, kAcceptLanguages));
285 287
286 // The test measures that the "Translate was disabled" exit can only be 288 // The test measures that the "Translate was disabled" exit can only be
287 // reached after the early-out tests including IsOffline() passed. 289 // reached after the early-out tests including IsOffline() passed.
288 const char kMetricName[] = "Translate.InitiationStatus.v2"; 290 const char kMetricName[] = "Translate.InitiationStatus.v2";
289 base::HistogramTester histogram_tester; 291 base::HistogramTester histogram_tester;
290 292
291 prefs_.SetBoolean(prefs::kEnableTranslate, false); 293 prefs_.SetBoolean(prefs::kEnableTranslate, false);
292 294
293 translate_manager_->GetLanguageState().LanguageDetermined("de", true); 295 translate_manager_->GetLanguageState().LanguageDetermined("de", true);
294 296
(...skipping 11 matching lines...) Expand all
306 translate::TranslateBrowserMetrics::INITIATION_STATUS_DISABLED_BY_PREFS, 308 translate::TranslateBrowserMetrics::INITIATION_STATUS_DISABLED_BY_PREFS,
307 1); 309 1);
308 } 310 }
309 311
310 // The test measures that Translate is not triggered for a zh-TW page for a 312 // The test measures that Translate is not triggered for a zh-TW page for a
311 // zh-CN user. 313 // zh-CN user.
312 TEST_F(TranslateManagerTest, 314 TEST_F(TranslateManagerTest,
313 DontTranslateZhTraditionalPageForZhSimplifiedLocale) { 315 DontTranslateZhTraditionalPageForZhSimplifiedLocale) {
314 TranslateManager::SetIgnoreMissingKeyForTesting(true); 316 TranslateManager::SetIgnoreMissingKeyForTesting(true);
315 translate_manager_.reset(new translate::TranslateManager( 317 translate_manager_.reset(new translate::TranslateManager(
316 &mock_translate_client_, kAcceptLanguages)); 318 &mock_translate_client_, &mock_translate_ranker_, kAcceptLanguages));
317 319
318 const char kMetricName[] = "Translate.InitiationStatus.v2"; 320 const char kMetricName[] = "Translate.InitiationStatus.v2";
319 base::HistogramTester histogram_tester; 321 base::HistogramTester histogram_tester;
320 322
321 const std::string locale = "zh-TW"; 323 const std::string locale = "zh-TW";
322 const std::string page_lang = "zh-CN"; 324 const std::string page_lang = "zh-CN";
323 325
324 network_notifier_.SimulateOnline(); 326 network_notifier_.SimulateOnline();
325 manager_->set_application_locale(locale); 327 manager_->set_application_locale(locale);
326 ON_CALL(mock_translate_client_, IsTranslatableURL(_)) 328 ON_CALL(mock_translate_client_, IsTranslatableURL(_))
327 .WillByDefault(Return(true)); 329 .WillByDefault(Return(true));
328 330
329 EXPECT_EQ("zh-TW", translate_manager_->GetTargetLanguage(&translate_prefs_)); 331 EXPECT_EQ("zh-TW", translate_manager_->GetTargetLanguage(&translate_prefs_));
330 translate_manager_->GetLanguageState().LanguageDetermined(page_lang, true); 332 translate_manager_->GetLanguageState().LanguageDetermined(page_lang, true);
331 translate_manager_->InitiateTranslation(page_lang); 333 translate_manager_->InitiateTranslation(page_lang);
332 334
333 histogram_tester.ExpectUniqueSample( 335 histogram_tester.ExpectUniqueSample(
334 kMetricName, 336 kMetricName,
335 translate::TranslateBrowserMetrics::INITIATION_STATUS_SIMILAR_LANGUAGES, 337 translate::TranslateBrowserMetrics::INITIATION_STATUS_SIMILAR_LANGUAGES,
336 1); 338 1);
337 } 339 }
338 340
339 // The test measures that Translate is not triggered for a zh-CN page for a 341 // The test measures that Translate is not triggered for a zh-CN page for a
340 // zh-TW user. 342 // zh-TW user.
341 TEST_F(TranslateManagerTest, 343 TEST_F(TranslateManagerTest,
342 DontTranslateZhSimplifiedPageForZhTraditionalLocale) { 344 DontTranslateZhSimplifiedPageForZhTraditionalLocale) {
343 TranslateManager::SetIgnoreMissingKeyForTesting(true); 345 TranslateManager::SetIgnoreMissingKeyForTesting(true);
344 translate_manager_.reset(new translate::TranslateManager( 346 translate_manager_.reset(new translate::TranslateManager(
345 &mock_translate_client_, kAcceptLanguages)); 347 &mock_translate_client_, &mock_translate_ranker_, kAcceptLanguages));
346 348
347 const char kMetricName[] = "Translate.InitiationStatus.v2"; 349 const char kMetricName[] = "Translate.InitiationStatus.v2";
348 base::HistogramTester histogram_tester; 350 base::HistogramTester histogram_tester;
349 351
350 const std::string locale = "zh-CN"; 352 const std::string locale = "zh-CN";
351 const std::string page_lang = "zh-TW"; 353 const std::string page_lang = "zh-TW";
352 354
353 network_notifier_.SimulateOnline(); 355 network_notifier_.SimulateOnline();
354 manager_->set_application_locale(locale); 356 manager_->set_application_locale(locale);
355 ON_CALL(mock_translate_client_, IsTranslatableURL(_)) 357 ON_CALL(mock_translate_client_, IsTranslatableURL(_))
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 // 0.79 and lower than 0.8 and the probability threshold is lower than both 505 // 0.79 and lower than 0.8 and the probability threshold is lower than both
504 // the one with "fr" (0.6) and "pt-PT" (0.4). 506 // the one with "fr" (0.6) and "pt-PT" (0.4).
505 EXPECT_TRUE(CallLanguageInULP("fr")); 507 EXPECT_TRUE(CallLanguageInULP("fr"));
506 EXPECT_TRUE(CallLanguageInULP("pt")); 508 EXPECT_TRUE(CallLanguageInULP("pt"));
507 EXPECT_FALSE(CallLanguageInULP("zh-TW")); 509 EXPECT_FALSE(CallLanguageInULP("zh-TW"));
508 } 510 }
509 511
510 } // namespace testing 512 } // namespace testing
511 513
512 } // namespace translate 514 } // namespace translate
OLDNEW
« no previous file with comments | « components/translate/core/browser/translate_manager.cc ('k') | components/translate/core/browser/translate_ranker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698