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

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

Issue 2697703004: Allow TranslateRanker to override decisions taken by heuristics. (Closed)
Patch Set: Remove unused include. 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/metrics/proto/translate_event.pb.h"
14 #include "components/pref_registry/pref_registry_syncable.h" 15 #include "components/pref_registry/pref_registry_syncable.h"
15 #include "components/sync_preferences/testing_pref_service_syncable.h" 16 #include "components/sync_preferences/testing_pref_service_syncable.h"
16 #include "components/translate/core/browser/mock_translate_driver.h" 17 #include "components/translate/core/browser/mock_translate_driver.h"
17 #include "components/translate/core/browser/mock_translate_ranker.h" 18 #include "components/translate/core/browser/mock_translate_ranker.h"
18 #include "components/translate/core/browser/translate_browser_metrics.h" 19 #include "components/translate/core/browser/translate_browser_metrics.h"
19 #include "components/translate/core/browser/translate_client.h" 20 #include "components/translate/core/browser/translate_client.h"
20 #include "components/translate/core/browser/translate_download_manager.h" 21 #include "components/translate/core/browser/translate_download_manager.h"
21 #include "components/translate/core/browser/translate_prefs.h" 22 #include "components/translate/core/browser/translate_prefs.h"
22 #include "components/translate/core/common/translate_pref_names.h" 23 #include "components/translate/core/common/translate_pref_names.h"
23 #include "components/variations/variations_associated_data.h" 24 #include "components/variations/variations_associated_data.h"
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 PrepareULPTest(ulp_1, true); 503 PrepareULPTest(ulp_1, true);
503 ChangeThresholdInParams("0.79", "0.39", "", ""); 504 ChangeThresholdInParams("0.79", "0.39", "", "");
504 // Both "fr" and "pt" should reutrn true because the confidence threshold is 505 // Both "fr" and "pt" should reutrn true because the confidence threshold is
505 // 0.79 and lower than 0.8 and the probability threshold is lower than both 506 // 0.79 and lower than 0.8 and the probability threshold is lower than both
506 // the one with "fr" (0.6) and "pt-PT" (0.4). 507 // the one with "fr" (0.6) and "pt-PT" (0.4).
507 EXPECT_TRUE(CallLanguageInULP("fr")); 508 EXPECT_TRUE(CallLanguageInULP("fr"));
508 EXPECT_TRUE(CallLanguageInULP("pt")); 509 EXPECT_TRUE(CallLanguageInULP("pt"));
509 EXPECT_FALSE(CallLanguageInULP("zh-TW")); 510 EXPECT_FALSE(CallLanguageInULP("zh-TW"));
510 } 511 }
511 512
513 TEST_F(TranslateManagerTest, TestRecordTranslateEvent) {
514 PrepareTranslateManager();
515 const std::string locale = "zh-TW";
516 const std::string page_lang = "zh-CN";
517
518 network_notifier_.SimulateOnline();
519 manager_->set_application_locale(locale);
520 ON_CALL(mock_translate_client_, IsTranslatableURL(_))
521 .WillByDefault(Return(true));
522 translate_manager_->GetLanguageState().LanguageDetermined(page_lang, true);
523
524 translate_manager_->InitiateTranslation(page_lang);
525
526 std::vector<metrics::TranslateEventProto> events_cache;
527 mock_translate_ranker_.FlushTranslateEvents(&events_cache);
528 EXPECT_EQ(0U, events_cache.size());
529
530 translate_manager_->RecordTranslateEvent(
531 metrics::TranslateEventProto::USER_ACCEPT);
532 mock_translate_ranker_.FlushTranslateEvents(&events_cache);
533 EXPECT_EQ(1U, events_cache.size());
534 const metrics::TranslateEventProto& tep = events_cache[0];
535 EXPECT_EQ(page_lang, tep.source_language());
536 EXPECT_EQ(locale, tep.target_language());
537 EXPECT_EQ(0L, tep.decision_overrides_size());
538 EXPECT_EQ(metrics::TranslateEventProto::USER_ACCEPT, tep.event_type());
539 }
540
541 TEST_F(TranslateManagerTest, TestShouldOverrideDecisionTrue) {
542 mock_translate_ranker_.set_is_decision_override_enabled(true);
543 PrepareTranslateManager();
544 const std::string locale = "zh-TW";
545 const std::string page_lang = "zh-CN";
546
547 network_notifier_.SimulateOnline();
548 manager_->set_application_locale(locale);
549 ON_CALL(mock_translate_client_, IsTranslatableURL(_))
550 .WillByDefault(Return(true));
551 translate_manager_->GetLanguageState().LanguageDetermined(page_lang, true);
552
553 translate_manager_->InitiateTranslation(page_lang);
554
555 std::vector<metrics::TranslateEventProto> events_cache;
556 EXPECT_TRUE(translate_manager_->ShouldOverrideDecision(
557 metrics::TranslateEventProto::MATCHES_PREVIOUS_LANGUAGE));
558 EXPECT_TRUE(translate_manager_->ShouldOverrideDecision(
559 metrics::TranslateEventProto::LANGUAGE_DISABLED_BY_AUTO_BLACKLIST));
560
561 translate_manager_->RecordTranslateEvent(
562 metrics::TranslateEventProto::USER_DECLINE);
563 mock_translate_ranker_.FlushTranslateEvents(&events_cache);
564 EXPECT_EQ(1U, events_cache.size());
565 const metrics::TranslateEventProto& tep = events_cache[0];
566 EXPECT_EQ(page_lang, tep.source_language());
567 EXPECT_EQ(locale, tep.target_language());
568 EXPECT_EQ(2L, tep.decision_overrides_size());
569 EXPECT_THAT(
570 tep.decision_overrides(),
571 ::testing::ElementsAre(
572 metrics::TranslateEventProto::MATCHES_PREVIOUS_LANGUAGE,
573 metrics::TranslateEventProto::LANGUAGE_DISABLED_BY_AUTO_BLACKLIST));
574 EXPECT_EQ(metrics::TranslateEventProto::USER_DECLINE, tep.event_type());
575 }
576
577 TEST_F(TranslateManagerTest, TestShouldOverrideDecisionFalse) {
578 mock_translate_ranker_.set_is_decision_override_enabled(false);
579 PrepareTranslateManager();
580 const std::string locale = "zh-TW";
581 const std::string page_lang = "zh-CN";
582
583 network_notifier_.SimulateOnline();
584 manager_->set_application_locale(locale);
585 ON_CALL(mock_translate_client_, IsTranslatableURL(_))
586 .WillByDefault(Return(true));
587 translate_manager_->GetLanguageState().LanguageDetermined(page_lang, true);
588
589 translate_manager_->InitiateTranslation(page_lang);
590 std::vector<metrics::TranslateEventProto> events_cache;
591 EXPECT_FALSE(translate_manager_->ShouldOverrideDecision(
592 metrics::TranslateEventProto::MATCHES_PREVIOUS_LANGUAGE));
593
594 mock_translate_ranker_.FlushTranslateEvents(&events_cache);
595 EXPECT_EQ(1U, events_cache.size());
596 const metrics::TranslateEventProto& tep = events_cache[0];
597 EXPECT_EQ(page_lang, tep.source_language());
598 EXPECT_EQ(locale, tep.target_language());
599 EXPECT_EQ(0L, tep.decision_overrides_size());
600 EXPECT_EQ(metrics::TranslateEventProto::MATCHES_PREVIOUS_LANGUAGE,
601 tep.event_type());
602 }
603
512 } // namespace testing 604 } // namespace testing
513 605
514 } // namespace translate 606 } // namespace translate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698