| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/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" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 | 12 |
| 13 using testing::AtLeast; | 13 using testing::AtLeast; |
| 14 using testing::Return; | 14 using testing::Return; |
| 15 | 15 |
| 16 class TestTranslateHelper : public TranslateHelper { | 16 class TestTranslateHelper : public TranslateHelper { |
| 17 public: | 17 public: |
| 18 explicit TestTranslateHelper(content::RenderView* render_view) | 18 explicit TestTranslateHelper(content::RenderView* render_view) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 32 MOCK_METHOD0(IsTranslateLibReady, bool()); | 32 MOCK_METHOD0(IsTranslateLibReady, bool()); |
| 33 MOCK_METHOD0(HasTranslationFinished, bool()); | 33 MOCK_METHOD0(HasTranslationFinished, bool()); |
| 34 MOCK_METHOD0(HasTranslationFailed, bool()); | 34 MOCK_METHOD0(HasTranslationFailed, bool()); |
| 35 MOCK_METHOD0(GetOriginalPageLanguage, std::string()); | 35 MOCK_METHOD0(GetOriginalPageLanguage, std::string()); |
| 36 MOCK_METHOD0(StartTranslation, bool()); | 36 MOCK_METHOD0(StartTranslation, bool()); |
| 37 | 37 |
| 38 private: | 38 private: |
| 39 DISALLOW_COPY_AND_ASSIGN(TestTranslateHelper); | 39 DISALLOW_COPY_AND_ASSIGN(TestTranslateHelper); |
| 40 }; | 40 }; |
| 41 | 41 |
| 42 class TranslateHelperTest : public RenderViewTest { | 42 class TranslateHelperTest : public ChromeRenderViewTest { |
| 43 public: | 43 public: |
| 44 TranslateHelperTest() : translate_helper_(NULL) {} | 44 TranslateHelperTest() : translate_helper_(NULL) {} |
| 45 | 45 |
| 46 protected: | 46 protected: |
| 47 virtual void SetUp() { | 47 virtual void SetUp() { |
| 48 RenderViewTest::SetUp(); | 48 ChromeRenderViewTest::SetUp(); |
| 49 translate_helper_ = new TestTranslateHelper(view_); | 49 translate_helper_ = new TestTranslateHelper(view_); |
| 50 } | 50 } |
| 51 | 51 |
| 52 virtual void TearDown() { |
| 53 delete translate_helper_; |
| 54 ChromeRenderViewTest::TearDown(); |
| 55 } |
| 56 |
| 52 bool GetPageTranslatedMessage(int* page_id, | 57 bool GetPageTranslatedMessage(int* page_id, |
| 53 std::string* original_lang, | 58 std::string* original_lang, |
| 54 std::string* target_lang, | 59 std::string* target_lang, |
| 55 TranslateErrors::Type* error) { | 60 TranslateErrors::Type* error) { |
| 56 const IPC::Message* message = render_thread_.sink(). | 61 const IPC::Message* message = render_thread_->sink(). |
| 57 GetUniqueMessageMatching(ChromeViewHostMsg_PageTranslated::ID); | 62 GetUniqueMessageMatching(ChromeViewHostMsg_PageTranslated::ID); |
| 58 if (!message) | 63 if (!message) |
| 59 return false; | 64 return false; |
| 60 Tuple4<int, std::string, std::string, TranslateErrors::Type> | 65 Tuple4<int, std::string, std::string, TranslateErrors::Type> |
| 61 translate_param; | 66 translate_param; |
| 62 ChromeViewHostMsg_PageTranslated::Read(message, &translate_param); | 67 ChromeViewHostMsg_PageTranslated::Read(message, &translate_param); |
| 63 if (page_id) | 68 if (page_id) |
| 64 *page_id = translate_param.a; | 69 *page_id = translate_param.a; |
| 65 if (original_lang) | 70 if (original_lang) |
| 66 *original_lang = translate_param.b; | 71 *original_lang = translate_param.b; |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 &received_target_lang, | 297 &received_target_lang, |
| 293 &error)); | 298 &error)); |
| 294 EXPECT_EQ(view_->GetPageId(), page_id); | 299 EXPECT_EQ(view_->GetPageId(), page_id); |
| 295 EXPECT_EQ(original_lang, received_original_lang); | 300 EXPECT_EQ(original_lang, received_original_lang); |
| 296 EXPECT_EQ(new_target_lang, received_target_lang); | 301 EXPECT_EQ(new_target_lang, received_target_lang); |
| 297 EXPECT_EQ(TranslateErrors::NONE, error); | 302 EXPECT_EQ(TranslateErrors::NONE, error); |
| 298 } | 303 } |
| 299 | 304 |
| 300 // Tests that we send the right translatable for a page and that we respect the | 305 // Tests that we send the right translatable for a page and that we respect the |
| 301 // "no translate" meta-tag. | 306 // "no translate" meta-tag. |
| 302 TEST_F(RenderViewTest, TranslatablePage) { | 307 TEST_F(ChromeRenderViewTest, TranslatablePage) { |
| 303 // Suppress the normal delay that occurs when the page is loaded before which | 308 // Suppress the normal delay that occurs when the page is loaded before which |
| 304 // the renderer sends the page contents to the browser. | 309 // the renderer sends the page contents to the browser. |
| 305 SendContentStateImmediately(); | 310 SendContentStateImmediately(); |
| 306 | 311 |
| 307 LoadHTML("<html><body>A random page with random content.</body></html>"); | 312 LoadHTML("<html><body>A random page with random content.</body></html>"); |
| 308 ProcessPendingMessages(); | 313 ProcessPendingMessages(); |
| 309 const IPC::Message* message = render_thread_.sink().GetUniqueMessageMatching( | 314 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( |
| 310 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 315 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 311 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 316 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 312 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; | 317 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; |
| 313 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 318 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 314 EXPECT_TRUE(params.b); // Translatable should be true. | 319 EXPECT_TRUE(params.b); // Translatable should be true. |
| 315 render_thread_.sink().ClearMessages(); | 320 render_thread_->sink().ClearMessages(); |
| 316 | 321 |
| 317 // Now the page specifies the META tag to prevent translation. | 322 // Now the page specifies the META tag to prevent translation. |
| 318 LoadHTML("<html><head><meta name=\"google\" value=\"notranslate\"></head>" | 323 LoadHTML("<html><head><meta name=\"google\" value=\"notranslate\"></head>" |
| 319 "<body>A random page with random content.</body></html>"); | 324 "<body>A random page with random content.</body></html>"); |
| 320 ProcessPendingMessages(); | 325 ProcessPendingMessages(); |
| 321 message = render_thread_.sink().GetUniqueMessageMatching( | 326 message = render_thread_->sink().GetUniqueMessageMatching( |
| 322 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 327 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 323 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 328 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 324 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 329 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 325 EXPECT_FALSE(params.b); // Translatable should be false. | 330 EXPECT_FALSE(params.b); // Translatable should be false. |
| 326 render_thread_.sink().ClearMessages(); | 331 render_thread_->sink().ClearMessages(); |
| 327 | 332 |
| 328 // Try the alternate version of the META tag (content instead of value). | 333 // Try the alternate version of the META tag (content instead of value). |
| 329 LoadHTML("<html><head><meta name=\"google\" content=\"notranslate\"></head>" | 334 LoadHTML("<html><head><meta name=\"google\" content=\"notranslate\"></head>" |
| 330 "<body>A random page with random content.</body></html>"); | 335 "<body>A random page with random content.</body></html>"); |
| 331 ProcessPendingMessages(); | 336 ProcessPendingMessages(); |
| 332 message = render_thread_.sink().GetUniqueMessageMatching( | 337 message = render_thread_->sink().GetUniqueMessageMatching( |
| 333 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 338 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 334 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 339 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 335 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 340 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 336 EXPECT_FALSE(params.b); // Translatable should be false. | 341 EXPECT_FALSE(params.b); // Translatable should be false. |
| 337 } | 342 } |
| 338 | 343 |
| 339 // Tests that the language meta tag takes precedence over the CLD when reporting | 344 // Tests that the language meta tag takes precedence over the CLD when reporting |
| 340 // the page's language. | 345 // the page's language. |
| 341 TEST_F(RenderViewTest, LanguageMetaTag) { | 346 TEST_F(ChromeRenderViewTest, LanguageMetaTag) { |
| 342 // Suppress the normal delay that occurs when the page is loaded before which | 347 // Suppress the normal delay that occurs when the page is loaded before which |
| 343 // the renderer sends the page contents to the browser. | 348 // the renderer sends the page contents to the browser. |
| 344 SendContentStateImmediately(); | 349 SendContentStateImmediately(); |
| 345 | 350 |
| 346 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"es\">" | 351 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"es\">" |
| 347 "</head><body>A random page with random content.</body></html>"); | 352 "</head><body>A random page with random content.</body></html>"); |
| 348 ProcessPendingMessages(); | 353 ProcessPendingMessages(); |
| 349 const IPC::Message* message = render_thread_.sink().GetUniqueMessageMatching( | 354 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( |
| 350 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 355 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 351 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 356 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 352 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; | 357 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; |
| 353 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 358 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 354 EXPECT_EQ("es", params.a); | 359 EXPECT_EQ("es", params.a); |
| 355 render_thread_.sink().ClearMessages(); | 360 render_thread_->sink().ClearMessages(); |
| 356 | 361 |
| 357 // Makes sure we support multiple languages specified. | 362 // Makes sure we support multiple languages specified. |
| 358 LoadHTML("<html><head><meta http-equiv=\"content-language\" " | 363 LoadHTML("<html><head><meta http-equiv=\"content-language\" " |
| 359 "content=\" fr , es,en \">" | 364 "content=\" fr , es,en \">" |
| 360 "</head><body>A random page with random content.</body></html>"); | 365 "</head><body>A random page with random content.</body></html>"); |
| 361 ProcessPendingMessages(); | 366 ProcessPendingMessages(); |
| 362 message = render_thread_.sink().GetUniqueMessageMatching( | 367 message = render_thread_->sink().GetUniqueMessageMatching( |
| 363 ChromeViewHostMsg_TranslateLanguageDetermined::ID); | 368 ChromeViewHostMsg_TranslateLanguageDetermined::ID); |
| 364 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); | 369 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); |
| 365 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); | 370 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, ¶ms); |
| 366 EXPECT_EQ("fr", params.a); | 371 EXPECT_EQ("fr", params.a); |
| 367 } | 372 } |
| OLD | NEW |