OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "components/translate/core/browser/translate_ui_delegate.h" |
| 6 |
| 7 |
| 8 #include "base/bind.h" |
| 9 #include "base/command_line.h" |
| 10 #include "base/macros.h" |
| 11 #include "base/strings/stringprintf.h" |
| 12 #include "build/build_config.h" |
| 13 #include "components/infobars/core/infobar.h" |
| 14 #include "components/pref_registry/testing_pref_service_syncable.h" |
| 15 #include "components/translate/core/browser/mock_translate_driver.h" |
| 16 #include "components/translate/core/browser/translate_client.h" |
| 17 #include "components/translate/core/browser/translate_infobar_delegate.h" |
| 18 #include "components/translate/core/browser/translate_manager.h" |
| 19 #include "components/translate/core/browser/translate_prefs.h" |
| 20 #include "testing/gmock/include/gmock/gmock.h" |
| 21 #include "testing/gtest/include/gtest/gtest.h" |
| 22 #include "url/gurl.h" |
| 23 |
| 24 using testing::Return; |
| 25 using testing::Test; |
| 26 using translate::testing::MockTranslateDriver; |
| 27 |
| 28 |
| 29 namespace translate { |
| 30 |
| 31 #if defined(OS_CHROMEOS) |
| 32 const char* preferred_languages_prefs = |
| 33 "settings.language.preferred_languages"; |
| 34 #else |
| 35 const char* preferred_languages_prefs = NULL; |
| 36 #endif |
| 37 |
| 38 class MockTranslateClient : public TranslateClient { |
| 39 public: |
| 40 MockTranslateClient( |
| 41 TranslateDriver* driver, |
| 42 PrefService* prefs) |
| 43 : driver_(driver), |
| 44 prefs_(prefs) { |
| 45 } |
| 46 |
| 47 TranslateDriver* GetTranslateDriver() { return driver_; } |
| 48 PrefService* GetPrefs() { return prefs_; } |
| 49 |
| 50 scoped_ptr<TranslatePrefs> GetTranslatePrefs() { |
| 51 return make_scoped_ptr( |
| 52 new TranslatePrefs( |
| 53 prefs_, |
| 54 "intl.accept_languages", |
| 55 preferred_languages_prefs)); |
| 56 } |
| 57 |
| 58 MOCK_METHOD0(GetTranslateAcceptLanguages, TranslateAcceptLanguages*()); |
| 59 MOCK_CONST_METHOD0(GetInfobarIconID, int()); |
| 60 |
| 61 MOCK_CONST_METHOD1(CreateInfoBarMock, |
| 62 infobars::InfoBar*(TranslateInfoBarDelegate*)); |
| 63 scoped_ptr<infobars::InfoBar> CreateInfoBar( |
| 64 scoped_ptr<TranslateInfoBarDelegate> delegate) const { |
| 65 return scoped_ptr<infobars::InfoBar>( |
| 66 CreateInfoBarMock(std::move(delegate).get())); |
| 67 } |
| 68 |
| 69 MOCK_METHOD5(ShowTranslateUI, void(translate::TranslateStep, |
| 70 const std::string&, |
| 71 const std::string&, |
| 72 TranslateErrors::Type, |
| 73 bool)); |
| 74 MOCK_METHOD1(IsTranslatableURL, bool(const GURL&)); |
| 75 MOCK_METHOD1(ShowReportLanguageDetectionErrorUI, void(const GURL&)); |
| 76 |
| 77 private: |
| 78 TranslateDriver* driver_; |
| 79 PrefService* prefs_; |
| 80 }; |
| 81 |
| 82 class TranslateUIDelegateTest : public ::testing::Test { |
| 83 public: |
| 84 TranslateUIDelegateTest() : ::testing::Test() {} |
| 85 |
| 86 void SetUp() override { |
| 87 pref_service_.reset(new user_prefs::TestingPrefServiceSyncable()); |
| 88 TranslatePrefs::RegisterProfilePrefs(pref_service_->registry()); |
| 89 |
| 90 client_.reset(new MockTranslateClient( |
| 91 &driver_, |
| 92 pref_service_.get())); |
| 93 |
| 94 manager_.reset(new TranslateManager(client_.get(), "hi")); |
| 95 manager_->GetLanguageState().set_translation_declined(false); |
| 96 |
| 97 delegate_.reset(new TranslateUIDelegate( |
| 98 manager_->GetWeakPtr(), "ar", "fr")); |
| 99 |
| 100 ASSERT_FALSE(client_->GetTranslatePrefs()->IsTooOftenDenied("ar")); |
| 101 } |
| 102 |
| 103 |
| 104 MockTranslateDriver driver_; |
| 105 scoped_ptr<MockTranslateClient> client_; |
| 106 scoped_ptr<user_prefs::TestingPrefServiceSyncable> pref_service_; |
| 107 scoped_ptr<TranslateManager> manager_; |
| 108 scoped_ptr<TranslateUIDelegate> delegate_; |
| 109 |
| 110 private: |
| 111 DISALLOW_COPY_AND_ASSIGN(TranslateUIDelegateTest); |
| 112 }; |
| 113 |
| 114 |
| 115 TEST_F(TranslateUIDelegateTest, CheckDeclinedFalse) { |
| 116 scoped_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs()); |
| 117 for (int i = 0; i < 10; i++) { |
| 118 prefs->IncrementTranslationAcceptedCount("ar"); |
| 119 } |
| 120 prefs->IncrementTranslationDeniedCount("ar"); |
| 121 int accepted_count = prefs->GetTranslationAcceptedCount("ar"); |
| 122 int denied_count = prefs->GetTranslationDeniedCount("ar"); |
| 123 |
| 124 delegate_->TranslationDeclined(false); |
| 125 |
| 126 EXPECT_EQ(accepted_count, prefs->GetTranslationAcceptedCount("ar")); |
| 127 EXPECT_EQ(denied_count, prefs->GetTranslationDeniedCount("ar")); |
| 128 EXPECT_FALSE(prefs->IsTooOftenDenied("ar")); |
| 129 EXPECT_FALSE(manager_->GetLanguageState().translation_declined()); |
| 130 } |
| 131 |
| 132 TEST_F(TranslateUIDelegateTest, CheckDeclinedTrue) { |
| 133 scoped_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs()); |
| 134 for (int i = 0; i < 10; i++) { |
| 135 prefs->IncrementTranslationAcceptedCount("ar"); |
| 136 } |
| 137 prefs->IncrementTranslationDeniedCount("ar"); |
| 138 int denied_count = prefs->GetTranslationDeniedCount("ar"); |
| 139 |
| 140 delegate_->TranslationDeclined(true); |
| 141 |
| 142 EXPECT_EQ(0, prefs->GetTranslationAcceptedCount("ar")); |
| 143 EXPECT_EQ(denied_count + 1, prefs->GetTranslationDeniedCount("ar")); |
| 144 EXPECT_TRUE(manager_->GetLanguageState().translation_declined()); |
| 145 } |
| 146 |
| 147 // TODO(ftang) Currently this file only test TranslationDeclined(), we |
| 148 // need to add the test for other functions soon to increase the test |
| 149 // coverage. |
| 150 |
| 151 } // namespace translate |
OLD | NEW |