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

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

Issue 1659393003: Revert of Switch the page-capturing machinery to use the new hooks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
27 void WaitUntilLanguageDetected() { language_detected_signal_->Wait(); } 34 void WaitUntilLanguageDetected() { language_detected_signal_->Wait(); }
28 35
29 void ResetObserver() { 36 void ResetObserver() {
30 language_detected_signal_.reset(new LangageDetectionObserver( 37 language_detected_signal_.reset(new LangageDetectionObserver(
31 chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, 38 chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED,
32 content::NotificationService::AllSources())); 39 content::NotificationService::AllSources()));
33 } 40 }
34 41
35 protected: 42 protected:
36 // InProcessBrowserTest members. 43 // InProcessBrowserTest members.
(...skipping 13 matching lines...) Expand all
50 ui_test_utils::WindowedNotificationObserverWithDetails< 57 ui_test_utils::WindowedNotificationObserverWithDetails<
51 translate::LanguageDetectionDetails>; 58 translate::LanguageDetectionDetails>;
52 59
53 scoped_ptr<LangageDetectionObserver> language_detected_signal_; 60 scoped_ptr<LangageDetectionObserver> language_detected_signal_;
54 }; 61 };
55 62
56 // Tests that the CLD (Compact Language Detection) works properly. 63 // Tests that the CLD (Compact Language Detection) works properly.
57 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, PageLanguageDetection) { 64 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, PageLanguageDetection) {
58 ASSERT_TRUE(embedded_test_server()->Start()); 65 ASSERT_TRUE(embedded_test_server()->Start());
59 66
67 // The InProcessBrowserTest opens a new tab, let's wait for that first.
68 WaitUntilLanguageDetected();
69
60 content::WebContents* current_web_contents = 70 content::WebContents* current_web_contents =
61 browser()->tab_strip_model()->GetActiveWebContents(); 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();
62 ChromeTranslateClient* chrome_translate_client = 83 ChromeTranslateClient* chrome_translate_client =
63 ChromeTranslateClient::FromWebContents(current_web_contents); 84 ChromeTranslateClient::FromWebContents(current_web_contents);
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 85
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);
80 WaitUntilLanguageDetected(); 86 WaitUntilLanguageDetected();
81 87 adopted_language = GetLanguageFor(current_web_contents);
88 EXPECT_EQ("en", adopted_language);
82 EXPECT_EQ("en", 89 EXPECT_EQ("en",
83 chrome_translate_client->GetLanguageState().original_language()); 90 chrome_translate_client->GetLanguageState().original_language());
84 91
85 ResetObserver(); 92 ResetObserver();
93
86 // Now navigate to a page in French. 94 // Now navigate to a page in French.
87 ui_test_utils::NavigateToURL( 95 ui_test_utils::NavigateToURL(
88 browser(), GURL(embedded_test_server()->GetURL("/french_page.html"))); 96 browser(), GURL(embedded_test_server()->GetURL("/french_page.html")));
97
89 WaitUntilLanguageDetected(); 98 WaitUntilLanguageDetected();
90 99 adopted_language = GetLanguageFor(current_web_contents);
100 EXPECT_EQ("fr", adopted_language);
91 EXPECT_EQ("fr", 101 EXPECT_EQ("fr",
92 chrome_translate_client->GetLanguageState().original_language()); 102 chrome_translate_client->GetLanguageState().original_language());
93 } 103 }
94 104
95 // Test is flaky on Win http://crbug.com/166334 105 // Test is flaky on Win http://crbug.com/166334
96 #if defined(OS_WIN) 106 #if defined(OS_WIN)
97 #define MAYBE_PRE_TranslateSessionRestore DISABLED_PRE_TranslateSessionRestore 107 #define MAYBE_PRE_TranslateSessionRestore DISABLED_PRE_TranslateSessionRestore
98 #else 108 #else
99 #define MAYBE_PRE_TranslateSessionRestore PRE_TranslateSessionRestore 109 #define MAYBE_PRE_TranslateSessionRestore PRE_TranslateSessionRestore
100 #endif 110 #endif
101 // Test that session restore restores the translate infobar and other translate 111 // Test that session restore restores the translate infobar and other translate
102 // settings. 112 // settings.
103 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, 113 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest,
104 MAYBE_PRE_TranslateSessionRestore) { 114 MAYBE_PRE_TranslateSessionRestore) {
105 SessionStartupPref pref(SessionStartupPref::LAST); 115 SessionStartupPref pref(SessionStartupPref::LAST);
106 SessionStartupPref::SetStartupPref(browser()->profile(), pref); 116 SessionStartupPref::SetStartupPref(browser()->profile(), pref);
107 117
118 WaitUntilLanguageDetected();
119
108 content::WebContents* current_web_contents = 120 content::WebContents* current_web_contents =
109 browser()->tab_strip_model()->GetActiveWebContents(); 121 browser()->tab_strip_model()->GetActiveWebContents();
110 ChromeTranslateClient* chrome_translate_client = 122 ChromeTranslateClient* chrome_translate_client =
111 ChromeTranslateClient::FromWebContents(current_web_contents); 123 ChromeTranslateClient::FromWebContents(current_web_contents);
112 124
113 // There is a possible race condition, when the language is not yet detected, 125 std::string adopted_language = GetLanguageFor(current_web_contents);
114 // so we check for that and wait if necessary. 126 EXPECT_EQ("und", adopted_language);
115 if (chrome_translate_client->GetLanguageState().original_language().empty())
116 WaitUntilLanguageDetected();
117
118 EXPECT_EQ("und",
119 chrome_translate_client->GetLanguageState().original_language());
120 127
121 ResetObserver(); 128 ResetObserver();
122 129
123 GURL french_url = ui_test_utils::GetTestUrl( 130 GURL french_url = ui_test_utils::GetTestUrl(
124 base::FilePath(), base::FilePath(FILE_PATH_LITERAL("french_page.html"))); 131 base::FilePath(), base::FilePath(FILE_PATH_LITERAL("french_page.html")));
125 ui_test_utils::NavigateToURL(browser(), french_url); 132 ui_test_utils::NavigateToURL(browser(), french_url);
126 133
127 WaitUntilLanguageDetected(); 134 WaitUntilLanguageDetected();
135 adopted_language = GetLanguageFor(current_web_contents);
136 EXPECT_EQ("fr", adopted_language);
128 EXPECT_EQ("fr", 137 EXPECT_EQ("fr",
129 chrome_translate_client->GetLanguageState().original_language()); 138 chrome_translate_client->GetLanguageState().original_language());
130 } 139 }
131 140
132 #if defined (OS_WIN) 141 #if defined (OS_WIN)
133 #define MAYBE_TranslateSessionRestore DISABLED_TranslateSessionRestore 142 #define MAYBE_TranslateSessionRestore DISABLED_TranslateSessionRestore
134 #else 143 #else
135 #define MAYBE_TranslateSessionRestore TranslateSessionRestore 144 #define MAYBE_TranslateSessionRestore TranslateSessionRestore
136 #endif 145 #endif
137 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest, 146 IN_PROC_BROWSER_TEST_F(TranslateManagerBrowserTest,
138 MAYBE_TranslateSessionRestore) { 147 MAYBE_TranslateSessionRestore) {
148 WaitUntilLanguageDetected();
149
139 content::WebContents* active_web_contents = 150 content::WebContents* active_web_contents =
140 browser()->tab_strip_model()->GetActiveWebContents(); 151 browser()->tab_strip_model()->GetActiveWebContents();
141 ChromeTranslateClient* active_translate_client = 152 std::string active_adopted_language = GetLanguageFor(active_web_contents);
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);
151 153
152 content::WebContents* restored_web_contents = 154 content::WebContents* restored_web_contents =
153 browser()->tab_strip_model()->GetWebContentsAt(0); 155 browser()->tab_strip_model()->GetWebContentsAt(0);
154 ChromeTranslateClient* restored_translate_client = 156 std::string restored_adopted_language = GetLanguageFor(restored_web_contents);
155 ChromeTranslateClient::FromWebContents(restored_web_contents); 157
156 if (restored_translate_client->GetLanguageState().current_language().empty()) 158 // One of the tabs could be still loading, let's check on that and wait,
159 // if necessary.
160 if (active_adopted_language.empty()) {
161 ResetObserver();
157 WaitUntilLanguageDetected(); 162 WaitUntilLanguageDetected();
158 EXPECT_EQ("fr", 163 active_adopted_language = GetLanguageFor(active_web_contents);
159 restored_translate_client->GetLanguageState().current_language()); 164 } else if (restored_adopted_language.empty()) {
165 ResetObserver();
166 WaitUntilLanguageDetected();
167 restored_adopted_language = GetLanguageFor(restored_web_contents);
168 }
169
170 EXPECT_EQ("fr", restored_adopted_language);
171 EXPECT_EQ("und", active_adopted_language);
160 } 172 }
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