OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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, ¶ms); | 445 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
471 EXPECT_EQ("zh", params.a); | 446 EXPECT_EQ("zh", params.a); |
472 render_thread_->sink().ClearMessages(); | 447 render_thread_->sink().ClearMessages(); |
473 } | 448 } |
OLD | NEW |