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

Side by Side Diff: chrome/renderer/translate_helper_browsertest.cc

Issue 12209114: Translate: introduce unittest for TranslateHelper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add a missing file Created 7 years, 10 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/common/chrome_constants.h" 5 #include "chrome/common/chrome_constants.h"
6 #include "chrome/common/render_messages.h" 6 #include "chrome/common/render_messages.h"
7 #include "chrome/renderer/translate_helper.h" 7 #include "chrome/renderer/translate_helper.h"
8 #include "chrome/test/base/chrome_render_view_test.h" 8 #include "chrome/test/base/chrome_render_view_test.h"
9 #include "content/public/renderer/render_view.h" 9 #include "content/public/renderer/render_view.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 11 matching lines...) Expand all
22 22
23 virtual bool DontDelayTasks() { return true; } 23 virtual bool DontDelayTasks() { return true; }
24 24
25 void TranslatePage(int page_id, 25 void TranslatePage(int page_id,
26 const std::string& source_lang, 26 const std::string& source_lang,
27 const std::string& target_lang, 27 const std::string& target_lang,
28 const std::string& translate_script) { 28 const std::string& translate_script) {
29 OnTranslatePage(page_id, translate_script, source_lang, target_lang); 29 OnTranslatePage(page_id, translate_script, source_lang, target_lang);
30 } 30 }
31 31
32 void ConvertLanguageCodeSynonym(std::string* code) {
33 TranslateHelper::ConvertLanguageCodeSynonym(code);
34 }
35
36 MOCK_METHOD0(IsTranslateLibAvailable, bool()); 32 MOCK_METHOD0(IsTranslateLibAvailable, bool());
37 MOCK_METHOD0(IsTranslateLibReady, bool()); 33 MOCK_METHOD0(IsTranslateLibReady, bool());
38 MOCK_METHOD0(HasTranslationFinished, bool()); 34 MOCK_METHOD0(HasTranslationFinished, bool());
39 MOCK_METHOD0(HasTranslationFailed, bool()); 35 MOCK_METHOD0(HasTranslationFailed, bool());
40 MOCK_METHOD0(GetOriginalPageLanguage, std::string()); 36 MOCK_METHOD0(GetOriginalPageLanguage, std::string());
41 MOCK_METHOD0(StartTranslation, bool()); 37 MOCK_METHOD0(StartTranslation, bool());
42 38
43 private: 39 private:
44 DISALLOW_COPY_AND_ASSIGN(TestTranslateHelper); 40 DISALLOW_COPY_AND_ASSIGN(TestTranslateHelper);
45 }; 41 };
46 42
47 class TranslateHelperTest : public ChromeRenderViewTest { 43 class TranslateHelperBrowserTest : public ChromeRenderViewTest {
Takashi Toyoshima 2013/02/12 06:26:53 Rename it because now unit test for TranslateHelpe
sky 2013/02/12 17:28:02 Additionally do the following: . rename this file
Takashi Toyoshima 2013/02/13 02:20:26 I'm afraid that you misunderstand changes on this
48 public: 44 public:
49 TranslateHelperTest() : translate_helper_(NULL) {} 45 TranslateHelperBrowserTest() : translate_helper_(NULL) {}
50 46
51 protected: 47 protected:
52 virtual void SetUp() { 48 virtual void SetUp() {
53 ChromeRenderViewTest::SetUp(); 49 ChromeRenderViewTest::SetUp();
54 translate_helper_ = new TestTranslateHelper(view_); 50 translate_helper_ = new TestTranslateHelper(view_);
55 } 51 }
56 52
57 virtual void TearDown() { 53 virtual void TearDown() {
58 delete translate_helper_; 54 delete translate_helper_;
59 ChromeRenderViewTest::TearDown(); 55 ChromeRenderViewTest::TearDown();
(...skipping 19 matching lines...) Expand all
79 if (error) 75 if (error)
80 *error = translate_param.d; 76 *error = translate_param.d;
81 return true; 77 return true;
82 } 78 }
83 79
84 TestTranslateHelper* translate_helper_; 80 TestTranslateHelper* translate_helper_;
85 }; 81 };
86 82
87 // Tests that the browser gets notified of the translation failure if the 83 // Tests that the browser gets notified of the translation failure if the
88 // translate library fails/times-out during initialization. 84 // translate library fails/times-out during initialization.
89 TEST_F(TranslateHelperTest, TranslateLibNeverReady) { 85 TEST_F(TranslateHelperBrowserTest, TranslateLibNeverReady) {
90 // We make IsTranslateLibAvailable true so we don't attempt to inject the 86 // We make IsTranslateLibAvailable true so we don't attempt to inject the
91 // library. 87 // library.
92 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable()) 88 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable())
93 .Times(AtLeast(1)) 89 .Times(AtLeast(1))
94 .WillRepeatedly(Return(true)); 90 .WillRepeatedly(Return(true));
95 91
96 EXPECT_CALL(*translate_helper_, IsTranslateLibReady()) 92 EXPECT_CALL(*translate_helper_, IsTranslateLibReady())
97 .Times(AtLeast(5)) // See kMaxTranslateInitCheckAttempts in 93 .Times(AtLeast(5)) // See kMaxTranslateInitCheckAttempts in
98 // translate_helper.cc 94 // translate_helper.cc
99 .WillRepeatedly(Return(false)); 95 .WillRepeatedly(Return(false));
100 96
101 translate_helper_->TranslatePage( 97 translate_helper_->TranslatePage(
102 view_->GetPageId(), "en", "fr", std::string()); 98 view_->GetPageId(), "en", "fr", std::string());
103 MessageLoop::current()->RunUntilIdle(); 99 MessageLoop::current()->RunUntilIdle();
104 100
105 int page_id; 101 int page_id;
106 TranslateErrors::Type error; 102 TranslateErrors::Type error;
107 ASSERT_TRUE(GetPageTranslatedMessage(&page_id, NULL, NULL, &error)); 103 ASSERT_TRUE(GetPageTranslatedMessage(&page_id, NULL, NULL, &error));
108 EXPECT_EQ(view_->GetPageId(), page_id); 104 EXPECT_EQ(view_->GetPageId(), page_id);
109 EXPECT_EQ(TranslateErrors::INITIALIZATION_ERROR, error); 105 EXPECT_EQ(TranslateErrors::INITIALIZATION_ERROR, error);
110 } 106 }
111 107
112 // Tests that the browser gets notified of the translation success when the 108 // Tests that the browser gets notified of the translation success when the
113 // translation succeeds. 109 // translation succeeds.
114 TEST_F(TranslateHelperTest, TranslateSuccess) { 110 TEST_F(TranslateHelperBrowserTest, TranslateSuccess) {
115 // We make IsTranslateLibAvailable true so we don't attempt to inject the 111 // We make IsTranslateLibAvailable true so we don't attempt to inject the
116 // library. 112 // library.
117 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable()) 113 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable())
118 .Times(AtLeast(1)) 114 .Times(AtLeast(1))
119 .WillRepeatedly(Return(true)); 115 .WillRepeatedly(Return(true));
120 116
121 EXPECT_CALL(*translate_helper_, IsTranslateLibReady()) 117 EXPECT_CALL(*translate_helper_, IsTranslateLibReady())
122 .WillOnce(Return(false)) 118 .WillOnce(Return(false))
123 .WillOnce(Return(true)); 119 .WillOnce(Return(true));
124 120
(...skipping 22 matching lines...) Expand all
147 &received_target_lang, 143 &received_target_lang,
148 &error)); 144 &error));
149 EXPECT_EQ(view_->GetPageId(), page_id); 145 EXPECT_EQ(view_->GetPageId(), page_id);
150 EXPECT_EQ(original_lang, received_original_lang); 146 EXPECT_EQ(original_lang, received_original_lang);
151 EXPECT_EQ(target_lang, received_target_lang); 147 EXPECT_EQ(target_lang, received_target_lang);
152 EXPECT_EQ(TranslateErrors::NONE, error); 148 EXPECT_EQ(TranslateErrors::NONE, error);
153 } 149 }
154 150
155 // Tests that the browser gets notified of the translation failure when the 151 // Tests that the browser gets notified of the translation failure when the
156 // translation fails. 152 // translation fails.
157 TEST_F(TranslateHelperTest, TranslateFailure) { 153 TEST_F(TranslateHelperBrowserTest, TranslateFailure) {
158 // We make IsTranslateLibAvailable true so we don't attempt to inject the 154 // We make IsTranslateLibAvailable true so we don't attempt to inject the
159 // library. 155 // library.
160 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable()) 156 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable())
161 .Times(AtLeast(1)) 157 .Times(AtLeast(1))
162 .WillRepeatedly(Return(true)); 158 .WillRepeatedly(Return(true));
163 159
164 EXPECT_CALL(*translate_helper_, IsTranslateLibReady()) 160 EXPECT_CALL(*translate_helper_, IsTranslateLibReady())
165 .WillOnce(Return(true)); 161 .WillOnce(Return(true));
166 162
167 EXPECT_CALL(*translate_helper_, StartTranslation()).WillOnce(Return(true)); 163 EXPECT_CALL(*translate_helper_, StartTranslation()).WillOnce(Return(true));
(...skipping 15 matching lines...) Expand all
183 179
184 int page_id; 180 int page_id;
185 TranslateErrors::Type error; 181 TranslateErrors::Type error;
186 ASSERT_TRUE(GetPageTranslatedMessage(&page_id, NULL, NULL, &error)); 182 ASSERT_TRUE(GetPageTranslatedMessage(&page_id, NULL, NULL, &error));
187 EXPECT_EQ(view_->GetPageId(), page_id); 183 EXPECT_EQ(view_->GetPageId(), page_id);
188 EXPECT_EQ(TranslateErrors::TRANSLATION_ERROR, error); 184 EXPECT_EQ(TranslateErrors::TRANSLATION_ERROR, error);
189 } 185 }
190 186
191 // Tests that when the browser translate a page for which the language is 187 // Tests that when the browser translate a page for which the language is
192 // undefined we query the translate element to get the language. 188 // undefined we query the translate element to get the language.
193 TEST_F(TranslateHelperTest, UndefinedSourceLang) { 189 TEST_F(TranslateHelperBrowserTest, UndefinedSourceLang) {
194 // We make IsTranslateLibAvailable true so we don't attempt to inject the 190 // We make IsTranslateLibAvailable true so we don't attempt to inject the
195 // library. 191 // library.
196 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable()) 192 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable())
197 .Times(AtLeast(1)) 193 .Times(AtLeast(1))
198 .WillRepeatedly(Return(true)); 194 .WillRepeatedly(Return(true));
199 195
200 EXPECT_CALL(*translate_helper_, IsTranslateLibReady()) 196 EXPECT_CALL(*translate_helper_, IsTranslateLibReady())
201 .WillOnce(Return(true)); 197 .WillOnce(Return(true));
202 198
203 EXPECT_CALL(*translate_helper_, GetOriginalPageLanguage()) 199 EXPECT_CALL(*translate_helper_, GetOriginalPageLanguage())
(...skipping 18 matching lines...) Expand all
222 ASSERT_TRUE(GetPageTranslatedMessage(&page_id, &original_lang, &target_lang, 218 ASSERT_TRUE(GetPageTranslatedMessage(&page_id, &original_lang, &target_lang,
223 &error)); 219 &error));
224 EXPECT_EQ(view_->GetPageId(), page_id); 220 EXPECT_EQ(view_->GetPageId(), page_id);
225 EXPECT_EQ("de", original_lang); 221 EXPECT_EQ("de", original_lang);
226 EXPECT_EQ("fr", target_lang); 222 EXPECT_EQ("fr", target_lang);
227 EXPECT_EQ(TranslateErrors::NONE, error); 223 EXPECT_EQ(TranslateErrors::NONE, error);
228 } 224 }
229 225
230 // Tests that starting a translation while a similar one is pending does not 226 // Tests that starting a translation while a similar one is pending does not
231 // break anything. 227 // break anything.
232 TEST_F(TranslateHelperTest, MultipleSimilarTranslations) { 228 TEST_F(TranslateHelperBrowserTest, MultipleSimilarTranslations) {
233 // We make IsTranslateLibAvailable true so we don't attempt to inject the 229 // We make IsTranslateLibAvailable true so we don't attempt to inject the
234 // library. 230 // library.
235 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable()) 231 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable())
236 .Times(AtLeast(1)) 232 .Times(AtLeast(1))
237 .WillRepeatedly(Return(true)); 233 .WillRepeatedly(Return(true));
238 234
239 EXPECT_CALL(*translate_helper_, IsTranslateLibReady()) 235 EXPECT_CALL(*translate_helper_, IsTranslateLibReady())
240 .WillRepeatedly(Return(true)); 236 .WillRepeatedly(Return(true));
241 EXPECT_CALL(*translate_helper_, StartTranslation()) 237 EXPECT_CALL(*translate_helper_, StartTranslation())
242 .WillRepeatedly(Return(true)); 238 .WillRepeatedly(Return(true));
(...skipping 20 matching lines...) Expand all
263 &received_original_lang, 259 &received_original_lang,
264 &received_target_lang, 260 &received_target_lang,
265 &error)); 261 &error));
266 EXPECT_EQ(view_->GetPageId(), page_id); 262 EXPECT_EQ(view_->GetPageId(), page_id);
267 EXPECT_EQ(original_lang, received_original_lang); 263 EXPECT_EQ(original_lang, received_original_lang);
268 EXPECT_EQ(target_lang, received_target_lang); 264 EXPECT_EQ(target_lang, received_target_lang);
269 EXPECT_EQ(TranslateErrors::NONE, error); 265 EXPECT_EQ(TranslateErrors::NONE, error);
270 } 266 }
271 267
272 // Tests that starting a translation while a different one is pending works. 268 // Tests that starting a translation while a different one is pending works.
273 TEST_F(TranslateHelperTest, MultipleDifferentTranslations) { 269 TEST_F(TranslateHelperBrowserTest, MultipleDifferentTranslations) {
274 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable()) 270 EXPECT_CALL(*translate_helper_, IsTranslateLibAvailable())
275 .Times(AtLeast(1)) 271 .Times(AtLeast(1))
276 .WillRepeatedly(Return(true)); 272 .WillRepeatedly(Return(true));
277 EXPECT_CALL(*translate_helper_, IsTranslateLibReady()) 273 EXPECT_CALL(*translate_helper_, IsTranslateLibReady())
278 .WillRepeatedly(Return(true)); 274 .WillRepeatedly(Return(true));
279 EXPECT_CALL(*translate_helper_, StartTranslation()) 275 EXPECT_CALL(*translate_helper_, StartTranslation())
280 .WillRepeatedly(Return(true)); 276 .WillRepeatedly(Return(true));
281 EXPECT_CALL(*translate_helper_, HasTranslationFailed()) 277 EXPECT_CALL(*translate_helper_, HasTranslationFailed())
282 .WillRepeatedly(Return(false)); 278 .WillRepeatedly(Return(false));
283 EXPECT_CALL(*translate_helper_, HasTranslationFinished()) 279 EXPECT_CALL(*translate_helper_, HasTranslationFinished())
(...skipping 16 matching lines...) Expand all
300 ASSERT_TRUE(GetPageTranslatedMessage(&page_id, 296 ASSERT_TRUE(GetPageTranslatedMessage(&page_id,
301 &received_original_lang, 297 &received_original_lang,
302 &received_target_lang, 298 &received_target_lang,
303 &error)); 299 &error));
304 EXPECT_EQ(view_->GetPageId(), page_id); 300 EXPECT_EQ(view_->GetPageId(), page_id);
305 EXPECT_EQ(original_lang, received_original_lang); 301 EXPECT_EQ(original_lang, received_original_lang);
306 EXPECT_EQ(new_target_lang, received_target_lang); 302 EXPECT_EQ(new_target_lang, received_target_lang);
307 EXPECT_EQ(TranslateErrors::NONE, error); 303 EXPECT_EQ(TranslateErrors::NONE, error);
308 } 304 }
309 305
310 // Tests that synonym language code is converted to one used in supporting list.
Takashi Toyoshima 2013/02/12 06:26:53 Move this test to newly introduced unit test.
311 TEST_F(TranslateHelperTest, LanguageCodeSynonyms) {
312 std::string language;
313
314 language = std::string("nb");
315 translate_helper_->ConvertLanguageCodeSynonym(&language);
316 EXPECT_EQ(0, language.compare("no"));
317
318 language = std::string("he");
319 translate_helper_->ConvertLanguageCodeSynonym(&language);
320 EXPECT_EQ(0, language.compare("iw"));
321
322 language = std::string("jv");
323 translate_helper_->ConvertLanguageCodeSynonym(&language);
324 EXPECT_EQ(0, language.compare("jw"));
325
326 language = std::string("fil");
327 translate_helper_->ConvertLanguageCodeSynonym(&language);
328 EXPECT_EQ(0, language.compare("tl"));
329 }
330
331 // Tests that we send the right translate language message for a page and that 306 // Tests that we send the right translate language message for a page and that
332 // we respect the "no translate" meta-tag. 307 // we respect the "no translate" meta-tag.
333 TEST_F(ChromeRenderViewTest, TranslatablePage) { 308 TEST_F(ChromeRenderViewTest, TranslatablePage) {
334 // Suppress the normal delay that occurs when the page is loaded before which 309 // Suppress the normal delay that occurs when the page is loaded before which
335 // the renderer sends the page contents to the browser. 310 // the renderer sends the page contents to the browser.
336 SendContentStateImmediately(); 311 SendContentStateImmediately();
337 312
338 LoadHTML("<html><body>A random page with random content.</body></html>"); 313 LoadHTML("<html><body>A random page with random content.</body></html>");
339 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( 314 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching(
340 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 315 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 439
465 GoBack(GetMainFrame()->previousHistoryItem()); 440 GoBack(GetMainFrame()->previousHistoryItem());
466 441
467 message = render_thread_->sink().GetUniqueMessageMatching( 442 message = render_thread_->sink().GetUniqueMessageMatching(
468 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 443 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
469 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 444 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
470 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 445 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
471 EXPECT_EQ("zh", params.a); 446 EXPECT_EQ("zh", params.a);
472 render_thread_->sink().ClearMessages(); 447 render_thread_->sink().ClearMessages();
473 } 448 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698