| 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/browser/renderer_host/test/test_render_view_host.h" | 5 #include "chrome/browser/renderer_host/test/test_render_view_host.h" |
| 6 | 6 |
| 7 #include "chrome/browser/renderer_host/mock_render_process_host.h" | 7 #include "chrome/browser/renderer_host/mock_render_process_host.h" |
| 8 #include "chrome/browser/translate/translate_infobars_delegates.h" | 8 #include "chrome/browser/translate/translate_infobars_delegates.h" |
| 9 #include "chrome/browser/translate/translate_manager.h" | 9 #include "chrome/browser/translate/translate_manager.h" |
| 10 #include "chrome/common/ipc_test_sink.h" | 10 #include "chrome/common/ipc_test_sink.h" |
| 11 #include "chrome/common/render_messages.h" | 11 #include "chrome/common/render_messages.h" |
| 12 | 12 |
| 13 class TestTranslateManager : public TranslateManager { | 13 class TestTranslateManager : public TranslateManager { |
| 14 public: | 14 public: |
| 15 TestTranslateManager() {} | 15 TestTranslateManager() {} |
| 16 | |
| 17 protected: | |
| 18 virtual bool TestEnabled() { return true; } | |
| 19 }; | 16 }; |
| 20 | 17 |
| 21 class TranslateManagerTest : public RenderViewHostTestHarness { | 18 class TranslateManagerTest : public RenderViewHostTestHarness { |
| 22 public: | 19 public: |
| 23 // Simluates navigating to a page and getting teh page contents and language | 20 // Simluates navigating to a page and getting teh page contents and language |
| 24 // for that navigation. | 21 // for that navigation. |
| 25 void SimulateNavigation(const GURL& url, int page_id, | 22 void SimulateNavigation(const GURL& url, int page_id, |
| 26 const std::wstring& contents, | 23 const std::wstring& contents, |
| 27 const std::string& lang) { | 24 const std::string& lang) { |
| 28 NavigateAndCommit(url); | 25 NavigateAndCommit(url); |
| 29 rvh()->TestOnMessageReceived(ViewHostMsg_PageContents(0, url, page_id, | 26 rvh()->TestOnMessageReceived(ViewHostMsg_PageContents(0, url, page_id, |
| 30 contents, lang)); | 27 contents, lang)); |
| 31 } | 28 } |
| 32 | 29 |
| 33 bool GetTranslateMessage(int* page_id, | 30 bool GetTranslateMessage(int* page_id, |
| 34 std::string* original_lang, | 31 std::string* original_lang, |
| 35 std::string* target_lang) { | 32 std::string* target_lang) { |
| 36 const IPC::Message* message = | 33 const IPC::Message* message = |
| 37 process()->sink().GetFirstMessageMatching(ViewMsg_TranslatePage::ID); | 34 process()->sink().GetFirstMessageMatching(ViewMsg_TranslatePage::ID); |
| 38 if (!message) | 35 if (!message) |
| 39 return false; | 36 return false; |
| 40 Tuple3<int, std::string, std::string> translate_param; | 37 Tuple3<int, std::string, std::string> translate_param; |
| 41 ViewMsg_TranslatePage::Read(message, &translate_param); | 38 ViewMsg_TranslatePage::Read(message, &translate_param); |
| 42 *page_id = translate_param.a; | 39 *page_id = translate_param.a; |
| 43 *original_lang = translate_param.b; | 40 *original_lang = translate_param.b; |
| 44 *target_lang = translate_param.c; | 41 *target_lang = translate_param.c; |
| 45 return true; | 42 return true; |
| 46 } | 43 } |
| 47 | 44 |
| 45 protected: |
| 46 virtual void SetUp() { |
| 47 RenderViewHostTestHarness::SetUp(); |
| 48 |
| 49 TranslateManager::set_test_enabled(true); |
| 50 // This must be created after set_test_enabled() has been called to register |
| 51 // notifications properly. |
| 52 translate_manager_.reset(new TestTranslateManager()); |
| 53 } |
| 54 |
| 55 virtual void TearDown() { |
| 56 RenderViewHostTestHarness::TearDown(); |
| 57 |
| 58 TranslateManager::set_test_enabled(false); |
| 59 } |
| 60 |
| 48 private: | 61 private: |
| 49 TestTranslateManager translate_manager_; | 62 scoped_ptr<TestTranslateManager> translate_manager_; |
| 50 }; | 63 }; |
| 51 | 64 |
| 52 TEST_F(TranslateManagerTest, NormalTranslate) { | 65 TEST_F(TranslateManagerTest, NormalTranslate) { |
| 53 // Simulate navigating to a page. | 66 // Simulate navigating to a page. |
| 54 SimulateNavigation(GURL("http://www.google.fr"), 0, L"Le Google", "fr"); | 67 SimulateNavigation(GURL("http://www.google.fr"), 0, L"Le Google", "fr"); |
| 55 | 68 |
| 56 // We should have an info-bar. | 69 // We should have an info-bar. |
| 57 ASSERT_EQ(1, contents()->infobar_delegate_count()); | 70 ASSERT_EQ(1, contents()->infobar_delegate_count()); |
| 58 TranslateInfoBarDelegate* infobar = | 71 TranslateInfoBarDelegate* infobar = |
| 59 contents()->GetInfoBarDelegateAt(0)->AsTranslateInfoBarDelegate(); | 72 contents()->GetInfoBarDelegateAt(0)->AsTranslateInfoBarDelegate(); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 EXPECT_EQ("fr", original_lang); | 146 EXPECT_EQ("fr", original_lang); |
| 134 EXPECT_EQ("en", target_lang); | 147 EXPECT_EQ("en", target_lang); |
| 135 | 148 |
| 136 // Now navigate to a page in a different language. | 149 // Now navigate to a page in a different language. |
| 137 process()->sink().ClearMessages(); | 150 process()->sink().ClearMessages(); |
| 138 SimulateNavigation(GURL("http://news.google.es"), 1, L"Las news", "es"); | 151 SimulateNavigation(GURL("http://news.google.es"), 1, L"Las news", "es"); |
| 139 | 152 |
| 140 // This should not have triggered a translate. | 153 // This should not have triggered a translate. |
| 141 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); | 154 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); |
| 142 } | 155 } |
| OLD | NEW |