| Index: components/translate/core/browser/translate_manager_unittest.cc
|
| diff --git a/components/translate/core/browser/translate_manager_unittest.cc b/components/translate/core/browser/translate_manager_unittest.cc
|
| index 7c4af1c1251c22ab14444273fb2e4d32e024bf44..c62846d7527290df48e7269d9acfa16a325e4ad2 100644
|
| --- a/components/translate/core/browser/translate_manager_unittest.cc
|
| +++ b/components/translate/core/browser/translate_manager_unittest.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/test/scoped_feature_list.h"
|
| #include "build/build_config.h"
|
| #include "components/infobars/core/infobar.h"
|
| +#include "components/metrics/proto/translate_event.pb.h"
|
| #include "components/pref_registry/pref_registry_syncable.h"
|
| #include "components/sync_preferences/testing_pref_service_syncable.h"
|
| #include "components/translate/core/browser/mock_translate_driver.h"
|
| @@ -509,6 +510,97 @@ TEST_F(TranslateManagerTest,
|
| EXPECT_FALSE(CallLanguageInULP("zh-TW"));
|
| }
|
|
|
| +TEST_F(TranslateManagerTest, TestRecordTranslateEvent) {
|
| + PrepareTranslateManager();
|
| + const std::string locale = "zh-TW";
|
| + const std::string page_lang = "zh-CN";
|
| +
|
| + network_notifier_.SimulateOnline();
|
| + manager_->set_application_locale(locale);
|
| + ON_CALL(mock_translate_client_, IsTranslatableURL(_))
|
| + .WillByDefault(Return(true));
|
| + translate_manager_->GetLanguageState().LanguageDetermined(page_lang, true);
|
| +
|
| + translate_manager_->InitiateTranslation(page_lang);
|
| +
|
| + std::vector<metrics::TranslateEventProto> events_cache;
|
| + mock_translate_ranker_.FlushTranslateEvents(&events_cache);
|
| + EXPECT_EQ(0U, events_cache.size());
|
| +
|
| + translate_manager_->RecordTranslateEvent(
|
| + metrics::TranslateEventProto::USER_ACCEPT);
|
| + mock_translate_ranker_.FlushTranslateEvents(&events_cache);
|
| + EXPECT_EQ(1U, events_cache.size());
|
| + const metrics::TranslateEventProto& tep = events_cache[0];
|
| + EXPECT_EQ(page_lang, tep.source_language());
|
| + EXPECT_EQ(locale, tep.target_language());
|
| + EXPECT_EQ(0L, tep.decision_overrides_size());
|
| + EXPECT_EQ(metrics::TranslateEventProto::USER_ACCEPT, tep.event_type());
|
| +}
|
| +
|
| +TEST_F(TranslateManagerTest, TestShouldOverrideDecisionTrue) {
|
| + mock_translate_ranker_.set_is_decision_override_enabled(true);
|
| + PrepareTranslateManager();
|
| + const std::string locale = "zh-TW";
|
| + const std::string page_lang = "zh-CN";
|
| +
|
| + network_notifier_.SimulateOnline();
|
| + manager_->set_application_locale(locale);
|
| + ON_CALL(mock_translate_client_, IsTranslatableURL(_))
|
| + .WillByDefault(Return(true));
|
| + translate_manager_->GetLanguageState().LanguageDetermined(page_lang, true);
|
| +
|
| + translate_manager_->InitiateTranslation(page_lang);
|
| +
|
| + std::vector<metrics::TranslateEventProto> events_cache;
|
| + EXPECT_TRUE(translate_manager_->ShouldOverrideDecision(
|
| + metrics::TranslateEventProto::MATCHES_PREVIOUS_LANGUAGE));
|
| + EXPECT_TRUE(translate_manager_->ShouldOverrideDecision(
|
| + metrics::TranslateEventProto::LANGUAGE_DISABLED_BY_AUTO_BLACKLIST));
|
| +
|
| + translate_manager_->RecordTranslateEvent(
|
| + metrics::TranslateEventProto::USER_DECLINE);
|
| + mock_translate_ranker_.FlushTranslateEvents(&events_cache);
|
| + EXPECT_EQ(1U, events_cache.size());
|
| + const metrics::TranslateEventProto& tep = events_cache[0];
|
| + EXPECT_EQ(page_lang, tep.source_language());
|
| + EXPECT_EQ(locale, tep.target_language());
|
| + EXPECT_EQ(2L, tep.decision_overrides_size());
|
| + EXPECT_THAT(
|
| + tep.decision_overrides(),
|
| + ::testing::ElementsAre(
|
| + metrics::TranslateEventProto::MATCHES_PREVIOUS_LANGUAGE,
|
| + metrics::TranslateEventProto::LANGUAGE_DISABLED_BY_AUTO_BLACKLIST));
|
| + EXPECT_EQ(metrics::TranslateEventProto::USER_DECLINE, tep.event_type());
|
| +}
|
| +
|
| +TEST_F(TranslateManagerTest, TestShouldOverrideDecisionFalse) {
|
| + mock_translate_ranker_.set_is_decision_override_enabled(false);
|
| + PrepareTranslateManager();
|
| + const std::string locale = "zh-TW";
|
| + const std::string page_lang = "zh-CN";
|
| +
|
| + network_notifier_.SimulateOnline();
|
| + manager_->set_application_locale(locale);
|
| + ON_CALL(mock_translate_client_, IsTranslatableURL(_))
|
| + .WillByDefault(Return(true));
|
| + translate_manager_->GetLanguageState().LanguageDetermined(page_lang, true);
|
| +
|
| + translate_manager_->InitiateTranslation(page_lang);
|
| + std::vector<metrics::TranslateEventProto> events_cache;
|
| + EXPECT_FALSE(translate_manager_->ShouldOverrideDecision(
|
| + metrics::TranslateEventProto::MATCHES_PREVIOUS_LANGUAGE));
|
| +
|
| + mock_translate_ranker_.FlushTranslateEvents(&events_cache);
|
| + EXPECT_EQ(1U, events_cache.size());
|
| + const metrics::TranslateEventProto& tep = events_cache[0];
|
| + EXPECT_EQ(page_lang, tep.source_language());
|
| + EXPECT_EQ(locale, tep.target_language());
|
| + EXPECT_EQ(0L, tep.decision_overrides_size());
|
| + EXPECT_EQ(metrics::TranslateEventProto::MATCHES_PREVIOUS_LANGUAGE,
|
| + tep.event_type());
|
| +}
|
| +
|
| } // namespace testing
|
|
|
| } // namespace translate
|
|
|