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

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

Issue 1923143003: Implement the 2016Q2 Translate UI designe spec out in (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix namespace in .h and other minor review comments Created 4 years, 7 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 2016 The Chromium Authors. All rights reserved. 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 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_ui_delegate.h" 5 #include "components/translate/core/browser/translate_ui_delegate.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.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/pref_registry/pref_registry_syncable.h"
14 #include "components/pref_registry/testing_pref_service_syncable.h" 15 #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/mock_translate_driver.h"
16 #include "components/translate/core/browser/translate_client.h" 17 #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_infobar_delegate.h"
18 #include "components/translate/core/browser/translate_manager.h" 19 #include "components/translate/core/browser/translate_manager.h"
19 #include "components/translate/core/browser/translate_prefs.h" 20 #include "components/translate/core/browser/translate_prefs.h"
20 #include "testing/gmock/include/gmock/gmock.h" 21 #include "testing/gmock/include/gmock/gmock.h"
21 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
22 #include "url/gurl.h" 23 #include "url/gurl.h"
23 24
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 TranslateDriver* driver_; 75 TranslateDriver* driver_;
75 PrefService* prefs_; 76 PrefService* prefs_;
76 }; 77 };
77 78
78 class TranslateUIDelegateTest : public ::testing::Test { 79 class TranslateUIDelegateTest : public ::testing::Test {
79 public: 80 public:
80 TranslateUIDelegateTest() : ::testing::Test() {} 81 TranslateUIDelegateTest() : ::testing::Test() {}
81 82
82 void SetUp() override { 83 void SetUp() override {
83 pref_service_.reset(new user_prefs::TestingPrefServiceSyncable()); 84 pref_service_.reset(new user_prefs::TestingPrefServiceSyncable());
85 pref_service_->registry()->RegisterStringPref(
86 "settings.language.preferred_languages", "");
msw 2016/04/29 20:00:03 std::string() here and below.
ftang 2016/04/29 22:37:03 Done.
87 pref_service_->registry()->RegisterStringPref(
88 "intl.accept_languages", "");
84 TranslatePrefs::RegisterProfilePrefs(pref_service_->registry()); 89 TranslatePrefs::RegisterProfilePrefs(pref_service_->registry());
85 90
86 client_.reset(new MockTranslateClient( 91 client_.reset(new MockTranslateClient(
87 &driver_, 92 &driver_,
88 pref_service_.get())); 93 pref_service_.get()));
89 94
90 manager_.reset(new TranslateManager(client_.get(), "hi")); 95 manager_.reset(new TranslateManager(client_.get(), "hi"));
91 manager_->GetLanguageState().set_translation_declined(false); 96 manager_->GetLanguageState().set_translation_declined(false);
92 97
93 delegate_.reset(new TranslateUIDelegate( 98 delegate_.reset(new TranslateUIDelegate(
94 manager_->GetWeakPtr(), "ar", "fr")); 99 manager_->GetWeakPtr(), "ar", "fr"));
95 100
96 ASSERT_FALSE(client_->GetTranslatePrefs()->IsTooOftenDenied("ar")); 101 ASSERT_FALSE(client_->GetTranslatePrefs()->IsTooOftenDenied("ar"));
102 base::FeatureList::ClearInstanceForTesting();
103 base::FeatureList::SetInstance(base::WrapUnique(new base::FeatureList));
97 } 104 }
98 105
106 void TurnOnTranslate2016Q2UIFlag() {
107 base::FeatureList::ClearInstanceForTesting();
108 std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
109 feature_list->InitializeFromCommandLine(
110 translate::kTranslateUI2016Q2.name, "");
msw 2016/04/29 20:00:03 std::string()
ftang 2016/04/29 22:37:03 Done.
111 base::FeatureList::SetInstance(std::move(feature_list));
112 }
99 113
100 MockTranslateDriver driver_; 114 MockTranslateDriver driver_;
101 std::unique_ptr<MockTranslateClient> client_; 115 std::unique_ptr<MockTranslateClient> client_;
102 std::unique_ptr<user_prefs::TestingPrefServiceSyncable> pref_service_; 116 std::unique_ptr<user_prefs::TestingPrefServiceSyncable> pref_service_;
103 std::unique_ptr<TranslateManager> manager_; 117 std::unique_ptr<TranslateManager> manager_;
104 std::unique_ptr<TranslateUIDelegate> delegate_; 118 std::unique_ptr<TranslateUIDelegate> delegate_;
105 119
106 private: 120 private:
107 DISALLOW_COPY_AND_ASSIGN(TranslateUIDelegateTest); 121 DISALLOW_COPY_AND_ASSIGN(TranslateUIDelegateTest);
108 }; 122 };
109 123
110 124
111 TEST_F(TranslateUIDelegateTest, CheckDeclinedFalse) { 125 TEST_F(TranslateUIDelegateTest, CheckDeclinedFalse) {
112 std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs()); 126 std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs());
113 for (int i = 0; i < 10; i++) { 127 for (int i = 0; i < 10; i++) {
114 prefs->IncrementTranslationAcceptedCount("ar"); 128 prefs->IncrementTranslationAcceptedCount("ar");
115 } 129 }
116 prefs->IncrementTranslationDeniedCount("ar"); 130 prefs->IncrementTranslationDeniedCount("ar");
117 int accepted_count = prefs->GetTranslationAcceptedCount("ar"); 131 int accepted_count = prefs->GetTranslationAcceptedCount("ar");
118 int denied_count = prefs->GetTranslationDeniedCount("ar"); 132 int denied_count = prefs->GetTranslationDeniedCount("ar");
133 int ignored_count = prefs->GetTranslationIgnoredCount("ar");
119 134
120 delegate_->TranslationDeclined(false); 135 delegate_->TranslationDeclined(false);
121 136
122 EXPECT_EQ(accepted_count, prefs->GetTranslationAcceptedCount("ar")); 137 EXPECT_EQ(accepted_count, prefs->GetTranslationAcceptedCount("ar"));
123 EXPECT_EQ(denied_count, prefs->GetTranslationDeniedCount("ar")); 138 EXPECT_EQ(denied_count, prefs->GetTranslationDeniedCount("ar"));
139 EXPECT_EQ(ignored_count + 1, prefs->GetTranslationIgnoredCount("ar"));
124 EXPECT_FALSE(prefs->IsTooOftenDenied("ar")); 140 EXPECT_FALSE(prefs->IsTooOftenDenied("ar"));
125 EXPECT_FALSE(manager_->GetLanguageState().translation_declined()); 141 EXPECT_FALSE(manager_->GetLanguageState().translation_declined());
126 } 142 }
127 143
128 TEST_F(TranslateUIDelegateTest, CheckDeclinedTrue) { 144 TEST_F(TranslateUIDelegateTest, CheckDeclinedTrue) {
129 std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs()); 145 std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs());
130 for (int i = 0; i < 10; i++) { 146 for (int i = 0; i < 10; i++) {
131 prefs->IncrementTranslationAcceptedCount("ar"); 147 prefs->IncrementTranslationAcceptedCount("ar");
132 } 148 }
133 prefs->IncrementTranslationDeniedCount("ar"); 149 prefs->IncrementTranslationDeniedCount("ar");
134 int denied_count = prefs->GetTranslationDeniedCount("ar"); 150 int denied_count = prefs->GetTranslationDeniedCount("ar");
151 int ignored_count = prefs->GetTranslationIgnoredCount("ar");
135 152
136 delegate_->TranslationDeclined(true); 153 delegate_->TranslationDeclined(true);
137 154
138 EXPECT_EQ(0, prefs->GetTranslationAcceptedCount("ar")); 155 EXPECT_EQ(0, prefs->GetTranslationAcceptedCount("ar"));
139 EXPECT_EQ(denied_count + 1, prefs->GetTranslationDeniedCount("ar")); 156 EXPECT_EQ(denied_count + 1, prefs->GetTranslationDeniedCount("ar"));
157 EXPECT_EQ(ignored_count, prefs->GetTranslationIgnoredCount("ar"));
140 EXPECT_TRUE(manager_->GetLanguageState().translation_declined()); 158 EXPECT_TRUE(manager_->GetLanguageState().translation_declined());
141 } 159 }
142 160
161 TEST_F(TranslateUIDelegateTest, SetLanguageBlockedTrue) {
162 std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs());
163 manager_->GetLanguageState().SetTranslateEnabled(true);
164 EXPECT_TRUE(manager_->GetLanguageState().translate_enabled());
165 prefs->UnblockLanguage("ar");
166 EXPECT_FALSE(prefs->IsBlockedLanguage("ar"));
167
168 delegate_->SetLanguageBlocked(true);
169
170 EXPECT_TRUE(prefs->IsBlockedLanguage("ar"));
171 EXPECT_FALSE(manager_->GetLanguageState().translate_enabled());
172 }
173
174 TEST_F(TranslateUIDelegateTest, SetLanguageBlockedFalse) {
msw 2016/04/29 20:00:03 Combine this test with the one above? you're toggl
ftang 2016/04/29 22:37:03 Done.
175 std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs());
176 manager_->GetLanguageState().SetTranslateEnabled(true);
177 EXPECT_TRUE(manager_->GetLanguageState().translate_enabled());
178 prefs->BlockLanguage("ar");
179 EXPECT_TRUE(prefs->IsBlockedLanguage("ar"));
180
181 delegate_->SetLanguageBlocked(false);
182
183 EXPECT_FALSE(prefs->IsBlockedLanguage("ar"));
184 EXPECT_TRUE(manager_->GetLanguageState().translate_enabled());
185 }
186
187 TEST_F(TranslateUIDelegateTest, SetLanguageBlockedTrueIn2016Q2UI) {
msw 2016/04/29 20:00:03 Maybe use a parameterized gtest here for old/new?
ftang 2016/04/29 22:37:03 Acknowledged.
msw 2016/04/29 23:43:40 I'm not sure why you wouldn't do this... the new U
msw 2016/04/30 02:12:59 Please add TODOs and/or file a bug, this regresses
188 TurnOnTranslate2016Q2UIFlag();
189 std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs());
190 manager_->GetLanguageState().SetTranslateEnabled(true);
191 EXPECT_TRUE(manager_->GetLanguageState().translate_enabled());
192 prefs->UnblockLanguage("ar");
193 EXPECT_FALSE(prefs->IsBlockedLanguage("ar"));
194
195 delegate_->SetLanguageBlocked(true);
196
197 EXPECT_TRUE(prefs->IsBlockedLanguage("ar"));
198 EXPECT_TRUE(manager_->GetLanguageState().translate_enabled());
199 }
200
201 TEST_F(TranslateUIDelegateTest, SetLanguageBlockedFalseIn2016Q2UI) {
msw 2016/04/29 20:00:03 Ditto
ftang 2016/04/29 22:37:03 Acknowledged.
202 TurnOnTranslate2016Q2UIFlag();
203 std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs());
204 manager_->GetLanguageState().SetTranslateEnabled(true);
205 EXPECT_TRUE(manager_->GetLanguageState().translate_enabled());
206 prefs->BlockLanguage("ar");
207 EXPECT_TRUE(prefs->IsBlockedLanguage("ar"));
208
209 delegate_->SetLanguageBlocked(false);
210
211 EXPECT_FALSE(prefs->IsBlockedLanguage("ar"));
212 EXPECT_TRUE(manager_->GetLanguageState().translate_enabled());
213 }
214
215 TEST_F(TranslateUIDelegateTest, ShowAlwaysTranslateChecked) {
216 std::unique_ptr<TranslatePrefs> prefs(client_->GetTranslatePrefs());
217 prefs->ResetTranslationAcceptedCount("ar");
218
219 for (int i = 0; i < 3; i++) {
220 EXPECT_FALSE(delegate_->ShowAlwaysTranslateChecked());
221 prefs->IncrementTranslationAcceptedCount("ar");
222 }
223 EXPECT_TRUE(delegate_->ShowAlwaysTranslateChecked());
224 prefs->IncrementTranslationAcceptedCount("ar");
225
226 EXPECT_FALSE(delegate_->ShowAlwaysTranslateChecked());
227 }
228
143 // TODO(ftang) Currently this file only test TranslationDeclined(), we 229 // TODO(ftang) Currently this file only test TranslationDeclined(), we
144 // need to add the test for other functions soon to increase the test 230 // need to add the test for other functions soon to increase the test
145 // coverage. 231 // coverage.
146 232
147 } // namespace translate 233 } // namespace translate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698