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

Side by Side Diff: chrome/browser/translate/translate_manager_browsertest.cc

Issue 1398823004: Switch the page-capturing machinery to use the new hooks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixes http://crbug.com/583261. Created 4 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
« no previous file with comments | « no previous file | chrome/browser/ui/views/translate/translate_bubble_view_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "components/translate/core/browser/translate_manager.h" 5 #include "components/translate/core/browser/translate_manager.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "build/build_config.h" 8 #include "build/build_config.h"
9 #include "chrome/browser/chrome_notification_types.h" 9 #include "chrome/browser/chrome_notification_types.h"
10 #include "chrome/browser/prefs/session_startup_pref.h" 10 #include "chrome/browser/prefs/session_startup_pref.h"
11 #include "chrome/browser/translate/chrome_translate_client.h" 11 #include "chrome/browser/translate/chrome_translate_client.h"
12 #include "chrome/browser/translate/cld_data_harness.h" 12 #include "chrome/browser/translate/cld_data_harness.h"
13 #include "chrome/browser/translate/cld_data_harness_factory.h" 13 #include "chrome/browser/translate/cld_data_harness_factory.h"
14 #include "chrome/browser/ui/browser.h" 14 #include "chrome/browser/ui/browser.h"
15 #include "chrome/browser/ui/tabs/tab_strip_model.h" 15 #include "chrome/browser/ui/tabs/tab_strip_model.h"
16 #include "chrome/test/base/in_process_browser_test.h" 16 #include "chrome/test/base/in_process_browser_test.h"
17 #include "chrome/test/base/ui_test_utils.h" 17 #include "chrome/test/base/ui_test_utils.h"
18 #include "components/translate/core/common/language_detection_details.h" 18 #include "components/translate/core/common/language_detection_details.h"
19 #include "content/public/browser/notification_service.h" 19 #include "content/public/browser/notification_service.h"
20 #include "url/gurl.h" 20 #include "url/gurl.h"
21 21
22 class TranslateManagerBrowserTest : public InProcessBrowserTest { 22 class TranslateManagerBrowserTest : public InProcessBrowserTest {
23 public: 23 public:
24 TranslateManagerBrowserTest() {} 24 TranslateManagerBrowserTest() {}
25 ~TranslateManagerBrowserTest() override {} 25 ~TranslateManagerBrowserTest() override {}
26 26
27 std::string GetLanguageFor(content::WebContents* web_contents) {
28 translate::LanguageDetectionDetails details;
29 content::Source<content::WebContents> source(web_contents);
30 language_detected_signal_->GetDetailsFor(source.map_key(), &details);
31 return details.adopted_language;
32 }
33
34 void WaitUntilLanguageDetected() { language_detected_signal_->Wait(); } 27 void WaitUntilLanguageDetected() { language_detected_signal_->Wait(); }
35 28
36 void ResetObserver() { 29 void ResetObserver() {
37 language_detected_signal_.reset(new LangageDetectionObserver( 30 language_detected_signal_.reset(new LangageDetectionObserver(
38 chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, 31 chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED,
39 content::NotificationService::AllSources())); 32 content::NotificationService::AllSources()));
40 } 33 }
41 34
42 protected: 35 protected:
43 // InProcessBrowserTest members. 36 // InProcessBrowserTest members.
(...skipping 13 matching lines...) Expand all
57 ui_test_utils::WindowedNotificationObserverWithDetails< 50 ui_test_utils::WindowedNotificationObserverWithDetails<
58 translate::LanguageDetectionDetails>; 51 translate::LanguageDetectionDetails>;
59 52
60 scoped_ptr<LangageDetectionObserver> language_detected_signal_; 53 scoped_ptr<LangageDetectionObserver> language_detected_signal_;
61 }; 54 };
62 55
63 // Tests that the CLD (Compact Language Detection) works properly. 56 // Tests that the CLD (Compact Language Detection) works properly.
64 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, PageLanguageDetection) { 57 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, PageLanguageDetection) {
65 ASSERT_TRUE(embedded_test_server()->Start()); 58 ASSERT_TRUE(embedded_test_server()->Start());
66 59
60 content::WebContents* current_web_contents =
61 browser()->tab_strip_model()->GetActiveWebContents();
62 ChromeTranslateClient* chrome_translate_client =
63 ChromeTranslateClient::FromWebContents(current_web_contents);
67 // The InProcessBrowserTest opens a new tab, let's wait for that first. 64 // The InProcessBrowserTest opens a new tab, let's wait for that first.
65 // There is a possible race condition, when the language is not yet detected,
66 // so we check for that and wait if necessary.
67 if (chrome_translate_client->GetLanguageState().original_language().empty())
68 WaitUntilLanguageDetected();
69
70 EXPECT_EQ("und",
71 chrome_translate_client->GetLanguageState().original_language());
72
73 // Open a new tab with a page in English.
74 ResetObserver();
75 AddTabAtIndex(0, GURL(embedded_test_server()->GetURL("/english_page.html")),
76 ui::PAGE_TRANSITION_TYPED);
77 current_web_contents = browser()->tab_strip_model()->GetActiveWebContents();
78 chrome_translate_client =
79 ChromeTranslateClient::FromWebContents(current_web_contents);
68 WaitUntilLanguageDetected(); 80 WaitUntilLanguageDetected();
69 81
70 content::WebContents* current_web_contents =
71 browser()->tab_strip_model()->GetActiveWebContents();
72
73 std::string adopted_language = GetLanguageFor(current_web_contents);
74 EXPECT_EQ("und", adopted_language);
75
76 // Open a new tab with a page in English.
77 AddTabAtIndex(0, GURL(embedded_test_server()->GetURL("/english_page.html")),
78 ui::PAGE_TRANSITION_TYPED);
79
80 ResetObserver();
81
82 current_web_contents = browser()->tab_strip_model()->GetActiveWebContents();
83 ChromeTranslateClient* chrome_translate_client =
84 ChromeTranslateClient::FromWebContents(current_web_contents);
85
86 WaitUntilLanguageDetected();
87 adopted_language = GetLanguageFor(current_web_contents);
88 EXPECT_EQ("en", adopted_language);
89 EXPECT_EQ("en", 82 EXPECT_EQ("en",
90 chrome_translate_client->GetLanguageState().original_language()); 83 chrome_translate_client->GetLanguageState().original_language());
91 84
92 ResetObserver(); 85 ResetObserver();
93
94 // Now navigate to a page in French. 86 // Now navigate to a page in French.
95 ui_test_utils::NavigateToURL( 87 ui_test_utils::NavigateToURL(
96 browser(), GURL(embedded_test_server()->GetURL("/french_page.html"))); 88 browser(), GURL(embedded_test_server()->GetURL("/french_page.html")));
89 WaitUntilLanguageDetected();
97 90
98 WaitUntilLanguageDetected();
99 adopted_language = GetLanguageFor(current_web_contents);
100 EXPECT_EQ("fr", adopted_language);
101 EXPECT_EQ("fr", 91 EXPECT_EQ("fr",
102 chrome_translate_client->GetLanguageState().original_language()); 92 chrome_translate_client->GetLanguageState().original_language());
103 } 93 }
104 94
105 // Test is flaky on Win http://crbug.com/166334 95 // Test is flaky on Win http://crbug.com/166334
106 #if defined(OS_WIN) 96 #if defined(OS_WIN)
107 #define MAYBE_PRE_TranslateSessionRestore DISABLED_PRE_TranslateSessionRestore 97 #define MAYBE_PRE_TranslateSessionRestore DISABLED_PRE_TranslateSessionRestore
108 #else 98 #else
109 #define MAYBE_PRE_TranslateSessionRestore PRE_TranslateSessionRestore 99 #define MAYBE_PRE_TranslateSessionRestore PRE_TranslateSessionRestore
110 #endif 100 #endif
111 // Test that session restore restores the translate infobar and other translate 101 // Test that session restore restores the translate infobar and other translate
112 // settings. 102 // settings.
113 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, 103 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest,
114 MAYBE_PRE_TranslateSessionRestore) { 104 MAYBE_PRE_TranslateSessionRestore) {
115 SessionStartupPref pref(SessionStartupPref::LAST); 105 SessionStartupPref pref(SessionStartupPref::LAST);
116 SessionStartupPref::SetStartupPref(browser()->profile(), pref); 106 SessionStartupPref::SetStartupPref(browser()->profile(), pref);
117 107
118 WaitUntilLanguageDetected();
119
120 content::WebContents* current_web_contents = 108 content::WebContents* current_web_contents =
121 browser()->tab_strip_model()->GetActiveWebContents(); 109 browser()->tab_strip_model()->GetActiveWebContents();
122 ChromeTranslateClient* chrome_translate_client = 110 ChromeTranslateClient* chrome_translate_client =
123 ChromeTranslateClient::FromWebContents(current_web_contents); 111 ChromeTranslateClient::FromWebContents(current_web_contents);
124 112
125 std::string adopted_language = GetLanguageFor(current_web_contents); 113 // There is a possible race condition, when the language is not yet detected,
126 EXPECT_EQ("und", adopted_language); 114 // so we check for that and wait if necessary.
115 if (chrome_translate_client->GetLanguageState().original_language().empty())
116 WaitUntilLanguageDetected();
117
118 EXPECT_EQ("und",
119 chrome_translate_client->GetLanguageState().original_language());
127 120
128 ResetObserver(); 121 ResetObserver();
129 122
130 GURL french_url = ui_test_utils::GetTestUrl( 123 GURL french_url = ui_test_utils::GetTestUrl(
131 base::FilePath(), base::FilePath(FILE_PATH_LITERAL("french_page.html"))); 124 base::FilePath(), base::FilePath(FILE_PATH_LITERAL("french_page.html")));
132 ui_test_utils::NavigateToURL(browser(), french_url); 125 ui_test_utils::NavigateToURL(browser(), french_url);
133 126
134 WaitUntilLanguageDetected(); 127 WaitUntilLanguageDetected();
135 adopted_language = GetLanguageFor(current_web_contents);
136 EXPECT_EQ("fr", adopted_language);
137 EXPECT_EQ("fr", 128 EXPECT_EQ("fr",
138 chrome_translate_client->GetLanguageState().original_language()); 129 chrome_translate_client->GetLanguageState().original_language());
139 } 130 }
140 131
141 #if defined (OS_WIN) 132 #if defined (OS_WIN)
142 #define MAYBE_TranslateSessionRestore DISABLED_TranslateSessionRestore 133 #define MAYBE_TranslateSessionRestore DISABLED_TranslateSessionRestore
143 #else 134 #else
144 #define MAYBE_TranslateSessionRestore TranslateSessionRestore 135 #define MAYBE_TranslateSessionRestore TranslateSessionRestore
145 #endif 136 #endif
146 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, 137 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest,
147 MAYBE_TranslateSessionRestore) { 138 MAYBE_TranslateSessionRestore) {
148 WaitUntilLanguageDetected();
149
150 content::WebContents* active_web_contents = 139 content::WebContents* active_web_contents =
151 browser()->tab_strip_model()->GetActiveWebContents(); 140 browser()->tab_strip_model()->GetActiveWebContents();
152 std::string active_adopted_language = GetLanguageFor(active_web_contents); 141 ChromeTranslateClient* active_translate_client =
142 ChromeTranslateClient::FromWebContents(active_web_contents);
143 if (active_translate_client->GetLanguageState().current_language().empty())
144 WaitUntilLanguageDetected();
145 EXPECT_EQ("und",
146 active_translate_client->GetLanguageState().current_language());
147
148 // Make restored tab active to (on some platforms) initiate language
149 // detection.
150 browser()->tab_strip_model()->ActivateTabAt(0, true);
153 151
154 content::WebContents* restored_web_contents = 152 content::WebContents* restored_web_contents =
155 browser()->tab_strip_model()->GetWebContentsAt(0); 153 browser()->tab_strip_model()->GetWebContentsAt(0);
156 std::string restored_adopted_language = GetLanguageFor(restored_web_contents); 154 ChromeTranslateClient* restored_translate_client =
157 155 ChromeTranslateClient::FromWebContents(restored_web_contents);
158 // One of the tabs could be still loading, let's check on that and wait, 156 if (restored_translate_client->GetLanguageState()
159 // if necessary. 157 .current_language()
160 if (active_adopted_language.empty()) { 158 .empty()) {
161 ResetObserver(); 159 ResetObserver();
162 WaitUntilLanguageDetected(); 160 WaitUntilLanguageDetected();
163 active_adopted_language = GetLanguageFor(active_web_contents);
164 } else if (restored_adopted_language.empty()) {
165 ResetObserver();
166 WaitUntilLanguageDetected();
167 restored_adopted_language = GetLanguageFor(restored_web_contents);
168 } 161 }
169 162 EXPECT_EQ("fr",
170 EXPECT_EQ("fr", restored_adopted_language); 163 restored_translate_client->GetLanguageState().current_language());
171 EXPECT_EQ("und", active_adopted_language);
172 } 164 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/views/translate/translate_bubble_view_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698