Chromium Code Reviews| Index: components/translate/core/browser/translate_ui_delegate_unittest.cc |
| diff --git a/components/translate/core/browser/translate_ui_delegate_unittest.cc b/components/translate/core/browser/translate_ui_delegate_unittest.cc |
| index 417ab51d543e5b502647635584189dc50fa62e64..92656ff718485ad74dafeaa239eae59f9605cdb4 100644 |
| --- a/components/translate/core/browser/translate_ui_delegate_unittest.cc |
| +++ b/components/translate/core/browser/translate_ui_delegate_unittest.cc |
| @@ -11,6 +11,7 @@ |
| #include "base/strings/stringprintf.h" |
| #include "build/build_config.h" |
| #include "components/infobars/core/infobar.h" |
| +#include "components/pref_registry/pref_registry_syncable.h" |
| #include "components/pref_registry/testing_pref_service_syncable.h" |
| #include "components/translate/core/browser/mock_translate_driver.h" |
| #include "components/translate/core/browser/translate_client.h" |
| @@ -25,24 +26,18 @@ using testing::Return; |
| using testing::Test; |
| using translate::testing::MockTranslateDriver; |
| - |
| namespace translate { |
| #if defined(OS_CHROMEOS) |
| -const char* preferred_languages_prefs = |
| - "settings.language.preferred_languages"; |
| +const char* preferred_languages_prefs = "settings.language.preferred_languages"; |
| #else |
| const char* preferred_languages_prefs = NULL; |
| #endif |
| class MockTranslateClient : public TranslateClient { |
| public: |
| - MockTranslateClient( |
| - TranslateDriver* driver, |
| - PrefService* prefs) |
| - : driver_(driver), |
| - prefs_(prefs) { |
| - } |
| + MockTranslateClient(TranslateDriver* driver, PrefService* prefs) |
| + : driver_(driver), prefs_(prefs) {} |
| TranslateDriver* GetTranslateDriver() { return driver_; } |
| PrefService* GetPrefs() { return prefs_; } |
| @@ -62,11 +57,12 @@ class MockTranslateClient : public TranslateClient { |
| return base::WrapUnique(CreateInfoBarMock(std::move(delegate).get())); |
| } |
| - MOCK_METHOD5(ShowTranslateUI, void(translate::TranslateStep, |
| - const std::string&, |
| - const std::string&, |
| - TranslateErrors::Type, |
| - bool)); |
| + MOCK_METHOD5(ShowTranslateUI, |
| + void(translate::TranslateStep, |
| + const std::string&, |
| + const std::string&, |
| + TranslateErrors::Type, |
| + bool)); |
| MOCK_METHOD1(IsTranslatableURL, bool(const GURL&)); |
| MOCK_METHOD1(ShowReportLanguageDetectionErrorUI, void(const GURL&)); |
| @@ -81,21 +77,32 @@ class TranslateUIDelegateTest : public ::testing::Test { |
| void SetUp() override { |
| pref_service_.reset(new user_prefs::TestingPrefServiceSyncable()); |
| + pref_service_->registry()->RegisterStringPref( |
|
msw
2016/05/03 22:33:35
Why do we now need to register these two prefs? (I
ftang
2016/05/03 23:55:42
without doing so, the unit test will break in some
msw
2016/05/04 00:19:20
Acknowledged.
|
| + "settings.language.preferred_languages", std::string()); |
|
msw
2016/05/03 22:33:35
Should this use preferred_languages_prefs? (maybe
ftang
2016/05/03 23:55:42
ChromeOS use one of them and non ChromeOS use anot
msw
2016/05/04 00:19:20
Acknowledged.
|
| + pref_service_->registry()->RegisterStringPref("intl.accept_languages", |
| + std::string()); |
| TranslatePrefs::RegisterProfilePrefs(pref_service_->registry()); |
| - client_.reset(new MockTranslateClient( |
| - &driver_, |
| - pref_service_.get())); |
| + client_.reset(new MockTranslateClient(&driver_, pref_service_.get())); |
| manager_.reset(new TranslateManager(client_.get(), "hi")); |
| manager_->GetLanguageState().set_translation_declined(false); |
| - delegate_.reset(new TranslateUIDelegate( |
| - manager_->GetWeakPtr(), "ar", "fr")); |
| + delegate_.reset( |
| + new TranslateUIDelegate(manager_->GetWeakPtr(), "ar", "fr")); |
| ASSERT_FALSE(client_->GetTranslatePrefs()->IsTooOftenDenied("ar")); |
| + base::FeatureList::ClearInstanceForTesting(); |
| + base::FeatureList::SetInstance(base::WrapUnique(new base::FeatureList)); |
| } |
| + void TurnOnTranslate2016Q2UIFlag() { |
| + base::FeatureList::ClearInstanceForTesting(); |
| + std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList); |
| + feature_list->InitializeFromCommandLine(translate::kTranslateUI2016Q2.name, |
| + std::string()); |
| + base::FeatureList::SetInstance(std::move(feature_list)); |
| + } |
| MockTranslateDriver driver_; |
| std::unique_ptr<MockTranslateClient> client_; |
| @@ -107,7 +114,6 @@ class TranslateUIDelegateTest : public ::testing::Test { |
| DISALLOW_COPY_AND_ASSIGN(TranslateUIDelegateTest); |
| }; |
| - |
| TEST_F(TranslateUIDelegateTest, CheckDeclinedFalse) { |
| std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs()); |
| for (int i = 0; i < 10; i++) { |
| @@ -116,11 +122,13 @@ TEST_F(TranslateUIDelegateTest, CheckDeclinedFalse) { |
| prefs->IncrementTranslationDeniedCount("ar"); |
| int accepted_count = prefs->GetTranslationAcceptedCount("ar"); |
| int denied_count = prefs->GetTranslationDeniedCount("ar"); |
| + int ignored_count = prefs->GetTranslationIgnoredCount("ar"); |
| delegate_->TranslationDeclined(false); |
| EXPECT_EQ(accepted_count, prefs->GetTranslationAcceptedCount("ar")); |
| EXPECT_EQ(denied_count, prefs->GetTranslationDeniedCount("ar")); |
| + EXPECT_EQ(ignored_count + 1, prefs->GetTranslationIgnoredCount("ar")); |
| EXPECT_FALSE(prefs->IsTooOftenDenied("ar")); |
| EXPECT_FALSE(manager_->GetLanguageState().translation_declined()); |
| } |
| @@ -132,14 +140,75 @@ TEST_F(TranslateUIDelegateTest, CheckDeclinedTrue) { |
| } |
| prefs->IncrementTranslationDeniedCount("ar"); |
| int denied_count = prefs->GetTranslationDeniedCount("ar"); |
| + int ignored_count = prefs->GetTranslationIgnoredCount("ar"); |
| delegate_->TranslationDeclined(true); |
| EXPECT_EQ(0, prefs->GetTranslationAcceptedCount("ar")); |
| EXPECT_EQ(denied_count + 1, prefs->GetTranslationDeniedCount("ar")); |
| + EXPECT_EQ(ignored_count, prefs->GetTranslationIgnoredCount("ar")); |
| EXPECT_TRUE(manager_->GetLanguageState().translation_declined()); |
| } |
| +TEST_F(TranslateUIDelegateTest, SetLanguageBlocked) { |
| + std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs()); |
| + manager_->GetLanguageState().SetTranslateEnabled(true); |
| + EXPECT_TRUE(manager_->GetLanguageState().translate_enabled()); |
| + prefs->UnblockLanguage("ar"); |
| + EXPECT_FALSE(prefs->IsBlockedLanguage("ar")); |
| + |
| + delegate_->SetLanguageBlocked(true); |
| + |
| + EXPECT_TRUE(prefs->IsBlockedLanguage("ar")); |
| + EXPECT_FALSE(manager_->GetLanguageState().translate_enabled()); |
| + |
| + // Reset it to true again after delegate_->SetLanguageBlocked(true) |
| + // turn it to false. |
| + manager_->GetLanguageState().SetTranslateEnabled(true); |
| + |
| + delegate_->SetLanguageBlocked(false); |
| + |
| + EXPECT_FALSE(prefs->IsBlockedLanguage("ar")); |
| + EXPECT_TRUE(manager_->GetLanguageState().translate_enabled()); |
| +} |
| + |
| +TEST_F(TranslateUIDelegateTest, SetLanguageBlockedIn2016Q2UI) { |
| + TurnOnTranslate2016Q2UIFlag(); |
| + std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs()); |
| + manager_->GetLanguageState().SetTranslateEnabled(true); |
| + EXPECT_TRUE(manager_->GetLanguageState().translate_enabled()); |
| + prefs->UnblockLanguage("ar"); |
| + EXPECT_FALSE(prefs->IsBlockedLanguage("ar")); |
| + |
| + delegate_->SetLanguageBlocked(true); |
| + |
| + EXPECT_TRUE(prefs->IsBlockedLanguage("ar")); |
| + EXPECT_TRUE(manager_->GetLanguageState().translate_enabled()); |
| + |
| + // Reset it to true again after delegate_->SetLanguageBlocked(true) |
| + // turn it to false. |
| + manager_->GetLanguageState().SetTranslateEnabled(true); |
| + |
| + delegate_->SetLanguageBlocked(false); |
| + |
| + EXPECT_FALSE(prefs->IsBlockedLanguage("ar")); |
| + EXPECT_TRUE(manager_->GetLanguageState().translate_enabled()); |
| +} |
| + |
| +TEST_F(TranslateUIDelegateTest, ShouldAlwaysTranslateBeCheckedByDefault) { |
| + std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs()); |
| + prefs->ResetTranslationAcceptedCount("ar"); |
| + |
| + for (int i = 0; i < 2; i++) { |
| + EXPECT_FALSE(delegate_->ShouldAlwaysTranslateBeCheckedByDefault()); |
| + prefs->IncrementTranslationAcceptedCount("ar"); |
| + } |
| + EXPECT_TRUE(delegate_->ShouldAlwaysTranslateBeCheckedByDefault()); |
| + prefs->IncrementTranslationAcceptedCount("ar"); |
| + |
| + EXPECT_FALSE(delegate_->ShouldAlwaysTranslateBeCheckedByDefault()); |
| +} |
| + |
| // TODO(ftang) Currently this file only test TranslationDeclined(), we |
| // need to add the test for other functions soon to increase the test |
| // coverage. |