OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <algorithm> | 5 #include <algorithm> |
6 #include <set> | 6 #include <set> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 bool page_translatable) { | 97 bool page_translatable) { |
98 if (rvh()->GetMainFrame()->GetLastCommittedURL() == url) | 98 if (rvh()->GetMainFrame()->GetLastCommittedURL() == url) |
99 Reload(); | 99 Reload(); |
100 else | 100 else |
101 NavigateAndCommit(url); | 101 NavigateAndCommit(url); |
102 SimulateOnTranslateLanguageDetermined(lang, page_translatable); | 102 SimulateOnTranslateLanguageDetermined(lang, page_translatable); |
103 } | 103 } |
104 | 104 |
105 void SimulateOnTranslateLanguageDetermined(const std::string& lang, | 105 void SimulateOnTranslateLanguageDetermined(const std::string& lang, |
106 bool page_translatable) { | 106 bool page_translatable) { |
107 LanguageDetectionDetails details; | 107 translate::LanguageDetectionDetails details; |
108 details.adopted_language = lang; | 108 details.adopted_language = lang; |
109 content::RenderViewHostTester::TestOnMessageReceived( | 109 content::RenderViewHostTester::TestOnMessageReceived( |
110 rvh(), | 110 rvh(), |
111 ChromeViewHostMsg_TranslateLanguageDetermined( | 111 ChromeViewHostMsg_TranslateLanguageDetermined( |
112 0, details, page_translatable)); | 112 0, details, page_translatable)); |
113 } | 113 } |
114 | 114 |
115 void SimulateOnPageTranslated(int routing_id, | 115 void SimulateOnPageTranslated(int routing_id, |
116 const std::string& source_lang, | 116 const std::string& source_lang, |
117 const std::string& target_lang, | 117 const std::string& target_lang, |
118 TranslateErrors::Type error) { | 118 translate::TranslateErrors::Type error) { |
119 content::RenderViewHostTester::TestOnMessageReceived( | 119 content::RenderViewHostTester::TestOnMessageReceived( |
120 rvh(), | 120 rvh(), |
121 ChromeViewHostMsg_PageTranslated( | 121 ChromeViewHostMsg_PageTranslated( |
122 routing_id, source_lang, target_lang, error)); | 122 routing_id, source_lang, target_lang, error)); |
123 } | 123 } |
124 | 124 |
125 void SimulateOnPageTranslated(const std::string& source_lang, | 125 void SimulateOnPageTranslated(const std::string& source_lang, |
126 const std::string& target_lang) { | 126 const std::string& target_lang) { |
127 SimulateOnPageTranslated( | 127 SimulateOnPageTranslated( |
128 0, source_lang, target_lang, TranslateErrors::NONE); | 128 0, source_lang, target_lang, translate::TranslateErrors::NONE); |
129 } | 129 } |
130 | 130 |
131 bool GetTranslateMessage(std::string* original_lang, | 131 bool GetTranslateMessage(std::string* original_lang, |
132 std::string* target_lang) { | 132 std::string* target_lang) { |
133 const IPC::Message* message = process()->sink().GetFirstMessageMatching( | 133 const IPC::Message* message = process()->sink().GetFirstMessageMatching( |
134 ChromeViewMsg_TranslatePage::ID); | 134 ChromeViewMsg_TranslatePage::ID); |
135 if (!message) | 135 if (!message) |
136 return false; | 136 return false; |
137 Tuple4<int, std::string, std::string, std::string> translate_param; | 137 Tuple4<int, std::string, std::string, std::string> translate_param; |
138 ChromeViewMsg_TranslatePage::Read(message, &translate_param); | 138 ChromeViewMsg_TranslatePage::Read(message, &translate_param); |
139 // Ignore translate_param.a which is the page seq no. | 139 // Ignore translate_param.a which is the page seq no. |
140 // Ignore translate_param.b which is the script injected in the page. | 140 // Ignore translate_param.b which is the script injected in the page. |
141 if (original_lang) | 141 if (original_lang) |
142 *original_lang = translate_param.c; | 142 *original_lang = translate_param.c; |
143 if (target_lang) | 143 if (target_lang) |
144 *target_lang = translate_param.d; | 144 *target_lang = translate_param.d; |
145 return true; | 145 return true; |
146 } | 146 } |
147 | 147 |
148 InfoBarService* infobar_service() { | 148 InfoBarService* infobar_service() { |
149 return InfoBarService::FromWebContents(web_contents()); | 149 return InfoBarService::FromWebContents(web_contents()); |
150 } | 150 } |
151 | 151 |
152 // Returns the translate infobar if there is 1 infobar and it is a translate | 152 // Returns the translate infobar if there is 1 infobar and it is a translate |
153 // infobar. | 153 // infobar. |
154 TranslateInfoBarDelegate* GetTranslateInfoBar() { | 154 translate::TranslateInfoBarDelegate* GetTranslateInfoBar() { |
155 return (infobar_service()->infobar_count() == 1) ? | 155 return (infobar_service()->infobar_count() == 1) ? |
156 infobar_service()->infobar_at(0)->delegate()-> | 156 infobar_service()->infobar_at(0)->delegate()-> |
157 AsTranslateInfoBarDelegate() : | 157 AsTranslateInfoBarDelegate() : |
158 NULL; | 158 NULL; |
159 } | 159 } |
160 | 160 |
161 // If there is 1 infobar and it is a translate infobar, closes it and returns | 161 // If there is 1 infobar and it is a translate infobar, closes it and returns |
162 // true. Returns false otherwise. | 162 // true. Returns false otherwise. |
163 bool CloseTranslateInfoBar() { | 163 bool CloseTranslateInfoBar() { |
164 infobars::InfoBarDelegate* infobar = GetTranslateInfoBar(); | 164 infobars::InfoBarDelegate* infobar = GetTranslateInfoBar(); |
165 if (!infobar) | 165 if (!infobar) |
166 return false; | 166 return false; |
167 infobar->InfoBarDismissed(); // Simulates closing the infobar. | 167 infobar->InfoBarDismissed(); // Simulates closing the infobar. |
168 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); | 168 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); |
169 return true; | 169 return true; |
170 } | 170 } |
171 | 171 |
172 // Checks whether |infobar| has been removed and clears the removed infobar | 172 // Checks whether |infobar| has been removed and clears the removed infobar |
173 // list. | 173 // list. |
174 bool CheckInfoBarRemovedAndReset(infobars::InfoBarDelegate* delegate) { | 174 bool CheckInfoBarRemovedAndReset(infobars::InfoBarDelegate* delegate) { |
175 bool found = removed_infobars_.count(delegate) != 0; | 175 bool found = removed_infobars_.count(delegate) != 0; |
176 removed_infobars_.clear(); | 176 removed_infobars_.clear(); |
177 return found; | 177 return found; |
178 } | 178 } |
179 | 179 |
180 void ExpireTranslateScriptImmediately() { | 180 void ExpireTranslateScriptImmediately() { |
181 TranslateDownloadManager::GetInstance()->SetTranslateScriptExpirationDelay( | 181 translate::TranslateDownloadManager::GetInstance() |
182 0); | 182 ->SetTranslateScriptExpirationDelay(0); |
183 } | 183 } |
184 | 184 |
185 // If there is 1 infobar and it is a translate infobar, deny translation and | 185 // If there is 1 infobar and it is a translate infobar, deny translation and |
186 // returns true. Returns false otherwise. | 186 // returns true. Returns false otherwise. |
187 bool DenyTranslation() { | 187 bool DenyTranslation() { |
188 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 188 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
189 if (!infobar) | 189 if (!infobar) |
190 return false; | 190 return false; |
191 infobar->TranslationDeclined(); | 191 infobar->TranslationDeclined(); |
192 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); | 192 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); |
193 return true; | 193 return true; |
194 } | 194 } |
195 | 195 |
196 void ReloadAndWait(bool successful_reload) { | 196 void ReloadAndWait(bool successful_reload) { |
197 NavEntryCommittedObserver nav_observer(web_contents()); | 197 NavEntryCommittedObserver nav_observer(web_contents()); |
198 if (successful_reload) | 198 if (successful_reload) |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 | 243 |
244 MOCK_METHOD1(OnPreferenceChanged, void(const std::string&)); | 244 MOCK_METHOD1(OnPreferenceChanged, void(const std::string&)); |
245 | 245 |
246 protected: | 246 protected: |
247 virtual void SetUp() { | 247 virtual void SetUp() { |
248 TranslateService::InitializeForTesting(); | 248 TranslateService::InitializeForTesting(); |
249 | 249 |
250 // Clears the translate script so it is fetched everytime and sets the | 250 // Clears the translate script so it is fetched everytime and sets the |
251 // expiration delay to a large value by default (in case it was zeroed in a | 251 // expiration delay to a large value by default (in case it was zeroed in a |
252 // previous test). | 252 // previous test). |
253 TranslateDownloadManager* download_manager = | 253 translate::TranslateDownloadManager* download_manager = |
254 TranslateDownloadManager::GetInstance(); | 254 translate::TranslateDownloadManager::GetInstance(); |
255 download_manager->ClearTranslateScriptForTesting(); | 255 download_manager->ClearTranslateScriptForTesting(); |
256 download_manager->SetTranslateScriptExpirationDelay(60 * 60 * 1000); | 256 download_manager->SetTranslateScriptExpirationDelay(60 * 60 * 1000); |
257 | 257 |
258 ChromeRenderViewHostTestHarness::SetUp(); | 258 ChromeRenderViewHostTestHarness::SetUp(); |
259 InfoBarService::CreateForWebContents(web_contents()); | 259 InfoBarService::CreateForWebContents(web_contents()); |
260 ChromeTranslateClient::CreateForWebContents(web_contents()); | 260 ChromeTranslateClient::CreateForWebContents(web_contents()); |
261 ChromeTranslateClient::FromWebContents(web_contents()) | 261 ChromeTranslateClient::FromWebContents(web_contents()) |
262 ->set_translate_max_reload_attempts(0); | 262 ->set_translate_max_reload_attempts(0); |
263 | 263 |
264 notification_registrar_.Add( | 264 notification_registrar_.Add( |
265 this, | 265 this, |
266 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, | 266 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, |
267 content::Source<InfoBarService>(infobar_service())); | 267 content::Source<InfoBarService>(infobar_service())); |
268 } | 268 } |
269 | 269 |
270 virtual void TearDown() { | 270 virtual void TearDown() { |
271 process()->sink().ClearMessages(); | 271 process()->sink().ClearMessages(); |
272 | 272 |
273 notification_registrar_.Remove( | 273 notification_registrar_.Remove( |
274 this, | 274 this, |
275 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, | 275 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, |
276 content::Source<InfoBarService>(infobar_service())); | 276 content::Source<InfoBarService>(infobar_service())); |
277 | 277 |
278 ChromeRenderViewHostTestHarness::TearDown(); | 278 ChromeRenderViewHostTestHarness::TearDown(); |
279 TranslateService::ShutdownForTesting(); | 279 TranslateService::ShutdownForTesting(); |
280 } | 280 } |
281 | 281 |
282 void SetApplicationLocale(const std::string& locale) { | 282 void SetApplicationLocale(const std::string& locale) { |
283 g_browser_process->SetApplicationLocale(locale); | 283 g_browser_process->SetApplicationLocale(locale); |
284 TranslateDownloadManager::GetInstance()->set_application_locale( | 284 translate::TranslateDownloadManager::GetInstance()->set_application_locale( |
285 g_browser_process->GetApplicationLocale()); | 285 g_browser_process->GetApplicationLocale()); |
286 } | 286 } |
287 | 287 |
288 void SimulateTranslateScriptURLFetch(bool success) { | 288 void SimulateTranslateScriptURLFetch(bool success) { |
289 net::TestURLFetcher* fetcher = | 289 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID( |
290 url_fetcher_factory_.GetFetcherByID(TranslateScript::kFetcherId); | 290 translate::TranslateScript::kFetcherId); |
291 ASSERT_TRUE(fetcher); | 291 ASSERT_TRUE(fetcher); |
292 net::URLRequestStatus status; | 292 net::URLRequestStatus status; |
293 status.set_status(success ? net::URLRequestStatus::SUCCESS | 293 status.set_status(success ? net::URLRequestStatus::SUCCESS |
294 : net::URLRequestStatus::FAILED); | 294 : net::URLRequestStatus::FAILED); |
295 fetcher->set_url(fetcher->GetOriginalURL()); | 295 fetcher->set_url(fetcher->GetOriginalURL()); |
296 fetcher->set_status(status); | 296 fetcher->set_status(status); |
297 fetcher->set_response_code(success ? 200 : 500); | 297 fetcher->set_response_code(success ? 200 : 500); |
298 fetcher->delegate()->OnURLFetchComplete(fetcher); | 298 fetcher->delegate()->OnURLFetchComplete(fetcher); |
299 } | 299 } |
300 | 300 |
301 void SimulateSupportedLanguagesURLFetch( | 301 void SimulateSupportedLanguagesURLFetch( |
302 bool success, | 302 bool success, |
303 const std::vector<std::string>& languages, | 303 const std::vector<std::string>& languages, |
304 bool use_alpha_languages, | 304 bool use_alpha_languages, |
305 const std::vector<std::string>& alpha_languages) { | 305 const std::vector<std::string>& alpha_languages) { |
306 net::URLRequestStatus status; | 306 net::URLRequestStatus status; |
307 status.set_status(success ? net::URLRequestStatus::SUCCESS | 307 status.set_status(success ? net::URLRequestStatus::SUCCESS |
308 : net::URLRequestStatus::FAILED); | 308 : net::URLRequestStatus::FAILED); |
309 | 309 |
310 std::string data; | 310 std::string data; |
311 if (success) { | 311 if (success) { |
312 data = | 312 data = base::StringPrintf( |
313 base::StringPrintf("%s{\"sl\": {\"bla\": \"bla\"}, \"%s\": {", | 313 "%s{\"sl\": {\"bla\": \"bla\"}, \"%s\": {", |
314 TranslateLanguageList::kLanguageListCallbackName, | 314 translate::TranslateLanguageList::kLanguageListCallbackName, |
315 TranslateLanguageList::kTargetLanguagesKey); | 315 translate::TranslateLanguageList::kTargetLanguagesKey); |
316 const char* comma = ""; | 316 const char* comma = ""; |
317 for (size_t i = 0; i < languages.size(); ++i) { | 317 for (size_t i = 0; i < languages.size(); ++i) { |
318 data += base::StringPrintf( | 318 data += base::StringPrintf( |
319 "%s\"%s\": \"UnusedFullName\"", comma, languages[i].c_str()); | 319 "%s\"%s\": \"UnusedFullName\"", comma, languages[i].c_str()); |
320 if (i == 0) | 320 if (i == 0) |
321 comma = ","; | 321 comma = ","; |
322 } | 322 } |
323 | 323 |
324 if (use_alpha_languages) { | 324 if (use_alpha_languages) { |
325 data += base::StringPrintf("},\"%s\": {", | 325 data += base::StringPrintf( |
326 TranslateLanguageList::kAlphaLanguagesKey); | 326 "},\"%s\": {", |
| 327 translate::TranslateLanguageList::kAlphaLanguagesKey); |
327 comma = ""; | 328 comma = ""; |
328 for (size_t i = 0; i < alpha_languages.size(); ++i) { | 329 for (size_t i = 0; i < alpha_languages.size(); ++i) { |
329 data += base::StringPrintf( | 330 data += base::StringPrintf( |
330 "%s\"%s\": 1", comma, alpha_languages[i].c_str()); | 331 "%s\"%s\": 1", comma, alpha_languages[i].c_str()); |
331 if (i == 0) | 332 if (i == 0) |
332 comma = ","; | 333 comma = ","; |
333 } | 334 } |
334 } | 335 } |
335 | 336 |
336 data += "}})"; | 337 data += "}})"; |
337 } | 338 } |
338 net::TestURLFetcher* fetcher = | 339 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID( |
339 url_fetcher_factory_.GetFetcherByID(TranslateLanguageList::kFetcherId); | 340 translate::TranslateLanguageList::kFetcherId); |
340 ASSERT_TRUE(fetcher != NULL); | 341 ASSERT_TRUE(fetcher != NULL); |
341 fetcher->set_url(fetcher->GetOriginalURL()); | 342 fetcher->set_url(fetcher->GetOriginalURL()); |
342 fetcher->set_status(status); | 343 fetcher->set_status(status); |
343 fetcher->set_response_code(success ? 200 : 500); | 344 fetcher->set_response_code(success ? 200 : 500); |
344 fetcher->SetResponseString(data); | 345 fetcher->SetResponseString(data); |
345 fetcher->delegate()->OnURLFetchComplete(fetcher); | 346 fetcher->delegate()->OnURLFetchComplete(fetcher); |
346 } | 347 } |
347 | 348 |
348 void SetPrefObserverExpectation(const char* path) { | 349 void SetPrefObserverExpectation(const char* path) { |
349 EXPECT_CALL(*this, OnPreferenceChanged(std::string(path))); | 350 EXPECT_CALL(*this, OnPreferenceChanged(std::string(path))); |
350 } | 351 } |
351 | 352 |
352 PrefChangeRegistrar::NamedChangeCallback pref_callback_; | 353 PrefChangeRegistrar::NamedChangeCallback pref_callback_; |
353 | 354 |
354 private: | 355 private: |
355 content::NotificationRegistrar notification_registrar_; | 356 content::NotificationRegistrar notification_registrar_; |
356 net::TestURLFetcherFactory url_fetcher_factory_; | 357 net::TestURLFetcherFactory url_fetcher_factory_; |
357 | 358 |
358 // The infobars that have been removed. | 359 // The infobars that have been removed. |
359 // WARNING: the pointers point to deleted objects, use only for comparison. | 360 // WARNING: the pointers point to deleted objects, use only for comparison. |
360 std::set<infobars::InfoBarDelegate*> removed_infobars_; | 361 std::set<infobars::InfoBarDelegate*> removed_infobars_; |
361 | 362 |
362 DISALLOW_COPY_AND_ASSIGN(TranslateManagerRenderViewHostTest); | 363 DISALLOW_COPY_AND_ASSIGN(TranslateManagerRenderViewHostTest); |
363 }; | 364 }; |
364 | 365 |
365 class MockTranslateBubbleFactory : public TranslateBubbleFactory { | 366 class MockTranslateBubbleFactory : public TranslateBubbleFactory { |
366 public: | 367 public: |
367 MockTranslateBubbleFactory() {} | 368 MockTranslateBubbleFactory() {} |
368 | 369 |
369 virtual void ShowImplementation(BrowserWindow* window, | 370 virtual void ShowImplementation( |
370 content::WebContents* web_contents, | 371 BrowserWindow* window, |
371 translate::TranslateStep step, | 372 content::WebContents* web_contents, |
372 TranslateErrors::Type error_type) OVERRIDE { | 373 translate::TranslateStep step, |
| 374 translate::TranslateErrors::Type error_type) OVERRIDE { |
373 if (model_) { | 375 if (model_) { |
374 model_->SetViewState( | 376 model_->SetViewState( |
375 TranslateBubbleModelImpl::TranslateStepToViewState(step)); | 377 TranslateBubbleModelImpl::TranslateStepToViewState(step)); |
376 return; | 378 return; |
377 } | 379 } |
378 | 380 |
379 ChromeTranslateClient* chrome_translate_client = | 381 ChromeTranslateClient* chrome_translate_client = |
380 ChromeTranslateClient::FromWebContents(web_contents); | 382 ChromeTranslateClient::FromWebContents(web_contents); |
381 std::string source_language = | 383 std::string source_language = |
382 chrome_translate_client->GetLanguageState().original_language(); | 384 chrome_translate_client->GetLanguageState().original_language(); |
383 std::string target_language = TranslateDownloadManager::GetLanguageCode( | 385 std::string target_language = |
384 g_browser_process->GetApplicationLocale()); | 386 translate::TranslateDownloadManager::GetLanguageCode( |
| 387 g_browser_process->GetApplicationLocale()); |
385 | 388 |
386 scoped_ptr<TranslateUIDelegate> ui_delegate(new TranslateUIDelegate( | 389 scoped_ptr<translate::TranslateUIDelegate> ui_delegate( |
387 chrome_translate_client->GetTranslateManager()->GetWeakPtr(), | 390 new translate::TranslateUIDelegate( |
388 source_language, | 391 chrome_translate_client->GetTranslateManager()->GetWeakPtr(), |
389 target_language)); | 392 source_language, |
| 393 target_language)); |
390 model_.reset(new TranslateBubbleModelImpl(step, ui_delegate.Pass())); | 394 model_.reset(new TranslateBubbleModelImpl(step, ui_delegate.Pass())); |
391 } | 395 } |
392 | 396 |
393 TranslateBubbleModel* model() { return model_.get(); } | 397 TranslateBubbleModel* model() { return model_.get(); } |
394 | 398 |
395 private: | 399 private: |
396 scoped_ptr<TranslateBubbleModel> model_; | 400 scoped_ptr<TranslateBubbleModel> model_; |
397 | 401 |
398 DISALLOW_COPY_AND_ASSIGN(MockTranslateBubbleFactory); | 402 DISALLOW_COPY_AND_ASSIGN(MockTranslateBubbleFactory); |
399 }; | 403 }; |
400 | 404 |
401 | 405 |
402 TEST_F(TranslateManagerRenderViewHostTest, NormalTranslate) { | 406 TEST_F(TranslateManagerRenderViewHostTest, NormalTranslate) { |
403 // See BubbleNormalTranslate for corresponding bubble UX testing. | 407 // See BubbleNormalTranslate for corresponding bubble UX testing. |
404 if (TranslateService::IsTranslateBubbleEnabled()) | 408 if (TranslateService::IsTranslateBubbleEnabled()) |
405 return; | 409 return; |
406 | 410 |
407 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 411 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
408 | 412 |
409 // We should have an infobar. | 413 // We should have an infobar. |
410 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 414 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
411 ASSERT_TRUE(infobar != NULL); | 415 ASSERT_TRUE(infobar != NULL); |
412 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, | 416 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, |
413 infobar->translate_step()); | 417 infobar->translate_step()); |
414 | 418 |
415 // Simulate clicking translate. | 419 // Simulate clicking translate. |
416 process()->sink().ClearMessages(); | 420 process()->sink().ClearMessages(); |
417 infobar->Translate(); | 421 infobar->Translate(); |
418 | 422 |
419 // The "Translating..." infobar should be showing. | 423 // The "Translating..." infobar should be showing. |
420 infobar = GetTranslateInfoBar(); | 424 infobar = GetTranslateInfoBar(); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
483 } | 487 } |
484 | 488 |
485 TEST_F(TranslateManagerRenderViewHostTest, TranslateScriptNotAvailable) { | 489 TEST_F(TranslateManagerRenderViewHostTest, TranslateScriptNotAvailable) { |
486 // See BubbleTranslateScriptNotAvailable for corresponding bubble UX testing. | 490 // See BubbleTranslateScriptNotAvailable for corresponding bubble UX testing. |
487 if (TranslateService::IsTranslateBubbleEnabled()) | 491 if (TranslateService::IsTranslateBubbleEnabled()) |
488 return; | 492 return; |
489 | 493 |
490 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 494 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
491 | 495 |
492 // We should have an infobar. | 496 // We should have an infobar. |
493 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 497 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
494 ASSERT_TRUE(infobar != NULL); | 498 ASSERT_TRUE(infobar != NULL); |
495 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, | 499 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, |
496 infobar->translate_step()); | 500 infobar->translate_step()); |
497 | 501 |
498 // Simulate clicking translate. | 502 // Simulate clicking translate. |
499 process()->sink().ClearMessages(); | 503 process()->sink().ClearMessages(); |
500 infobar->Translate(); | 504 infobar->Translate(); |
501 SimulateTranslateScriptURLFetch(false); | 505 SimulateTranslateScriptURLFetch(false); |
502 | 506 |
503 // We should not have sent any message to translate to the renderer. | 507 // We should not have sent any message to translate to the renderer. |
(...skipping 21 matching lines...) Expand all Loading... |
525 ASSERT_TRUE(GetTranslateInfoBar() == NULL); | 529 ASSERT_TRUE(GetTranslateInfoBar() == NULL); |
526 | 530 |
527 // Translate the page anyway throught the context menu. | 531 // Translate the page anyway throught the context menu. |
528 scoped_ptr<TestRenderViewContextMenu> menu(CreateContextMenu()); | 532 scoped_ptr<TestRenderViewContextMenu> menu(CreateContextMenu()); |
529 menu->Init(); | 533 menu->Init(); |
530 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); | 534 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); |
531 | 535 |
532 // To test that bug #49018 if fixed, make sure we deal correctly with errors. | 536 // To test that bug #49018 if fixed, make sure we deal correctly with errors. |
533 // Simulate a failure to fetch the translate script. | 537 // Simulate a failure to fetch the translate script. |
534 SimulateTranslateScriptURLFetch(false); | 538 SimulateTranslateScriptURLFetch(false); |
535 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 539 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
536 ASSERT_TRUE(infobar != NULL); | 540 ASSERT_TRUE(infobar != NULL); |
537 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, | 541 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, |
538 infobar->translate_step()); | 542 infobar->translate_step()); |
539 EXPECT_TRUE(infobar->is_error()); | 543 EXPECT_TRUE(infobar->is_error()); |
540 infobar->MessageInfoBarButtonPressed(); | 544 infobar->MessageInfoBarButtonPressed(); |
541 SimulateTranslateScriptURLFetch(true); // This time succeed. | 545 SimulateTranslateScriptURLFetch(true); // This time succeed. |
542 | 546 |
543 // Simulate the render notifying the translation has been done, the server | 547 // Simulate the render notifying the translation has been done, the server |
544 // having detected the page was in a known and supported language. | 548 // having detected the page was in a known and supported language. |
545 SimulateOnPageTranslated("fr", "en"); | 549 SimulateOnPageTranslated("fr", "en"); |
546 | 550 |
547 // The after translate infobar should be showing. | 551 // The after translate infobar should be showing. |
548 infobar = GetTranslateInfoBar(); | 552 infobar = GetTranslateInfoBar(); |
549 ASSERT_TRUE(infobar != NULL); | 553 ASSERT_TRUE(infobar != NULL); |
550 EXPECT_EQ(translate::TRANSLATE_STEP_AFTER_TRANSLATE, | 554 EXPECT_EQ(translate::TRANSLATE_STEP_AFTER_TRANSLATE, |
551 infobar->translate_step()); | 555 infobar->translate_step()); |
552 EXPECT_EQ("fr", infobar->original_language_code()); | 556 EXPECT_EQ("fr", infobar->original_language_code()); |
553 EXPECT_EQ("en", infobar->target_language_code()); | 557 EXPECT_EQ("en", infobar->target_language_code()); |
554 | 558 |
555 // Let's run the same steps but this time the server detects the page is | 559 // Let's run the same steps but this time the server detects the page is |
556 // already in English. | 560 // already in English. |
557 SimulateNavigation(GURL("http://www.google.com"), "und", true); | 561 SimulateNavigation(GURL("http://www.google.com"), "und", true); |
558 menu.reset(CreateContextMenu()); | 562 menu.reset(CreateContextMenu()); |
559 menu->Init(); | 563 menu->Init(); |
560 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); | 564 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); |
561 SimulateOnPageTranslated(1, "en", "en", TranslateErrors::IDENTICAL_LANGUAGES); | 565 SimulateOnPageTranslated( |
| 566 1, "en", "en", translate::TranslateErrors::IDENTICAL_LANGUAGES); |
562 infobar = GetTranslateInfoBar(); | 567 infobar = GetTranslateInfoBar(); |
563 ASSERT_TRUE(infobar != NULL); | 568 ASSERT_TRUE(infobar != NULL); |
564 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, | 569 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, |
565 infobar->translate_step()); | 570 infobar->translate_step()); |
566 EXPECT_EQ(TranslateErrors::IDENTICAL_LANGUAGES, infobar->error_type()); | 571 EXPECT_EQ(translate::TranslateErrors::IDENTICAL_LANGUAGES, |
| 572 infobar->error_type()); |
567 | 573 |
568 // Let's run the same steps again but this time the server fails to detect the | 574 // Let's run the same steps again but this time the server fails to detect the |
569 // page's language (it returns an empty string). | 575 // page's language (it returns an empty string). |
570 SimulateNavigation(GURL("http://www.google.com"), "und", true); | 576 SimulateNavigation(GURL("http://www.google.com"), "und", true); |
571 menu.reset(CreateContextMenu()); | 577 menu.reset(CreateContextMenu()); |
572 menu->Init(); | 578 menu->Init(); |
573 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); | 579 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); |
574 SimulateOnPageTranslated( | 580 SimulateOnPageTranslated( |
575 2, std::string(), "en", TranslateErrors::UNKNOWN_LANGUAGE); | 581 2, std::string(), "en", translate::TranslateErrors::UNKNOWN_LANGUAGE); |
576 infobar = GetTranslateInfoBar(); | 582 infobar = GetTranslateInfoBar(); |
577 ASSERT_TRUE(infobar != NULL); | 583 ASSERT_TRUE(infobar != NULL); |
578 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, | 584 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, |
579 infobar->translate_step()); | 585 infobar->translate_step()); |
580 EXPECT_EQ(TranslateErrors::UNKNOWN_LANGUAGE, infobar->error_type()); | 586 EXPECT_EQ(translate::TranslateErrors::UNKNOWN_LANGUAGE, |
| 587 infobar->error_type()); |
581 } | 588 } |
582 | 589 |
583 // Tests that we show/don't show an info-bar for the languages. | 590 // Tests that we show/don't show an info-bar for the languages. |
584 TEST_F(TranslateManagerRenderViewHostTest, TestLanguages) { | 591 TEST_F(TranslateManagerRenderViewHostTest, TestLanguages) { |
585 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 | 592 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 |
586 if (TranslateService::IsTranslateBubbleEnabled()) | 593 if (TranslateService::IsTranslateBubbleEnabled()) |
587 return; | 594 return; |
588 | 595 |
589 std::vector<std::string> languages; | 596 std::vector<std::string> languages; |
590 languages.push_back("en"); | 597 languages.push_back("en"); |
591 languages.push_back("ja"); | 598 languages.push_back("ja"); |
592 languages.push_back("fr"); | 599 languages.push_back("fr"); |
593 languages.push_back("ht"); | 600 languages.push_back("ht"); |
594 languages.push_back("xx"); | 601 languages.push_back("xx"); |
595 languages.push_back("zh"); | 602 languages.push_back("zh"); |
596 languages.push_back("zh-CN"); | 603 languages.push_back("zh-CN"); |
597 languages.push_back("und"); | 604 languages.push_back("und"); |
598 | 605 |
599 GURL url("http://www.google.com"); | 606 GURL url("http://www.google.com"); |
600 for (size_t i = 0; i < languages.size(); ++i) { | 607 for (size_t i = 0; i < languages.size(); ++i) { |
601 std::string lang = languages[i]; | 608 std::string lang = languages[i]; |
602 SCOPED_TRACE(::testing::Message() << "Iteration " << i | 609 SCOPED_TRACE(::testing::Message() << "Iteration " << i |
603 << " language=" << lang); | 610 << " language=" << lang); |
604 | 611 |
605 // We should not have a translate infobar. | 612 // We should not have a translate infobar. |
606 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 613 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
607 ASSERT_TRUE(infobar == NULL); | 614 ASSERT_TRUE(infobar == NULL); |
608 | 615 |
609 SimulateNavigation(url, lang, true); | 616 SimulateNavigation(url, lang, true); |
610 | 617 |
611 // Verify we have/don't have an info-bar as expected. | 618 // Verify we have/don't have an info-bar as expected. |
612 infobar = GetTranslateInfoBar(); | 619 infobar = GetTranslateInfoBar(); |
613 bool expected = | 620 bool expected = |
614 TranslateDownloadManager::IsSupportedLanguage(lang) && lang != "en"; | 621 translate::TranslateDownloadManager::IsSupportedLanguage(lang) && |
| 622 lang != "en"; |
615 EXPECT_EQ(expected, infobar != NULL); | 623 EXPECT_EQ(expected, infobar != NULL); |
616 | 624 |
617 if (infobar != NULL) | 625 if (infobar != NULL) |
618 EXPECT_TRUE(CloseTranslateInfoBar()); | 626 EXPECT_TRUE(CloseTranslateInfoBar()); |
619 } | 627 } |
620 } | 628 } |
621 | 629 |
622 // A list of languages to fake being returned by the translate server. | 630 // A list of languages to fake being returned by the translate server. |
623 // Use only langauges for which Chrome's copy of ICU has | 631 // Use only langauges for which Chrome's copy of ICU has |
624 // display names in English locale. To save space, Chrome's copy of ICU | 632 // display names in English locale. To save space, Chrome's copy of ICU |
625 // does not have the display name for a language unless it's in the | 633 // does not have the display name for a language unless it's in the |
626 // Accept-Language list. | 634 // Accept-Language list. |
627 static const char* server_language_list[] = | 635 static const char* server_language_list[] = |
628 {"ach", "ak", "af", "en-CA", "zh", "yi", "fr-FR", "tl", "iw", "in", "xx"}; | 636 {"ach", "ak", "af", "en-CA", "zh", "yi", "fr-FR", "tl", "iw", "in", "xx"}; |
629 static const char* alpha_language_list[] = {"ach", "yi"}; | 637 static const char* alpha_language_list[] = {"ach", "yi"}; |
630 | 638 |
631 // Test the fetching of languages from the translate server | 639 // Test the fetching of languages from the translate server |
632 TEST_F(TranslateManagerRenderViewHostTest, FetchLanguagesFromTranslateServer) { | 640 TEST_F(TranslateManagerRenderViewHostTest, FetchLanguagesFromTranslateServer) { |
633 std::vector<std::string> server_languages; | 641 std::vector<std::string> server_languages; |
634 for (size_t i = 0; i < arraysize(server_language_list); ++i) | 642 for (size_t i = 0; i < arraysize(server_language_list); ++i) |
635 server_languages.push_back(server_language_list[i]); | 643 server_languages.push_back(server_language_list[i]); |
636 | 644 |
637 std::vector<std::string> alpha_languages; | 645 std::vector<std::string> alpha_languages; |
638 for (size_t i = 0; i < arraysize(alpha_language_list); ++i) | 646 for (size_t i = 0; i < arraysize(alpha_language_list); ++i) |
639 alpha_languages.push_back(alpha_language_list[i]); | 647 alpha_languages.push_back(alpha_language_list[i]); |
640 | 648 |
641 // First, get the default languages list. Note that calling | 649 // First, get the default languages list. Note that calling |
642 // GetSupportedLanguages() invokes RequestLanguageList() internally. | 650 // GetSupportedLanguages() invokes RequestLanguageList() internally. |
643 std::vector<std::string> default_supported_languages; | 651 std::vector<std::string> default_supported_languages; |
644 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages); | 652 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 653 &default_supported_languages); |
645 // To make sure we got the defaults and don't confuse them with the mocks. | 654 // To make sure we got the defaults and don't confuse them with the mocks. |
646 ASSERT_NE(default_supported_languages.size(), server_languages.size()); | 655 ASSERT_NE(default_supported_languages.size(), server_languages.size()); |
647 | 656 |
648 // Check that we still get the defaults until the URLFetch has completed. | 657 // Check that we still get the defaults until the URLFetch has completed. |
649 std::vector<std::string> current_supported_languages; | 658 std::vector<std::string> current_supported_languages; |
650 TranslateDownloadManager::GetSupportedLanguages(¤t_supported_languages); | 659 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 660 ¤t_supported_languages); |
651 EXPECT_EQ(default_supported_languages, current_supported_languages); | 661 EXPECT_EQ(default_supported_languages, current_supported_languages); |
652 | 662 |
653 // Also check that it didn't change if we failed the URL fetch. | 663 // Also check that it didn't change if we failed the URL fetch. |
654 SimulateSupportedLanguagesURLFetch( | 664 SimulateSupportedLanguagesURLFetch( |
655 false, std::vector<std::string>(), true, std::vector<std::string>()); | 665 false, std::vector<std::string>(), true, std::vector<std::string>()); |
656 current_supported_languages.clear(); | 666 current_supported_languages.clear(); |
657 TranslateDownloadManager::GetSupportedLanguages(¤t_supported_languages); | 667 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 668 ¤t_supported_languages); |
658 EXPECT_EQ(default_supported_languages, current_supported_languages); | 669 EXPECT_EQ(default_supported_languages, current_supported_languages); |
659 | 670 |
660 // Now check that we got the appropriate set of languages from the server. | 671 // Now check that we got the appropriate set of languages from the server. |
661 SimulateSupportedLanguagesURLFetch( | 672 SimulateSupportedLanguagesURLFetch( |
662 true, server_languages, true, alpha_languages); | 673 true, server_languages, true, alpha_languages); |
663 current_supported_languages.clear(); | 674 current_supported_languages.clear(); |
664 TranslateDownloadManager::GetSupportedLanguages(¤t_supported_languages); | 675 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 676 ¤t_supported_languages); |
665 // "xx" can't be displayed in the Translate infobar, so this is eliminated. | 677 // "xx" can't be displayed in the Translate infobar, so this is eliminated. |
666 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); | 678 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); |
667 // Not sure we need to guarantee the order of languages, so we find them. | 679 // Not sure we need to guarantee the order of languages, so we find them. |
668 for (size_t i = 0; i < server_languages.size(); ++i) { | 680 for (size_t i = 0; i < server_languages.size(); ++i) { |
669 const std::string& lang = server_languages[i]; | 681 const std::string& lang = server_languages[i]; |
670 if (lang == "xx") | 682 if (lang == "xx") |
671 continue; | 683 continue; |
672 EXPECT_NE(current_supported_languages.end(), | 684 EXPECT_NE(current_supported_languages.end(), |
673 std::find(current_supported_languages.begin(), | 685 std::find(current_supported_languages.begin(), |
674 current_supported_languages.end(), | 686 current_supported_languages.end(), |
675 lang)) << "lang=" << lang; | 687 lang)) << "lang=" << lang; |
676 bool is_alpha = | 688 bool is_alpha = |
677 std::find(alpha_languages.begin(), alpha_languages.end(), lang) != | 689 std::find(alpha_languages.begin(), alpha_languages.end(), lang) != |
678 alpha_languages.end(); | 690 alpha_languages.end(); |
679 EXPECT_EQ(TranslateDownloadManager::IsAlphaLanguage(lang), | 691 EXPECT_EQ(translate::TranslateDownloadManager::IsAlphaLanguage(lang), |
680 is_alpha) << "lang=" << lang; | 692 is_alpha) |
| 693 << "lang=" << lang; |
681 } | 694 } |
682 } | 695 } |
683 | 696 |
684 // Test the fetching of languages from the translate server without 'al' | 697 // Test the fetching of languages from the translate server without 'al' |
685 // parameter. | 698 // parameter. |
686 TEST_F(TranslateManagerRenderViewHostTest, | 699 TEST_F(TranslateManagerRenderViewHostTest, |
687 FetchLanguagesFromTranslateServerWithoutAlpha) { | 700 FetchLanguagesFromTranslateServerWithoutAlpha) { |
688 std::vector<std::string> server_languages; | 701 std::vector<std::string> server_languages; |
689 for (size_t i = 0; i < arraysize(server_language_list); ++i) | 702 for (size_t i = 0; i < arraysize(server_language_list); ++i) |
690 server_languages.push_back(server_language_list[i]); | 703 server_languages.push_back(server_language_list[i]); |
691 | 704 |
692 std::vector<std::string> alpha_languages; | 705 std::vector<std::string> alpha_languages; |
693 for (size_t i = 0; i < arraysize(alpha_language_list); ++i) | 706 for (size_t i = 0; i < arraysize(alpha_language_list); ++i) |
694 alpha_languages.push_back(alpha_language_list[i]); | 707 alpha_languages.push_back(alpha_language_list[i]); |
695 | 708 |
696 // call GetSupportedLanguages to call RequestLanguageList internally. | 709 // call GetSupportedLanguages to call RequestLanguageList internally. |
697 std::vector<std::string> default_supported_languages; | 710 std::vector<std::string> default_supported_languages; |
698 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages); | 711 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 712 &default_supported_languages); |
699 | 713 |
700 SimulateSupportedLanguagesURLFetch( | 714 SimulateSupportedLanguagesURLFetch( |
701 true, server_languages, false, alpha_languages); | 715 true, server_languages, false, alpha_languages); |
702 | 716 |
703 std::vector<std::string> current_supported_languages; | 717 std::vector<std::string> current_supported_languages; |
704 TranslateDownloadManager::GetSupportedLanguages(¤t_supported_languages); | 718 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 719 ¤t_supported_languages); |
705 | 720 |
706 // "xx" can't be displayed in the Translate infobar, so this is eliminated. | 721 // "xx" can't be displayed in the Translate infobar, so this is eliminated. |
707 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); | 722 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); |
708 | 723 |
709 for (size_t i = 0; i < server_languages.size(); ++i) { | 724 for (size_t i = 0; i < server_languages.size(); ++i) { |
710 const std::string& lang = server_languages[i]; | 725 const std::string& lang = server_languages[i]; |
711 if (lang == "xx") | 726 if (lang == "xx") |
712 continue; | 727 continue; |
713 EXPECT_NE(current_supported_languages.end(), | 728 EXPECT_NE(current_supported_languages.end(), |
714 std::find(current_supported_languages.begin(), | 729 std::find(current_supported_languages.begin(), |
715 current_supported_languages.end(), | 730 current_supported_languages.end(), |
716 lang)) << "lang=" << lang; | 731 lang)) << "lang=" << lang; |
717 EXPECT_FALSE(TranslateDownloadManager::IsAlphaLanguage(lang)) << | 732 EXPECT_FALSE(translate::TranslateDownloadManager::IsAlphaLanguage(lang)) |
718 "lang=" << lang; | 733 << "lang=" << lang; |
719 } | 734 } |
720 } | 735 } |
721 | 736 |
722 // Tests auto-translate on page. | 737 // Tests auto-translate on page. |
723 TEST_F(TranslateManagerRenderViewHostTest, AutoTranslateOnNavigate) { | 738 TEST_F(TranslateManagerRenderViewHostTest, AutoTranslateOnNavigate) { |
724 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 | 739 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 |
725 if (TranslateService::IsTranslateBubbleEnabled()) | 740 if (TranslateService::IsTranslateBubbleEnabled()) |
726 return; | 741 return; |
727 | 742 |
728 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 743 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
729 | 744 |
730 // Simulate the user translating. | 745 // Simulate the user translating. |
731 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 746 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
732 ASSERT_TRUE(infobar != NULL); | 747 ASSERT_TRUE(infobar != NULL); |
733 infobar->Translate(); | 748 infobar->Translate(); |
734 // Simulate the translate script being retrieved. | 749 // Simulate the translate script being retrieved. |
735 SimulateTranslateScriptURLFetch(true); | 750 SimulateTranslateScriptURLFetch(true); |
736 SimulateOnPageTranslated("fr", "en"); | 751 SimulateOnPageTranslated("fr", "en"); |
737 | 752 |
738 // Now navigate to a new page in the same language. | 753 // Now navigate to a new page in the same language. |
739 process()->sink().ClearMessages(); | 754 process()->sink().ClearMessages(); |
740 SimulateNavigation(GURL("http://news.google.fr"), "fr", true); | 755 SimulateNavigation(GURL("http://news.google.fr"), "fr", true); |
741 | 756 |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
913 // return when navigating in page. | 928 // return when navigating in page. |
914 TEST_F(TranslateManagerRenderViewHostTest, | 929 TEST_F(TranslateManagerRenderViewHostTest, |
915 TranslateCloseInfoBarInPageNavigation) { | 930 TranslateCloseInfoBarInPageNavigation) { |
916 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 | 931 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 |
917 if (TranslateService::IsTranslateBubbleEnabled()) | 932 if (TranslateService::IsTranslateBubbleEnabled()) |
918 return; | 933 return; |
919 | 934 |
920 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 935 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
921 | 936 |
922 // Simulate the user translating. | 937 // Simulate the user translating. |
923 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 938 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
924 ASSERT_TRUE(infobar != NULL); | 939 ASSERT_TRUE(infobar != NULL); |
925 infobar->Translate(); | 940 infobar->Translate(); |
926 // Simulate the translate script being retrieved. | 941 // Simulate the translate script being retrieved. |
927 SimulateTranslateScriptURLFetch(true); | 942 SimulateTranslateScriptURLFetch(true); |
928 SimulateOnPageTranslated("fr", "en"); | 943 SimulateOnPageTranslated("fr", "en"); |
929 | 944 |
930 EXPECT_TRUE(CloseTranslateInfoBar()); | 945 EXPECT_TRUE(CloseTranslateInfoBar()); |
931 | 946 |
932 // Navigate in page, no infobar should be shown. | 947 // Navigate in page, no infobar should be shown. |
933 SimulateNavigation(GURL("http://www.google.fr/#ref1"), "fr", true); | 948 SimulateNavigation(GURL("http://www.google.fr/#ref1"), "fr", true); |
(...skipping 10 matching lines...) Expand all Loading... |
944 // Tests that the after translate the infobar still shows when navigating | 959 // Tests that the after translate the infobar still shows when navigating |
945 // in-page. | 960 // in-page. |
946 TEST_F(TranslateManagerRenderViewHostTest, TranslateInPageNavigation) { | 961 TEST_F(TranslateManagerRenderViewHostTest, TranslateInPageNavigation) { |
947 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 | 962 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 |
948 if (TranslateService::IsTranslateBubbleEnabled()) | 963 if (TranslateService::IsTranslateBubbleEnabled()) |
949 return; | 964 return; |
950 | 965 |
951 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 966 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
952 | 967 |
953 // Simulate the user translating. | 968 // Simulate the user translating. |
954 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 969 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
955 ASSERT_TRUE(infobar != NULL); | 970 ASSERT_TRUE(infobar != NULL); |
956 infobar->Translate(); | 971 infobar->Translate(); |
957 SimulateTranslateScriptURLFetch(true); | 972 SimulateTranslateScriptURLFetch(true); |
958 SimulateOnPageTranslated("fr", "en"); | 973 SimulateOnPageTranslated("fr", "en"); |
959 // The after translate infobar is showing. | 974 // The after translate infobar is showing. |
960 infobar = GetTranslateInfoBar(); | 975 infobar = GetTranslateInfoBar(); |
961 ASSERT_TRUE(infobar != NULL); | 976 ASSERT_TRUE(infobar != NULL); |
962 | 977 |
963 // Navigate out of page, a new infobar should show. | 978 // Navigate out of page, a new infobar should show. |
964 // See note in TranslateCloseInfoBarInPageNavigation test on why it is | 979 // See note in TranslateCloseInfoBarInPageNavigation test on why it is |
(...skipping 21 matching lines...) Expand all Loading... |
986 | 1001 |
987 // Tests that we deal correctly with unsupported languages returned by the | 1002 // Tests that we deal correctly with unsupported languages returned by the |
988 // server. | 1003 // server. |
989 // The translation server might return a language we don't support. | 1004 // The translation server might return a language we don't support. |
990 TEST_F(TranslateManagerRenderViewHostTest, ServerReportsUnsupportedLanguage) { | 1005 TEST_F(TranslateManagerRenderViewHostTest, ServerReportsUnsupportedLanguage) { |
991 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 | 1006 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 |
992 if (TranslateService::IsTranslateBubbleEnabled()) | 1007 if (TranslateService::IsTranslateBubbleEnabled()) |
993 return; | 1008 return; |
994 | 1009 |
995 SimulateNavigation(GURL("http://mail.google.fr"), "fr", true); | 1010 SimulateNavigation(GURL("http://mail.google.fr"), "fr", true); |
996 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 1011 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
997 ASSERT_TRUE(infobar != NULL); | 1012 ASSERT_TRUE(infobar != NULL); |
998 process()->sink().ClearMessages(); | 1013 process()->sink().ClearMessages(); |
999 infobar->Translate(); | 1014 infobar->Translate(); |
1000 SimulateTranslateScriptURLFetch(true); | 1015 SimulateTranslateScriptURLFetch(true); |
1001 // Simulate the render notifying the translation has been done, but it | 1016 // Simulate the render notifying the translation has been done, but it |
1002 // reports a language we don't support. | 1017 // reports a language we don't support. |
1003 SimulateOnPageTranslated("qbz", "en"); | 1018 SimulateOnPageTranslated("qbz", "en"); |
1004 | 1019 |
1005 // An error infobar should be showing to report that we don't support this | 1020 // An error infobar should be showing to report that we don't support this |
1006 // language. | 1021 // language. |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1096 | 1111 |
1097 // Make sure the pref allows translate. | 1112 // Make sure the pref allows translate. |
1098 Profile* profile = | 1113 Profile* profile = |
1099 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 1114 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
1100 PrefService* prefs = profile->GetPrefs(); | 1115 PrefService* prefs = profile->GetPrefs(); |
1101 prefs->SetBoolean(prefs::kEnableTranslate, true); | 1116 prefs->SetBoolean(prefs::kEnableTranslate, true); |
1102 | 1117 |
1103 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 1118 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
1104 | 1119 |
1105 // An infobar should be shown. | 1120 // An infobar should be shown. |
1106 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 1121 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
1107 EXPECT_TRUE(infobar != NULL); | 1122 EXPECT_TRUE(infobar != NULL); |
1108 | 1123 |
1109 // Disable translate. | 1124 // Disable translate. |
1110 prefs->SetBoolean(prefs::kEnableTranslate, false); | 1125 prefs->SetBoolean(prefs::kEnableTranslate, false); |
1111 | 1126 |
1112 // Navigate to a new page, that should close the previous infobar. | 1127 // Navigate to a new page, that should close the previous infobar. |
1113 GURL url("http://www.youtube.fr"); | 1128 GURL url("http://www.youtube.fr"); |
1114 NavigateAndCommit(url); | 1129 NavigateAndCommit(url); |
1115 infobar = GetTranslateInfoBar(); | 1130 infobar = GetTranslateInfoBar(); |
1116 EXPECT_TRUE(infobar == NULL); | 1131 EXPECT_TRUE(infobar == NULL); |
(...skipping 16 matching lines...) Expand all Loading... |
1133 | 1148 |
1134 // An infobar should be shown. | 1149 // An infobar should be shown. |
1135 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 1150 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
1136 | 1151 |
1137 // Select never translate this language. | 1152 // Select never translate this language. |
1138 Profile* profile = | 1153 Profile* profile = |
1139 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 1154 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
1140 PrefService* prefs = profile->GetPrefs(); | 1155 PrefService* prefs = profile->GetPrefs(); |
1141 PrefChangeRegistrar registrar; | 1156 PrefChangeRegistrar registrar; |
1142 registrar.Init(prefs); | 1157 registrar.Init(prefs); |
1143 registrar.Add(TranslatePrefs::kPrefTranslateBlockedLanguages, pref_callback_); | 1158 registrar.Add(translate::TranslatePrefs::kPrefTranslateBlockedLanguages, |
1144 scoped_ptr<TranslatePrefs> translate_prefs( | 1159 pref_callback_); |
| 1160 scoped_ptr<translate::TranslatePrefs> translate_prefs( |
1145 ChromeTranslateClient::CreateTranslatePrefs(prefs)); | 1161 ChromeTranslateClient::CreateTranslatePrefs(prefs)); |
1146 EXPECT_FALSE(translate_prefs->IsBlockedLanguage("fr")); | 1162 EXPECT_FALSE(translate_prefs->IsBlockedLanguage("fr")); |
1147 TranslateAcceptLanguages* accept_languages = | 1163 translate::TranslateAcceptLanguages* accept_languages = |
1148 ChromeTranslateClient::GetTranslateAcceptLanguages(profile); | 1164 ChromeTranslateClient::GetTranslateAcceptLanguages(profile); |
1149 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); | 1165 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); |
1150 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateBlockedLanguages); | 1166 SetPrefObserverExpectation( |
| 1167 translate::TranslatePrefs::kPrefTranslateBlockedLanguages); |
1151 translate_prefs->BlockLanguage("fr"); | 1168 translate_prefs->BlockLanguage("fr"); |
1152 EXPECT_TRUE(translate_prefs->IsBlockedLanguage("fr")); | 1169 EXPECT_TRUE(translate_prefs->IsBlockedLanguage("fr")); |
1153 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(url.host())); | 1170 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(url.host())); |
1154 EXPECT_FALSE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); | 1171 EXPECT_FALSE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); |
1155 | 1172 |
1156 EXPECT_TRUE(CloseTranslateInfoBar()); | 1173 EXPECT_TRUE(CloseTranslateInfoBar()); |
1157 | 1174 |
1158 // Navigate to a new page also in French. | 1175 // Navigate to a new page also in French. |
1159 SimulateNavigation(GURL("http://wwww.youtube.fr"), "fr", true); | 1176 SimulateNavigation(GURL("http://wwww.youtube.fr"), "fr", true); |
1160 | 1177 |
1161 // There should not be a translate infobar. | 1178 // There should not be a translate infobar. |
1162 EXPECT_TRUE(GetTranslateInfoBar() == NULL); | 1179 EXPECT_TRUE(GetTranslateInfoBar() == NULL); |
1163 | 1180 |
1164 // Remove the language from the blacklist. | 1181 // Remove the language from the blacklist. |
1165 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateBlockedLanguages); | 1182 SetPrefObserverExpectation( |
| 1183 translate::TranslatePrefs::kPrefTranslateBlockedLanguages); |
1166 translate_prefs->UnblockLanguage("fr"); | 1184 translate_prefs->UnblockLanguage("fr"); |
1167 EXPECT_FALSE(translate_prefs->IsBlockedLanguage("fr")); | 1185 EXPECT_FALSE(translate_prefs->IsBlockedLanguage("fr")); |
1168 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(url.host())); | 1186 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(url.host())); |
1169 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); | 1187 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); |
1170 | 1188 |
1171 // Navigate to a page in French. | 1189 // Navigate to a page in French. |
1172 SimulateNavigation(url, "fr", true); | 1190 SimulateNavigation(url, "fr", true); |
1173 | 1191 |
1174 // There should be a translate infobar. | 1192 // There should be a translate infobar. |
1175 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 1193 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
(...skipping 11 matching lines...) Expand all Loading... |
1187 | 1205 |
1188 // An infobar should be shown. | 1206 // An infobar should be shown. |
1189 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 1207 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
1190 | 1208 |
1191 // Select never translate this site. | 1209 // Select never translate this site. |
1192 Profile* profile = | 1210 Profile* profile = |
1193 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 1211 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
1194 PrefService* prefs = profile->GetPrefs(); | 1212 PrefService* prefs = profile->GetPrefs(); |
1195 PrefChangeRegistrar registrar; | 1213 PrefChangeRegistrar registrar; |
1196 registrar.Init(prefs); | 1214 registrar.Init(prefs); |
1197 registrar.Add(TranslatePrefs::kPrefTranslateSiteBlacklist, pref_callback_); | 1215 registrar.Add(translate::TranslatePrefs::kPrefTranslateSiteBlacklist, |
1198 scoped_ptr<TranslatePrefs> translate_prefs( | 1216 pref_callback_); |
| 1217 scoped_ptr<translate::TranslatePrefs> translate_prefs( |
1199 ChromeTranslateClient::CreateTranslatePrefs(prefs)); | 1218 ChromeTranslateClient::CreateTranslatePrefs(prefs)); |
1200 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(host)); | 1219 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(host)); |
1201 TranslateAcceptLanguages* accept_languages = | 1220 translate::TranslateAcceptLanguages* accept_languages = |
1202 ChromeTranslateClient::GetTranslateAcceptLanguages(profile); | 1221 ChromeTranslateClient::GetTranslateAcceptLanguages(profile); |
1203 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); | 1222 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); |
1204 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateSiteBlacklist); | 1223 SetPrefObserverExpectation( |
| 1224 translate::TranslatePrefs::kPrefTranslateSiteBlacklist); |
1205 translate_prefs->BlacklistSite(host); | 1225 translate_prefs->BlacklistSite(host); |
1206 EXPECT_TRUE(translate_prefs->IsSiteBlacklisted(host)); | 1226 EXPECT_TRUE(translate_prefs->IsSiteBlacklisted(host)); |
1207 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); | 1227 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); |
1208 | 1228 |
1209 EXPECT_TRUE(CloseTranslateInfoBar()); | 1229 EXPECT_TRUE(CloseTranslateInfoBar()); |
1210 | 1230 |
1211 // Navigate to a new page also on the same site. | 1231 // Navigate to a new page also on the same site. |
1212 SimulateNavigation(GURL("http://www.google.fr/hello"), "fr", true); | 1232 SimulateNavigation(GURL("http://www.google.fr/hello"), "fr", true); |
1213 | 1233 |
1214 // There should not be a translate infobar. | 1234 // There should not be a translate infobar. |
1215 EXPECT_TRUE(GetTranslateInfoBar() == NULL); | 1235 EXPECT_TRUE(GetTranslateInfoBar() == NULL); |
1216 | 1236 |
1217 // Remove the site from the blacklist. | 1237 // Remove the site from the blacklist. |
1218 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateSiteBlacklist); | 1238 SetPrefObserverExpectation( |
| 1239 translate::TranslatePrefs::kPrefTranslateSiteBlacklist); |
1219 translate_prefs->RemoveSiteFromBlacklist(host); | 1240 translate_prefs->RemoveSiteFromBlacklist(host); |
1220 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(host)); | 1241 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(host)); |
1221 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); | 1242 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); |
1222 | 1243 |
1223 // Navigate to a page in French. | 1244 // Navigate to a page in French. |
1224 SimulateNavigation(url, "fr", true); | 1245 SimulateNavigation(url, "fr", true); |
1225 | 1246 |
1226 // There should be a translate infobar. | 1247 // There should be a translate infobar. |
1227 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 1248 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
1228 } | 1249 } |
1229 | 1250 |
1230 // Tests the "Always translate this language" pref. | 1251 // Tests the "Always translate this language" pref. |
1231 TEST_F(TranslateManagerRenderViewHostTest, AlwaysTranslateLanguagePref) { | 1252 TEST_F(TranslateManagerRenderViewHostTest, AlwaysTranslateLanguagePref) { |
1232 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 | 1253 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 |
1233 if (TranslateService::IsTranslateBubbleEnabled()) | 1254 if (TranslateService::IsTranslateBubbleEnabled()) |
1234 return; | 1255 return; |
1235 | 1256 |
1236 // Select always translate French to English. | 1257 // Select always translate French to English. |
1237 Profile* profile = | 1258 Profile* profile = |
1238 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 1259 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
1239 PrefService* prefs = profile->GetPrefs(); | 1260 PrefService* prefs = profile->GetPrefs(); |
1240 PrefChangeRegistrar registrar; | 1261 PrefChangeRegistrar registrar; |
1241 registrar.Init(prefs); | 1262 registrar.Init(prefs); |
1242 registrar.Add(TranslatePrefs::kPrefTranslateWhitelists, pref_callback_); | 1263 registrar.Add(translate::TranslatePrefs::kPrefTranslateWhitelists, |
1243 scoped_ptr<TranslatePrefs> translate_prefs( | 1264 pref_callback_); |
| 1265 scoped_ptr<translate::TranslatePrefs> translate_prefs( |
1244 ChromeTranslateClient::CreateTranslatePrefs(prefs)); | 1266 ChromeTranslateClient::CreateTranslatePrefs(prefs)); |
1245 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateWhitelists); | 1267 SetPrefObserverExpectation( |
| 1268 translate::TranslatePrefs::kPrefTranslateWhitelists); |
1246 translate_prefs->WhitelistLanguagePair("fr", "en"); | 1269 translate_prefs->WhitelistLanguagePair("fr", "en"); |
1247 | 1270 |
1248 // Load a page in French. | 1271 // Load a page in French. |
1249 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 1272 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
1250 | 1273 |
1251 // It should have triggered an automatic translation to English. | 1274 // It should have triggered an automatic translation to English. |
1252 | 1275 |
1253 // The translating infobar should be showing. | 1276 // The translating infobar should be showing. |
1254 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 1277 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
1255 ASSERT_TRUE(infobar != NULL); | 1278 ASSERT_TRUE(infobar != NULL); |
1256 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step()); | 1279 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step()); |
1257 SimulateTranslateScriptURLFetch(true); | 1280 SimulateTranslateScriptURLFetch(true); |
1258 std::string original_lang, target_lang; | 1281 std::string original_lang, target_lang; |
1259 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); | 1282 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); |
1260 EXPECT_EQ("fr", original_lang); | 1283 EXPECT_EQ("fr", original_lang); |
1261 EXPECT_EQ("en", target_lang); | 1284 EXPECT_EQ("en", target_lang); |
1262 process()->sink().ClearMessages(); | 1285 process()->sink().ClearMessages(); |
1263 | 1286 |
1264 // Try another language, it should not be autotranslated. | 1287 // Try another language, it should not be autotranslated. |
1265 SimulateNavigation(GURL("http://www.google.es"), "es", true); | 1288 SimulateNavigation(GURL("http://www.google.es"), "es", true); |
1266 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); | 1289 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); |
1267 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 1290 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
1268 EXPECT_TRUE(CloseTranslateInfoBar()); | 1291 EXPECT_TRUE(CloseTranslateInfoBar()); |
1269 | 1292 |
1270 // Let's switch to incognito mode, it should not be autotranslated in that | 1293 // Let's switch to incognito mode, it should not be autotranslated in that |
1271 // case either. | 1294 // case either. |
1272 TestingProfile* test_profile = | 1295 TestingProfile* test_profile = |
1273 static_cast<TestingProfile*>(web_contents()->GetBrowserContext()); | 1296 static_cast<TestingProfile*>(web_contents()->GetBrowserContext()); |
1274 test_profile->ForceIncognito(true); | 1297 test_profile->ForceIncognito(true); |
1275 SimulateNavigation(GURL("http://www.youtube.fr"), "fr", true); | 1298 SimulateNavigation(GURL("http://www.youtube.fr"), "fr", true); |
1276 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); | 1299 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); |
1277 EXPECT_TRUE(GetTranslateInfoBar() != NULL); | 1300 EXPECT_TRUE(GetTranslateInfoBar() != NULL); |
1278 EXPECT_TRUE(CloseTranslateInfoBar()); | 1301 EXPECT_TRUE(CloseTranslateInfoBar()); |
1279 test_profile->ForceIncognito(false); // Get back to non incognito. | 1302 test_profile->ForceIncognito(false); // Get back to non incognito. |
1280 | 1303 |
1281 // Now revert the always translate pref and make sure we go back to expected | 1304 // Now revert the always translate pref and make sure we go back to expected |
1282 // behavior, which is show a "before translate" infobar. | 1305 // behavior, which is show a "before translate" infobar. |
1283 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateWhitelists); | 1306 SetPrefObserverExpectation( |
| 1307 translate::TranslatePrefs::kPrefTranslateWhitelists); |
1284 translate_prefs->RemoveLanguagePairFromWhitelist("fr", "en"); | 1308 translate_prefs->RemoveLanguagePairFromWhitelist("fr", "en"); |
1285 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 1309 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
1286 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); | 1310 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); |
1287 infobar = GetTranslateInfoBar(); | 1311 infobar = GetTranslateInfoBar(); |
1288 ASSERT_TRUE(infobar != NULL); | 1312 ASSERT_TRUE(infobar != NULL); |
1289 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, | 1313 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, |
1290 infobar->translate_step()); | 1314 infobar->translate_step()); |
1291 } | 1315 } |
1292 | 1316 |
1293 // Context menu. | 1317 // Context menu. |
1294 TEST_F(TranslateManagerRenderViewHostTest, ContextMenu) { | 1318 TEST_F(TranslateManagerRenderViewHostTest, ContextMenu) { |
1295 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 | 1319 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 |
1296 if (TranslateService::IsTranslateBubbleEnabled()) | 1320 if (TranslateService::IsTranslateBubbleEnabled()) |
1297 return; | 1321 return; |
1298 | 1322 |
1299 // Blacklist www.google.fr and French for translation. | 1323 // Blacklist www.google.fr and French for translation. |
1300 GURL url("http://www.google.fr"); | 1324 GURL url("http://www.google.fr"); |
1301 Profile* profile = | 1325 Profile* profile = |
1302 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 1326 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
1303 scoped_ptr<TranslatePrefs> translate_prefs( | 1327 scoped_ptr<translate::TranslatePrefs> translate_prefs( |
1304 ChromeTranslateClient::CreateTranslatePrefs(profile->GetPrefs())); | 1328 ChromeTranslateClient::CreateTranslatePrefs(profile->GetPrefs())); |
1305 translate_prefs->BlockLanguage("fr"); | 1329 translate_prefs->BlockLanguage("fr"); |
1306 translate_prefs->BlacklistSite(url.host()); | 1330 translate_prefs->BlacklistSite(url.host()); |
1307 EXPECT_TRUE(translate_prefs->IsBlockedLanguage("fr")); | 1331 EXPECT_TRUE(translate_prefs->IsBlockedLanguage("fr")); |
1308 EXPECT_TRUE(translate_prefs->IsSiteBlacklisted(url.host())); | 1332 EXPECT_TRUE(translate_prefs->IsSiteBlacklisted(url.host())); |
1309 | 1333 |
1310 // Simulate navigating to a page in French. The translate menu should show but | 1334 // Simulate navigating to a page in French. The translate menu should show but |
1311 // should only be enabled when the page language has been received. | 1335 // should only be enabled when the page language has been received. |
1312 NavigateAndCommit(url); | 1336 NavigateAndCommit(url); |
1313 scoped_ptr<TestRenderViewContextMenu> menu(CreateContextMenu()); | 1337 scoped_ptr<TestRenderViewContextMenu> menu(CreateContextMenu()); |
1314 menu->Init(); | 1338 menu->Init(); |
1315 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); | 1339 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); |
1316 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); | 1340 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); |
1317 | 1341 |
1318 // Simulate receiving the language. | 1342 // Simulate receiving the language. |
1319 SimulateOnTranslateLanguageDetermined("fr", true); | 1343 SimulateOnTranslateLanguageDetermined("fr", true); |
1320 menu.reset(CreateContextMenu()); | 1344 menu.reset(CreateContextMenu()); |
1321 menu->Init(); | 1345 menu->Init(); |
1322 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); | 1346 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); |
1323 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); | 1347 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); |
1324 | 1348 |
1325 // Use the menu to translate the page. | 1349 // Use the menu to translate the page. |
1326 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); | 1350 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); |
1327 | 1351 |
1328 // That should have triggered a translation. | 1352 // That should have triggered a translation. |
1329 // The "translating..." infobar should be showing. | 1353 // The "translating..." infobar should be showing. |
1330 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 1354 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
1331 ASSERT_TRUE(infobar != NULL); | 1355 ASSERT_TRUE(infobar != NULL); |
1332 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step()); | 1356 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step()); |
1333 SimulateTranslateScriptURLFetch(true); | 1357 SimulateTranslateScriptURLFetch(true); |
1334 std::string original_lang, target_lang; | 1358 std::string original_lang, target_lang; |
1335 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); | 1359 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); |
1336 EXPECT_EQ("fr", original_lang); | 1360 EXPECT_EQ("fr", original_lang); |
1337 EXPECT_EQ("en", target_lang); | 1361 EXPECT_EQ("en", target_lang); |
1338 process()->sink().ClearMessages(); | 1362 process()->sink().ClearMessages(); |
1339 | 1363 |
1340 // This should also have reverted the blacklisting of this site and language. | 1364 // This should also have reverted the blacklisting of this site and language. |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1402 // Tests that an extra always/never translate button is shown on the "before | 1426 // Tests that an extra always/never translate button is shown on the "before |
1403 // translate" infobar when the translation is accepted/declined 3 times, | 1427 // translate" infobar when the translation is accepted/declined 3 times, |
1404 // only when not in incognito mode. | 1428 // only when not in incognito mode. |
1405 TEST_F(TranslateManagerRenderViewHostTest, BeforeTranslateExtraButtons) { | 1429 TEST_F(TranslateManagerRenderViewHostTest, BeforeTranslateExtraButtons) { |
1406 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 | 1430 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 |
1407 if (TranslateService::IsTranslateBubbleEnabled()) | 1431 if (TranslateService::IsTranslateBubbleEnabled()) |
1408 return; | 1432 return; |
1409 | 1433 |
1410 Profile* profile = | 1434 Profile* profile = |
1411 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); | 1435 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); |
1412 scoped_ptr<TranslatePrefs> translate_prefs( | 1436 scoped_ptr<translate::TranslatePrefs> translate_prefs( |
1413 ChromeTranslateClient::CreateTranslatePrefs(profile->GetPrefs())); | 1437 ChromeTranslateClient::CreateTranslatePrefs(profile->GetPrefs())); |
1414 translate_prefs->ResetTranslationAcceptedCount("fr"); | 1438 translate_prefs->ResetTranslationAcceptedCount("fr"); |
1415 translate_prefs->ResetTranslationDeniedCount("fr"); | 1439 translate_prefs->ResetTranslationDeniedCount("fr"); |
1416 translate_prefs->ResetTranslationAcceptedCount("de"); | 1440 translate_prefs->ResetTranslationAcceptedCount("de"); |
1417 translate_prefs->ResetTranslationDeniedCount("de"); | 1441 translate_prefs->ResetTranslationDeniedCount("de"); |
1418 | 1442 |
1419 // We'll do 4 times in incognito mode first to make sure the button is not | 1443 // We'll do 4 times in incognito mode first to make sure the button is not |
1420 // shown in that case, then 4 times in normal mode. | 1444 // shown in that case, then 4 times in normal mode. |
1421 TranslateInfoBarDelegate* infobar; | 1445 translate::TranslateInfoBarDelegate* infobar; |
1422 TestingProfile* test_profile = | 1446 TestingProfile* test_profile = |
1423 static_cast<TestingProfile*>(web_contents()->GetBrowserContext()); | 1447 static_cast<TestingProfile*>(web_contents()->GetBrowserContext()); |
1424 static_cast<extensions::TestExtensionSystem*>( | 1448 static_cast<extensions::TestExtensionSystem*>( |
1425 extensions::ExtensionSystem::Get(test_profile))->CreateProcessManager(); | 1449 extensions::ExtensionSystem::Get(test_profile))->CreateProcessManager(); |
1426 test_profile->ForceIncognito(true); | 1450 test_profile->ForceIncognito(true); |
1427 for (int i = 0; i < 8; ++i) { | 1451 for (int i = 0; i < 8; ++i) { |
1428 SCOPED_TRACE(::testing::Message() << "Iteration " << i << " incognito mode=" | 1452 SCOPED_TRACE(::testing::Message() << "Iteration " << i << " incognito mode=" |
1429 << test_profile->IsOffTheRecord()); | 1453 << test_profile->IsOffTheRecord()); |
1430 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 1454 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
1431 infobar = GetTranslateInfoBar(); | 1455 infobar = GetTranslateInfoBar(); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1503 | 1527 |
1504 // Tests that the script is expired and refetched as expected. | 1528 // Tests that the script is expired and refetched as expected. |
1505 TEST_F(TranslateManagerRenderViewHostTest, ScriptExpires) { | 1529 TEST_F(TranslateManagerRenderViewHostTest, ScriptExpires) { |
1506 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 | 1530 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 |
1507 if (TranslateService::IsTranslateBubbleEnabled()) | 1531 if (TranslateService::IsTranslateBubbleEnabled()) |
1508 return; | 1532 return; |
1509 | 1533 |
1510 ExpireTranslateScriptImmediately(); | 1534 ExpireTranslateScriptImmediately(); |
1511 | 1535 |
1512 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 1536 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
1513 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 1537 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
1514 ASSERT_TRUE(infobar != NULL); | 1538 ASSERT_TRUE(infobar != NULL); |
1515 process()->sink().ClearMessages(); | 1539 process()->sink().ClearMessages(); |
1516 infobar->Translate(); | 1540 infobar->Translate(); |
1517 SimulateTranslateScriptURLFetch(true); | 1541 SimulateTranslateScriptURLFetch(true); |
1518 SimulateOnPageTranslated("fr", "en"); | 1542 SimulateOnPageTranslated("fr", "en"); |
1519 | 1543 |
1520 // A task should have been posted to clear the script, run it. | 1544 // A task should have been posted to clear the script, run it. |
1521 base::MessageLoop::current()->RunUntilIdle(); | 1545 base::MessageLoop::current()->RunUntilIdle(); |
1522 | 1546 |
1523 // Do another navigation and translation. | 1547 // Do another navigation and translation. |
(...skipping 27 matching lines...) Expand all Loading... |
1551 if (!TranslateService::IsTranslateBubbleEnabled()) | 1575 if (!TranslateService::IsTranslateBubbleEnabled()) |
1552 return; | 1576 return; |
1553 | 1577 |
1554 MockTranslateBubbleFactory* factory = new MockTranslateBubbleFactory; | 1578 MockTranslateBubbleFactory* factory = new MockTranslateBubbleFactory; |
1555 scoped_ptr<TranslateBubbleFactory> factory_ptr(factory); | 1579 scoped_ptr<TranslateBubbleFactory> factory_ptr(factory); |
1556 TranslateBubbleFactory::SetFactory(factory); | 1580 TranslateBubbleFactory::SetFactory(factory); |
1557 | 1581 |
1558 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 1582 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
1559 | 1583 |
1560 // Check the bubble exists instead of the infobar. | 1584 // Check the bubble exists instead of the infobar. |
1561 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 1585 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
1562 ASSERT_TRUE(infobar == NULL); | 1586 ASSERT_TRUE(infobar == NULL); |
1563 TranslateBubbleModel* bubble = factory->model(); | 1587 TranslateBubbleModel* bubble = factory->model(); |
1564 ASSERT_TRUE(bubble != NULL); | 1588 ASSERT_TRUE(bubble != NULL); |
1565 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, | 1589 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, |
1566 bubble->GetViewState()); | 1590 bubble->GetViewState()); |
1567 | 1591 |
1568 // Simulate clicking translate. | 1592 // Simulate clicking translate. |
1569 process()->sink().ClearMessages(); | 1593 process()->sink().ClearMessages(); |
1570 bubble->Translate(); | 1594 bubble->Translate(); |
1571 | 1595 |
(...skipping 22 matching lines...) Expand all Loading... |
1594 if (!TranslateService::IsTranslateBubbleEnabled()) | 1618 if (!TranslateService::IsTranslateBubbleEnabled()) |
1595 return; | 1619 return; |
1596 | 1620 |
1597 MockTranslateBubbleFactory* factory = new MockTranslateBubbleFactory; | 1621 MockTranslateBubbleFactory* factory = new MockTranslateBubbleFactory; |
1598 scoped_ptr<TranslateBubbleFactory> factory_ptr(factory); | 1622 scoped_ptr<TranslateBubbleFactory> factory_ptr(factory); |
1599 TranslateBubbleFactory::SetFactory(factory); | 1623 TranslateBubbleFactory::SetFactory(factory); |
1600 | 1624 |
1601 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); | 1625 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); |
1602 | 1626 |
1603 // Check the bubble exists instead of the infobar. | 1627 // Check the bubble exists instead of the infobar. |
1604 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 1628 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
1605 ASSERT_TRUE(infobar == NULL); | 1629 ASSERT_TRUE(infobar == NULL); |
1606 TranslateBubbleModel* bubble = factory->model(); | 1630 TranslateBubbleModel* bubble = factory->model(); |
1607 ASSERT_TRUE(bubble != NULL); | 1631 ASSERT_TRUE(bubble != NULL); |
1608 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, | 1632 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, |
1609 bubble->GetViewState()); | 1633 bubble->GetViewState()); |
1610 | 1634 |
1611 // Simulate clicking translate. | 1635 // Simulate clicking translate. |
1612 process()->sink().ClearMessages(); | 1636 process()->sink().ClearMessages(); |
1613 bubble->Translate(); | 1637 bubble->Translate(); |
1614 SimulateTranslateScriptURLFetch(false); | 1638 SimulateTranslateScriptURLFetch(false); |
(...skipping 22 matching lines...) Expand all Loading... |
1637 | 1661 |
1638 // We should not have a bubble as we don't know the language. | 1662 // We should not have a bubble as we don't know the language. |
1639 ASSERT_TRUE(factory->model() == NULL); | 1663 ASSERT_TRUE(factory->model() == NULL); |
1640 | 1664 |
1641 // Translate the page anyway throught the context menu. | 1665 // Translate the page anyway throught the context menu. |
1642 scoped_ptr<TestRenderViewContextMenu> menu(CreateContextMenu()); | 1666 scoped_ptr<TestRenderViewContextMenu> menu(CreateContextMenu()); |
1643 menu->Init(); | 1667 menu->Init(); |
1644 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); | 1668 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); |
1645 | 1669 |
1646 // Check the bubble exists instead of the infobar. | 1670 // Check the bubble exists instead of the infobar. |
1647 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); | 1671 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); |
1648 ASSERT_TRUE(infobar == NULL); | 1672 ASSERT_TRUE(infobar == NULL); |
1649 TranslateBubbleModel* bubble = factory->model(); | 1673 TranslateBubbleModel* bubble = factory->model(); |
1650 ASSERT_TRUE(bubble != NULL); | 1674 ASSERT_TRUE(bubble != NULL); |
1651 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, | 1675 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, |
1652 bubble->GetViewState()); | 1676 bubble->GetViewState()); |
1653 } | 1677 } |
OLD | NEW |