| 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(
|
| + "settings.language.preferred_languages", std::string());
|
| + 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.
|
|
|