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 |