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

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

Issue 3585002: Revert 60963 - Merge 58701 - Relanding this:... (Closed) Base URL: svn://svn.chromium.org/chrome/branches/517/src/
Patch Set: Created 10 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/tab_contents/test_tab_contents.cc ('k') | no next file » | 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/renderer_host/test/test_render_view_host.h" 5 #include "chrome/browser/renderer_host/test/test_render_view_host.h"
6 6
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/app/chrome_dll_resource.h" 8 #include "chrome/app/chrome_dll_resource.h"
9 #include "chrome/browser/prefs/pref_service.h" 9 #include "chrome/browser/prefs/pref_service.h"
10 #include "chrome/browser/renderer_host/mock_render_process_host.h" 10 #include "chrome/browser/renderer_host/mock_render_process_host.h"
11 #include "chrome/browser/tab_contents/navigation_controller.h"
12 #include "chrome/browser/tab_contents/render_view_context_menu.h" 11 #include "chrome/browser/tab_contents/render_view_context_menu.h"
13 #include "chrome/browser/tab_contents/test_tab_contents.h" 12 #include "chrome/browser/tab_contents/test_tab_contents.h"
14 #include "chrome/browser/translate/translate_infobar_delegate.h" 13 #include "chrome/browser/translate/translate_infobar_delegate.h"
15 #include "chrome/browser/translate/translate_manager.h" 14 #include "chrome/browser/translate/translate_manager.h"
16 #include "chrome/browser/translate/translate_prefs.h" 15 #include "chrome/browser/translate/translate_prefs.h"
17 #include "chrome/common/ipc_test_sink.h" 16 #include "chrome/common/ipc_test_sink.h"
18 #include "chrome/common/notification_details.h" 17 #include "chrome/common/notification_details.h"
19 #include "chrome/common/notification_observer_mock.h" 18 #include "chrome/common/notification_observer_mock.h"
20 #include "chrome/common/notification_registrar.h" 19 #include "chrome/common/notification_registrar.h"
21 #include "chrome/common/notification_service.h" 20 #include "chrome/common/notification_service.h"
(...skipping 13 matching lines...) Expand all
35 using testing::Property; 34 using testing::Property;
36 using WebKit::WebContextMenuData; 35 using WebKit::WebContextMenuData;
37 36
38 class TranslateManagerTest : public RenderViewHostTestHarness, 37 class TranslateManagerTest : public RenderViewHostTestHarness,
39 public NotificationObserver { 38 public NotificationObserver {
40 public: 39 public:
41 TranslateManagerTest() {} 40 TranslateManagerTest() {}
42 41
43 // Simluates navigating to a page and getting the page contents and language 42 // Simluates navigating to a page and getting the page contents and language
44 // for that navigation. 43 // for that navigation.
45 void SimulateNavigation(const GURL& url, 44 void SimulateNavigation(const GURL& url, int page_id,
46 const std::string& contents, 45 const std::string& contents,
47 const std::string& lang, 46 const std::string& lang,
48 bool page_translatable) { 47 bool page_translatable) {
49 NavigateAndCommit(url); 48 NavigateAndCommit(url);
50 int page_id = RenderViewHostTestHarness::contents()->controller().
51 GetLastCommittedEntry()->page_id();
52 SimulateOnPageContents(url, page_id, contents, lang, page_translatable); 49 SimulateOnPageContents(url, page_id, contents, lang, page_translatable);
53 } 50 }
54 51
55 void SimulateOnPageContents(const GURL& url, int page_id, 52 void SimulateOnPageContents(const GURL& url, int page_id,
56 const std::string& contents, 53 const std::string& contents,
57 const std::string& lang, 54 const std::string& lang,
58 bool page_translatable) { 55 bool page_translatable) {
59 rvh()->TestOnMessageReceived(ViewHostMsg_PageContents(0, url, page_id, 56 rvh()->TestOnMessageReceived(ViewHostMsg_PageContents(0, url, page_id,
60 UTF8ToUTF16(contents), 57 UTF8ToUTF16(contents),
61 lang, 58 lang,
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 TestRenderViewContextMenu(TabContents* tab_contents, 272 TestRenderViewContextMenu(TabContents* tab_contents,
276 const ContextMenuParams& params) 273 const ContextMenuParams& params)
277 : RenderViewContextMenu(tab_contents, params) { 274 : RenderViewContextMenu(tab_contents, params) {
278 } 275 }
279 276
280 DISALLOW_COPY_AND_ASSIGN(TestRenderViewContextMenu); 277 DISALLOW_COPY_AND_ASSIGN(TestRenderViewContextMenu);
281 }; 278 };
282 279
283 TEST_F(TranslateManagerTest, NormalTranslate) { 280 TEST_F(TranslateManagerTest, NormalTranslate) {
284 // Simulate navigating to a page. 281 // Simulate navigating to a page.
285 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 282 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
286 283
287 // We should have an infobar. 284 // We should have an infobar.
288 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 285 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
289 ASSERT_TRUE(infobar != NULL); 286 ASSERT_TRUE(infobar != NULL);
290 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type()); 287 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type());
291 288
292 // Simulate clicking translate. 289 // Simulate clicking translate.
293 process()->sink().ClearMessages(); 290 process()->sink().ClearMessages();
294 infobar->Translate(); 291 infobar->Translate();
295 292
296 // The "Translating..." infobar should be showing. 293 // The "Translating..." infobar should be showing.
297 infobar = GetTranslateInfoBar(); 294 infobar = GetTranslateInfoBar();
298 ASSERT_TRUE(infobar != NULL); 295 ASSERT_TRUE(infobar != NULL);
299 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATING, infobar->type()); 296 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATING, infobar->type());
300 297
301 // Simulate the translate script being retrieved (it only needs to be done 298 // Simulate the translate script being retrieved (it only needs to be done
302 // once in the test as it is cached). 299 // once in the test as it is cached).
303 SimulateURLFetch(true); 300 SimulateURLFetch(true);
304 301
305 // Test that we sent the right message to the renderer. 302 // Test that we sent the right message to the renderer.
306 int page_id = 0; 303 int page_id = 0;
307 std::string original_lang, target_lang; 304 std::string original_lang, target_lang;
308 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 305 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
306 EXPECT_EQ(0, page_id);
309 EXPECT_EQ("fr", original_lang); 307 EXPECT_EQ("fr", original_lang);
310 EXPECT_EQ("en", target_lang); 308 EXPECT_EQ("en", target_lang);
311 309
312 // Simulate the render notifying the translation has been done. 310 // Simulate the render notifying the translation has been done.
313 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en", 311 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
314 TranslateErrors::NONE)); 312 TranslateErrors::NONE));
315 313
316 // The after translate infobar should be showing. 314 // The after translate infobar should be showing.
317 infobar = GetTranslateInfoBar(); 315 infobar = GetTranslateInfoBar();
318 ASSERT_TRUE(infobar != NULL); 316 ASSERT_TRUE(infobar != NULL);
319 EXPECT_EQ(TranslateInfoBarDelegate::AFTER_TRANSLATE, infobar->type()); 317 EXPECT_EQ(TranslateInfoBarDelegate::AFTER_TRANSLATE, infobar->type());
320 318
321 // Simulate changing the original language, this should trigger a translation. 319 // Simulate changing the original language, this should trigger a translation.
322 process()->sink().ClearMessages(); 320 process()->sink().ClearMessages();
323 std::string new_original_lang = infobar->GetLanguageCodeAt(0); 321 std::string new_original_lang = infobar->GetLanguageCodeAt(0);
324 infobar->SetOriginalLanguage(0); 322 infobar->SetOriginalLanguage(0);
325 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 323 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
324 EXPECT_EQ(0, page_id);
326 EXPECT_EQ(new_original_lang, original_lang); 325 EXPECT_EQ(new_original_lang, original_lang);
327 EXPECT_EQ("en", target_lang); 326 EXPECT_EQ("en", target_lang);
328 // Simulate the render notifying the translation has been done. 327 // Simulate the render notifying the translation has been done.
329 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, 328 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0,
330 new_original_lang, "en", TranslateErrors::NONE)); 329 new_original_lang, "en", TranslateErrors::NONE));
331 // infobar is now invalid. 330 // infobar is now invalid.
332 TranslateInfoBarDelegate* new_infobar = GetTranslateInfoBar(); 331 TranslateInfoBarDelegate* new_infobar = GetTranslateInfoBar();
333 ASSERT_TRUE(new_infobar != NULL); 332 ASSERT_TRUE(new_infobar != NULL);
334 infobar = new_infobar; 333 infobar = new_infobar;
335 334
336 // Simulate changing the target language, this should trigger a translation. 335 // Simulate changing the target language, this should trigger a translation.
337 process()->sink().ClearMessages(); 336 process()->sink().ClearMessages();
338 std::string new_target_lang = infobar->GetLanguageCodeAt(1); 337 std::string new_target_lang = infobar->GetLanguageCodeAt(1);
339 infobar->SetTargetLanguage(1); 338 infobar->SetTargetLanguage(1);
340 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 339 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
340 EXPECT_EQ(0, page_id);
341 EXPECT_EQ(new_original_lang, original_lang); 341 EXPECT_EQ(new_original_lang, original_lang);
342 EXPECT_EQ(new_target_lang, target_lang); 342 EXPECT_EQ(new_target_lang, target_lang);
343 // Simulate the render notifying the translation has been done. 343 // Simulate the render notifying the translation has been done.
344 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, 344 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0,
345 new_original_lang, new_target_lang, TranslateErrors::NONE)); 345 new_original_lang, new_target_lang, TranslateErrors::NONE));
346 // infobar is now invalid. 346 // infobar is now invalid.
347 new_infobar = GetTranslateInfoBar(); 347 new_infobar = GetTranslateInfoBar();
348 ASSERT_TRUE(new_infobar != NULL); 348 ASSERT_TRUE(new_infobar != NULL);
349 } 349 }
350 350
351 TEST_F(TranslateManagerTest, TranslateScriptNotAvailable) { 351 TEST_F(TranslateManagerTest, TranslateScriptNotAvailable) {
352 // Simulate navigating to a page. 352 // Simulate navigating to a page.
353 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 353 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
354 354
355 // We should have an infobar. 355 // We should have an infobar.
356 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 356 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
357 ASSERT_TRUE(infobar != NULL); 357 ASSERT_TRUE(infobar != NULL);
358 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type()); 358 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type());
359 359
360 // Simulate clicking translate. 360 // Simulate clicking translate.
361 process()->sink().ClearMessages(); 361 process()->sink().ClearMessages();
362 infobar->Translate(); 362 infobar->Translate();
363 // Simulate a failure retrieving the translate script. 363 // Simulate a failure retrieving the translate script.
364 SimulateURLFetch(false); 364 SimulateURLFetch(false);
365 365
366 // We should not have sent any message to translate to the renderer. 366 // We should not have sent any message to translate to the renderer.
367 EXPECT_FALSE(GetTranslateMessage(NULL, NULL, NULL)); 367 EXPECT_FALSE(GetTranslateMessage(NULL, NULL, NULL));
368 368
369 // And we should have an error infobar showing. 369 // And we should have an error infobar showing.
370 infobar = GetTranslateInfoBar(); 370 infobar = GetTranslateInfoBar();
371 ASSERT_TRUE(infobar != NULL); 371 ASSERT_TRUE(infobar != NULL);
372 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, infobar->type()); 372 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, infobar->type());
373 } 373 }
374 374
375 // Ensures we deal correctly with pages for which the browser does not recognize 375 // Ensures we deal correctly with pages for which the browser does not recognize
376 // the language (the translate server may or not detect the language). 376 // the language (the translate server may or not detect the language).
377 TEST_F(TranslateManagerTest, TranslateUnknownLanguage) { 377 TEST_F(TranslateManagerTest, TranslateUnknownLanguage) {
378 // Simulate navigating to a page ("und" is the string returned by the CLD for 378 // Simulate navigating to a page ("und" is the string returned by the CLD for
379 // languages it does not recognize). 379 // languages it does not recognize).
380 SimulateNavigation(GURL("http://www.google.mys"), "G00g1e", "und", true); 380 SimulateNavigation(GURL("http://www.google.mys"), 0, "G00g1e", "und", true);
381 381
382 // We should not have an infobar as we don't know the language. 382 // We should not have an infobar as we don't know the language.
383 ASSERT_TRUE(GetTranslateInfoBar() == NULL); 383 ASSERT_TRUE(GetTranslateInfoBar() == NULL);
384 384
385 // Translate the page anyway throught the context menu. 385 // Translate the page anyway throught the context menu.
386 scoped_ptr<TestRenderViewContextMenu> menu( 386 scoped_ptr<TestRenderViewContextMenu> menu(
387 TestRenderViewContextMenu::CreateContextMenu(contents())); 387 TestRenderViewContextMenu::CreateContextMenu(contents()));
388 menu->Init(); 388 menu->Init();
389 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE); 389 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE);
390 390
(...skipping 13 matching lines...) Expand all
404 404
405 // The after translate infobar should be showing. 405 // The after translate infobar should be showing.
406 infobar = GetTranslateInfoBar(); 406 infobar = GetTranslateInfoBar();
407 ASSERT_TRUE(infobar != NULL); 407 ASSERT_TRUE(infobar != NULL);
408 EXPECT_EQ(TranslateInfoBarDelegate::AFTER_TRANSLATE, infobar->type()); 408 EXPECT_EQ(TranslateInfoBarDelegate::AFTER_TRANSLATE, infobar->type());
409 EXPECT_EQ("fr", infobar->GetOriginalLanguageCode()); 409 EXPECT_EQ("fr", infobar->GetOriginalLanguageCode());
410 EXPECT_EQ("en", infobar->GetTargetLanguageCode()); 410 EXPECT_EQ("en", infobar->GetTargetLanguageCode());
411 411
412 // Let's run the same steps but this time the server detects the page is 412 // Let's run the same steps but this time the server detects the page is
413 // already in English. 413 // already in English.
414 SimulateNavigation(GURL("http://www.google.com"), "The Google", "und", true); 414 SimulateNavigation(GURL("http://www.google.com"), 1, "The Google", "und",
415 true);
415 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents())); 416 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents()));
416 menu->Init(); 417 menu->Init();
417 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE); 418 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE);
418 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(1, 0, "en", "en", 419 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(1, 0, "en", "en",
419 TranslateErrors::IDENTICAL_LANGUAGES)); 420 TranslateErrors::IDENTICAL_LANGUAGES));
420 infobar = GetTranslateInfoBar(); 421 infobar = GetTranslateInfoBar();
421 ASSERT_TRUE(infobar != NULL); 422 ASSERT_TRUE(infobar != NULL);
422 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, infobar->type()); 423 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, infobar->type());
423 EXPECT_EQ(TranslateErrors::IDENTICAL_LANGUAGES, infobar->error()); 424 EXPECT_EQ(TranslateErrors::IDENTICAL_LANGUAGES, infobar->error());
424 425
425 // Let's run the same steps again but this time the server fails to detect the 426 // Let's run the same steps again but this time the server fails to detect the
426 // page's language (it returns an empty string). 427 // page's language (it returns an empty string).
427 SimulateNavigation(GURL("http://www.google.com"), "The Google", "und", true); 428 SimulateNavigation(GURL("http://www.google.com"), 2, "The Google", "und",
429 true);
428 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents())); 430 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents()));
429 menu->Init(); 431 menu->Init();
430 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE); 432 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE);
431 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(2, 0, "", "en", 433 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(2, 0, "", "en",
432 TranslateErrors::UNKNOWN_LANGUAGE)); 434 TranslateErrors::UNKNOWN_LANGUAGE));
433 infobar = GetTranslateInfoBar(); 435 infobar = GetTranslateInfoBar();
434 ASSERT_TRUE(infobar != NULL); 436 ASSERT_TRUE(infobar != NULL);
435 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, infobar->type()); 437 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, infobar->type());
436 EXPECT_EQ(TranslateErrors::UNKNOWN_LANGUAGE, infobar->error()); 438 EXPECT_EQ(TranslateErrors::UNKNOWN_LANGUAGE, infobar->error());
437 } 439 }
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 504
503 // Close the info-bar if applicable. 505 // Close the info-bar if applicable.
504 if (infobar != NULL) 506 if (infobar != NULL)
505 EXPECT_TRUE(CloseTranslateInfoBar()); 507 EXPECT_TRUE(CloseTranslateInfoBar());
506 } 508 }
507 } 509 }
508 510
509 // Tests auto-translate on page. 511 // Tests auto-translate on page.
510 TEST_F(TranslateManagerTest, AutoTranslateOnNavigate) { 512 TEST_F(TranslateManagerTest, AutoTranslateOnNavigate) {
511 // Simulate navigating to a page and getting its language. 513 // Simulate navigating to a page and getting its language.
512 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 514 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
513 515
514 // Simulate the user translating. 516 // Simulate the user translating.
515 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 517 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
516 ASSERT_TRUE(infobar != NULL); 518 ASSERT_TRUE(infobar != NULL);
517 infobar->Translate(); 519 infobar->Translate();
518 SimulateURLFetch(true); // Simulate the translate script being retrieved. 520 SimulateURLFetch(true); // Simulate the translate script being retrieved.
519 521
520 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en", 522 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
521 TranslateErrors::NONE)); 523 TranslateErrors::NONE));
522 524
523 // Now navigate to a new page in the same language. 525 // Now navigate to a new page in the same language.
524 process()->sink().ClearMessages(); 526 process()->sink().ClearMessages();
525 SimulateNavigation(GURL("http://news.google.fr"), "Les news", "fr", true); 527 SimulateNavigation(GURL("http://news.google.fr"), 1, "Les news", "fr", true);
526 528
527 // This should have automatically triggered a translation. 529 // This should have automatically triggered a translation.
528 int page_id = 0; 530 int page_id = 0;
529 std::string original_lang, target_lang; 531 std::string original_lang, target_lang;
530 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 532 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
531 EXPECT_EQ(1, page_id); 533 EXPECT_EQ(1, page_id);
532 EXPECT_EQ("fr", original_lang); 534 EXPECT_EQ("fr", original_lang);
533 EXPECT_EQ("en", target_lang); 535 EXPECT_EQ("en", target_lang);
534 536
535 // Now navigate to a page in a different language. 537 // Now navigate to a page in a different language.
536 process()->sink().ClearMessages(); 538 process()->sink().ClearMessages();
537 SimulateNavigation(GURL("http://news.google.es"), "Las news", "es", true); 539 SimulateNavigation(GURL("http://news.google.es"), 1, "Las news", "es", true);
538 540
539 // This should not have triggered a translate. 541 // This should not have triggered a translate.
540 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 542 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
541 } 543 }
542 544
543 // Tests that multiple OnPageContents do not cause multiple infobars. 545 // Tests that multiple OnPageContents do not cause multiple infobars.
544 TEST_F(TranslateManagerTest, MultipleOnPageContents) { 546 TEST_F(TranslateManagerTest, MultipleOnPageContents) {
545 // Simulate navigating to a page and getting its language. 547 // Simulate navigating to a page and getting its language.
546 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 548 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
547 549
548 // Simulate clicking 'Nope' (don't translate). 550 // Simulate clicking 'Nope' (don't translate).
549 EXPECT_TRUE(DenyTranslation()); 551 EXPECT_TRUE(DenyTranslation());
550 EXPECT_EQ(0, contents()->infobar_delegate_count()); 552 EXPECT_EQ(0, contents()->infobar_delegate_count());
551 553
552 // Send a new PageContents, we should not show an infobar. 554 // Send a new PageContents, we should not show an infobar.
553 SimulateOnPageContents(GURL("http://www.google.fr"), 0, "Le Google", "fr", 555 SimulateOnPageContents(GURL("http://www.google.fr"), 0, "Le Google", "fr",
554 true); 556 true);
555 EXPECT_EQ(0, contents()->infobar_delegate_count()); 557 EXPECT_EQ(0, contents()->infobar_delegate_count());
556 558
557 // Do the same steps but simulate closing the infobar this time. 559 // Do the same steps but simulate closing the infobar this time.
558 SimulateNavigation(GURL("http://www.youtube.fr"), "Le YouTube", "fr", 560 SimulateNavigation(GURL("http://www.youtube.fr"), 1, "Le YouTube", "fr",
559 true); 561 true);
560 EXPECT_TRUE(CloseTranslateInfoBar()); 562 EXPECT_TRUE(CloseTranslateInfoBar());
561 EXPECT_EQ(0, contents()->infobar_delegate_count()); 563 EXPECT_EQ(0, contents()->infobar_delegate_count());
562 SimulateOnPageContents(GURL("http://www.youtube.fr"), 1, "Le YouTube", "fr", 564 SimulateOnPageContents(GURL("http://www.youtube.fr"), 1, "Le YouTube", "fr",
563 true); 565 true);
564 EXPECT_EQ(0, contents()->infobar_delegate_count()); 566 EXPECT_EQ(0, contents()->infobar_delegate_count());
565 } 567 }
566 568
567 // Test that reloading the page brings back the infobar. 569 // Test that reloading the page brings back the infobar.
568 TEST_F(TranslateManagerTest, Reload) { 570 TEST_F(TranslateManagerTest, Reload) {
569 // Simulate navigating to a page and getting its language. 571 // Simulate navigating to a page and getting its language.
570 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 572 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
571 573
572 // Close the infobar. 574 // Close the infobar.
573 EXPECT_TRUE(CloseTranslateInfoBar()); 575 EXPECT_TRUE(CloseTranslateInfoBar());
574 576
575 // Reload should bring back the infobar. 577 // Reload should bring back the infobar.
576 NavEntryCommittedObserver nav_observer(contents()); 578 NavEntryCommittedObserver nav_observer(contents());
577 Reload(); 579 Reload();
578 580
579 // Ensures it is really handled a reload. 581 // Ensures it is really handled a reload.
580 const NavigationController::LoadCommittedDetails& nav_details = 582 const NavigationController::LoadCommittedDetails& nav_details =
581 nav_observer.get_load_commited_details(); 583 nav_observer.get_load_commited_details();
582 EXPECT_TRUE(nav_details.entry != NULL); // There was a navigation. 584 EXPECT_TRUE(nav_details.entry != NULL); // There was a navigation.
583 EXPECT_EQ(NavigationType::EXISTING_PAGE, nav_details.type); 585 EXPECT_EQ(NavigationType::EXISTING_PAGE, nav_details.type);
584 586
585 // The TranslateManager class processes the navigation entry committed 587 // The TranslateManager class processes the navigation entry committed
586 // notification in a posted task; process that task. 588 // notification in a posted task; process that task.
587 MessageLoop::current()->RunAllPending(); 589 MessageLoop::current()->RunAllPending();
588 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 590 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
589 } 591 }
590 592
591 // Test that reloading the page by way of typing again the URL in the 593 // Test that reloading the page by way of typing again the URL in the
592 // location bar brings back the infobar. 594 // location bar brings back the infobar.
593 TEST_F(TranslateManagerTest, ReloadFromLocationBar) { 595 TEST_F(TranslateManagerTest, ReloadFromLocationBar) {
594 GURL url("http://www.google.fr"); 596 GURL url("http://www.google.fr");
595 597
596 // Simulate navigating to a page and getting its language. 598 // Simulate navigating to a page and getting its language.
597 SimulateNavigation(url, "Le Google", "fr", true); 599 SimulateNavigation(url, 0, "Le Google", "fr", true);
598 600
599 // Close the infobar. 601 // Close the infobar.
600 EXPECT_TRUE(CloseTranslateInfoBar()); 602 EXPECT_TRUE(CloseTranslateInfoBar());
601 603
602 // Create a pending navigation and simulate a page load. That should be the 604 // Create a pending navigation and simulate a page load. That should be the
603 // equivalent of typing the URL again in the location bar. 605 // equivalent of typing the URL again in the location bar.
604 NavEntryCommittedObserver nav_observer(contents()); 606 NavEntryCommittedObserver nav_observer(contents());
605 contents()->controller().LoadURL(url, GURL(), PageTransition::TYPED); 607 contents()->controller().LoadURL(url, GURL(), PageTransition::TYPED);
606 rvh()->SendNavigate(0, url); 608 rvh()->SendNavigate(0, url);
607 609
608 // Test that we are really getting a same page navigation, the test would be 610 // Test that we are really getting a same page navigation, the test would be
609 // useless if it was not the case. 611 // useless if it was not the case.
610 const NavigationController::LoadCommittedDetails& nav_details = 612 const NavigationController::LoadCommittedDetails& nav_details =
611 nav_observer.get_load_commited_details(); 613 nav_observer.get_load_commited_details();
612 EXPECT_TRUE(nav_details.entry != NULL); // There was a navigation. 614 EXPECT_TRUE(nav_details.entry != NULL); // There was a navigation.
613 EXPECT_EQ(NavigationType::SAME_PAGE, nav_details.type); 615 EXPECT_EQ(NavigationType::SAME_PAGE, nav_details.type);
614 616
615 // The TranslateManager class processes the navigation entry committed 617 // The TranslateManager class processes the navigation entry committed
616 // notification in a posted task; process that task. 618 // notification in a posted task; process that task.
617 MessageLoop::current()->RunAllPending(); 619 MessageLoop::current()->RunAllPending();
618 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 620 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
619 } 621 }
620 622
621 // Tests that a closed translate infobar does not reappear when navigating 623 // Tests that a closed translate infobar does not reappear when navigating
622 // in-page. 624 // in-page.
623 TEST_F(TranslateManagerTest, CloseInfoBarInPageNavigation) { 625 TEST_F(TranslateManagerTest, CloseInfoBarInPageNavigation) {
624 // Simulate navigating to a page and getting its language. 626 // Simulate navigating to a page and getting its language.
625 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 627 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
626 628
627 // Close the infobar. 629 // Close the infobar.
628 EXPECT_TRUE(CloseTranslateInfoBar()); 630 EXPECT_TRUE(CloseTranslateInfoBar());
629 631
630 // Navigate in page, no infobar should be shown. 632 // Navigate in page, no infobar should be shown.
631 SimulateNavigation(GURL("http://www.google.fr/#ref1"), "Le Google", "fr", 633 SimulateNavigation(GURL("http://www.google.fr/#ref1"), 0, "Le Google", "fr",
632 true); 634 true);
633 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 635 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
634 636
635 // Navigate out of page, a new infobar should show. 637 // Navigate out of page, a new infobar should show.
636 SimulateNavigation(GURL("http://www.google.fr/foot"), "Le Google", "fr", 638 SimulateNavigation(GURL("http://www.google.fr/foot"), 0, "Le Google", "fr",
637 true); 639 true);
638 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 640 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
639 } 641 }
640 642
641 // Tests that a closed translate infobar does not reappear when navigating 643 // Tests that a closed translate infobar does not reappear when navigating
642 // in a subframe. (http://crbug.com/48215) 644 // in a subframe. (http://crbug.com/48215)
643 TEST_F(TranslateManagerTest, CloseInfoBarInSubframeNavigation) { 645 TEST_F(TranslateManagerTest, CloseInfoBarInSubframeNavigation) {
644 // Simulate navigating to a page and getting its language. 646 // Simulate navigating to a page and getting its language.
645 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 647 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
646 648
647 // Close the infobar. 649 // Close the infobar.
648 EXPECT_TRUE(CloseTranslateInfoBar()); 650 EXPECT_TRUE(CloseTranslateInfoBar());
649 651
650 // Simulate a sub-frame auto-navigating. 652 // Simulate a sub-frame auto-navigating.
651 rvh()->SendNavigateWithTransition(1, GURL("http://pub.com"), 653 rvh()->SendNavigateWithTransition(1, GURL("http://pub.com"),
652 PageTransition::AUTO_SUBFRAME); 654 PageTransition::AUTO_SUBFRAME);
653 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 655 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
654 656
655 // Simulate the user navigating in a sub-frame. 657 // Simulate the user navigating in a sub-frame.
656 rvh()->SendNavigateWithTransition(2, GURL("http://pub.com"), 658 rvh()->SendNavigateWithTransition(2, GURL("http://pub.com"),
657 PageTransition::MANUAL_SUBFRAME); 659 PageTransition::MANUAL_SUBFRAME);
658 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 660 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
659 661
660 // Navigate out of page, a new infobar should show. 662 // Navigate out of page, a new infobar should show.
661 SimulateNavigation(GURL("http://www.google.fr/foot"), "Le Google", "fr", 663 SimulateNavigation(GURL("http://www.google.fr/foot"), 3, "Le Google", "fr",
662 true); 664 true);
663 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 665 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
664 } 666 }
665 667
666 668
667 669
668 // Tests that denying translation is sticky when navigating in page. 670 // Tests that denying translation is sticky when navigating in page.
669 TEST_F(TranslateManagerTest, DenyTranslateInPageNavigation) { 671 TEST_F(TranslateManagerTest, DenyTranslateInPageNavigation) {
670 // Simulate navigating to a page and getting its language. 672 // Simulate navigating to a page and getting its language.
671 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 673 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
672 674
673 // Simulate clicking 'Nope' (don't translate). 675 // Simulate clicking 'Nope' (don't translate).
674 EXPECT_TRUE(DenyTranslation()); 676 EXPECT_TRUE(DenyTranslation());
675 677
676 // Navigate in page, no infobar should be shown. 678 // Navigate in page, no infobar should be shown.
677 SimulateNavigation(GURL("http://www.google.fr/#ref1"), "Le Google", "fr", 679 SimulateNavigation(GURL("http://www.google.fr/#ref1"), 0, "Le Google", "fr",
678 true); 680 true);
679 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 681 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
680 682
681 // Navigate out of page, a new infobar should show. 683 // Navigate out of page, a new infobar should show.
682 SimulateNavigation(GURL("http://www.google.fr/foot"), "Le Google", "fr", 684 SimulateNavigation(GURL("http://www.google.fr/foot"), 0, "Le Google", "fr",
683 true); 685 true);
684 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 686 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
685 } 687 }
686 688
687 // Tests that after translating and closing the infobar, the infobar does not 689 // Tests that after translating and closing the infobar, the infobar does not
688 // return when navigating in page. 690 // return when navigating in page.
689 TEST_F(TranslateManagerTest, TranslateCloseInfoBarInPageNavigation) { 691 TEST_F(TranslateManagerTest, TranslateCloseInfoBarInPageNavigation) {
690 // Simulate navigating to a page and getting its language. 692 // Simulate navigating to a page and getting its language.
691 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 693 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
692 694
693 // Simulate the user translating. 695 // Simulate the user translating.
694 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 696 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
695 ASSERT_TRUE(infobar != NULL); 697 ASSERT_TRUE(infobar != NULL);
696 infobar->Translate(); 698 infobar->Translate();
697 SimulateURLFetch(true); // Simulate the translate script being retrieved. 699 SimulateURLFetch(true); // Simulate the translate script being retrieved.
698 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en", 700 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
699 TranslateErrors::NONE)); 701 TranslateErrors::NONE));
700 702
701 // Close the infobar. 703 // Close the infobar.
702 EXPECT_TRUE(CloseTranslateInfoBar()); 704 EXPECT_TRUE(CloseTranslateInfoBar());
703 705
704 // Navigate in page, no infobar should be shown. 706 // Navigate in page, no infobar should be shown.
705 SimulateNavigation(GURL("http://www.google.fr/#ref1"), "Le Google", "fr", 707 SimulateNavigation(GURL("http://www.google.fr/#ref1"), 0, "Le Google", "fr",
706 true); 708 true);
707 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 709 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
708 710
709 // Navigate out of page, a new infobar should show. 711 // Navigate out of page, a new infobar should show.
710 // Note that we navigate to a page in a different language so we don't trigger 712 // Note that we navigate to a page in a different language so we don't trigger
711 // the auto-translate feature (it would translate the page automatically and 713 // the auto-translate feature (it would translate the page automatically and
712 // the before translate inforbar would not be shown). 714 // the before translate inforbar would not be shown).
713 SimulateNavigation(GURL("http://www.google.de"), "Das Google", "de", true); 715 SimulateNavigation(GURL("http://www.google.de"), 0, "Das Google", "de", true);
714 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 716 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
715 } 717 }
716 718
717 // Tests that the after translate the infobar still shows when navigating 719 // Tests that the after translate the infobar still shows when navigating
718 // in-page. 720 // in-page.
719 TEST_F(TranslateManagerTest, TranslateInPageNavigation) { 721 TEST_F(TranslateManagerTest, TranslateInPageNavigation) {
720 // Simulate navigating to a page and getting its language. 722 // Simulate navigating to a page and getting its language.
721 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 723 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
722 724
723 // Simulate the user translating. 725 // Simulate the user translating.
724 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 726 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
725 ASSERT_TRUE(infobar != NULL); 727 ASSERT_TRUE(infobar != NULL);
726 infobar->Translate(); 728 infobar->Translate();
727 SimulateURLFetch(true); // Simulate the translate script being retrieved. 729 SimulateURLFetch(true); // Simulate the translate script being retrieved.
728 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en", 730 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
729 TranslateErrors::NONE)); 731 TranslateErrors::NONE));
730 // The after translate infobar is showing. 732 // The after translate infobar is showing.
731 infobar = GetTranslateInfoBar(); 733 infobar = GetTranslateInfoBar();
732 ASSERT_TRUE(infobar != NULL); 734 ASSERT_TRUE(infobar != NULL);
733 735
734 // Navigate in page, the same infobar should still be shown. 736 // Navigate in page, the same infobar should still be shown.
735 ClearRemovedInfoBars(); 737 ClearRemovedInfoBars();
736 SimulateNavigation(GURL("http://www.google.fr/#ref1"), "Le Google", "fr", 738 SimulateNavigation(GURL("http://www.google.fr/#ref1"), 0, "Le Google", "fr",
737 true); 739 true);
738 EXPECT_FALSE(InfoBarRemoved()); 740 EXPECT_FALSE(InfoBarRemoved());
739 EXPECT_EQ(infobar, GetTranslateInfoBar()); 741 EXPECT_EQ(infobar, GetTranslateInfoBar());
740 742
741 // Navigate out of page, a new infobar should show. 743 // Navigate out of page, a new infobar should show.
742 // See note in TranslateCloseInfoBarInPageNavigation test on why it is 744 // See note in TranslateCloseInfoBarInPageNavigation test on why it is
743 // important to navigate to a page in a different language for this test. 745 // important to navigate to a page in a different language for this test.
744 SimulateNavigation(GURL("http://www.google.de"), "Das Google", "de", true); 746 SimulateNavigation(GURL("http://www.google.de"), 0, "Das Google", "de", true);
745 // The old infobar is gone. 747 // The old infobar is gone.
746 EXPECT_TRUE(CheckInfoBarRemovedAndReset(infobar)); 748 EXPECT_TRUE(CheckInfoBarRemovedAndReset(infobar));
747 // And there is a new one. 749 // And there is a new one.
748 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 750 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
749 } 751 }
750 752
751 // Tests that no translate infobar is shown when navigating to a page in an 753 // Tests that no translate infobar is shown when navigating to a page in an
752 // unsupported language. 754 // unsupported language.
753 TEST_F(TranslateManagerTest, CLDReportsUnsupportedPageLanguage) { 755 TEST_F(TranslateManagerTest, CLDReportsUnsupportedPageLanguage) {
754 // Simulate navigating to a page and getting an unsupported language. 756 // Simulate navigating to a page and getting an unsupported language.
755 SimulateNavigation(GURL("http://www.google.com"), "Google", "qbz", true); 757 SimulateNavigation(GURL("http://www.google.com"), 0, "Google", "qbz", true);
756 758
757 // No info-bar should be shown. 759 // No info-bar should be shown.
758 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 760 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
759 } 761 }
760 762
761 // Tests that we deal correctly with unsupported languages returned by the 763 // Tests that we deal correctly with unsupported languages returned by the
762 // server. 764 // server.
763 // The translation server might return a language we don't support. 765 // The translation server might return a language we don't support.
764 TEST_F(TranslateManagerTest, ServerReportsUnsupportedLanguage) { 766 TEST_F(TranslateManagerTest, ServerReportsUnsupportedLanguage) {
765 // Simulate navigating to a page and translating it. 767 // Simulate navigating to a page and translating it.
766 SimulateNavigation(GURL("http://mail.google.fr"), "Le Google", "fr", true); 768 SimulateNavigation(GURL("http://mail.google.fr"), 0, "Le Google", "fr",
769 true);
767 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 770 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
768 ASSERT_TRUE(infobar != NULL); 771 ASSERT_TRUE(infobar != NULL);
769 process()->sink().ClearMessages(); 772 process()->sink().ClearMessages();
770 infobar->Translate(); 773 infobar->Translate();
771 SimulateURLFetch(true); 774 SimulateURLFetch(true);
772 // Simulate the render notifying the translation has been done, but it 775 // Simulate the render notifying the translation has been done, but it
773 // reports a language we don't support. 776 // reports a language we don't support.
774 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "qbz", "en", 777 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "qbz", "en",
775 TranslateErrors::NONE)); 778 TranslateErrors::NONE));
776 779
(...skipping 19 matching lines...) Expand all
796 // Tests that no translate infobar is shown when Chrome is in a language that 799 // Tests that no translate infobar is shown when Chrome is in a language that
797 // the translate server does not support. 800 // the translate server does not support.
798 TEST_F(TranslateManagerTest, UnsupportedUILanguage) { 801 TEST_F(TranslateManagerTest, UnsupportedUILanguage) {
799 TestingBrowserProcess* browser_process = 802 TestingBrowserProcess* browser_process =
800 static_cast<TestingBrowserProcess*>(g_browser_process); 803 static_cast<TestingBrowserProcess*>(g_browser_process);
801 std::string original_lang = browser_process->GetApplicationLocale(); 804 std::string original_lang = browser_process->GetApplicationLocale();
802 browser_process->SetApplicationLocale("qbz"); 805 browser_process->SetApplicationLocale("qbz");
803 806
804 // Simulate navigating to a page in a language supported by the translate 807 // Simulate navigating to a page in a language supported by the translate
805 // server. 808 // server.
806 SimulateNavigation(GURL("http://www.google.com"), "Google", "en", true); 809 SimulateNavigation(GURL("http://www.google.com"), 0, "Google", "en", true);
807 810
808 // No info-bar should be shown. 811 // No info-bar should be shown.
809 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 812 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
810 813
811 browser_process->SetApplicationLocale(original_lang); 814 browser_process->SetApplicationLocale(original_lang);
812 } 815 }
813 816
814 // Tests that the translate enabled preference is honored. 817 // Tests that the translate enabled preference is honored.
815 TEST_F(TranslateManagerTest, TranslateEnabledPref) { 818 TEST_F(TranslateManagerTest, TranslateEnabledPref) {
816 // Make sure the pref allows translate. 819 // Make sure the pref allows translate.
817 PrefService* prefs = contents()->profile()->GetPrefs(); 820 PrefService* prefs = contents()->profile()->GetPrefs();
818 prefs->SetBoolean(prefs::kEnableTranslate, true); 821 prefs->SetBoolean(prefs::kEnableTranslate, true);
819 822
820 // Simulate navigating to a page and getting its language. 823 // Simulate navigating to a page and getting its language.
821 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 824 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
822 825
823 // An infobar should be shown. 826 // An infobar should be shown.
824 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 827 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
825 EXPECT_TRUE(infobar != NULL); 828 EXPECT_TRUE(infobar != NULL);
826 829
827 // Disable translate. 830 // Disable translate.
828 prefs->SetBoolean(prefs::kEnableTranslate, false); 831 prefs->SetBoolean(prefs::kEnableTranslate, false);
829 832
830 // Navigate to a new page, that should close the previous infobar. 833 // Navigate to a new page, that should close the previous infobar.
831 GURL url("http://www.youtube.fr"); 834 GURL url("http://www.youtube.fr");
832 NavigateAndCommit(url); 835 NavigateAndCommit(url);
833 infobar = GetTranslateInfoBar(); 836 infobar = GetTranslateInfoBar();
834 EXPECT_TRUE(infobar == NULL); 837 EXPECT_TRUE(infobar == NULL);
835 838
836 // Simulate getting the page contents and language, that should not trigger 839 // Simulate getting the page contents and language, that should not trigger
837 // a translate infobar. 840 // a translate infobar.
838 SimulateOnPageContents(url, 1, "Le YouTube", "fr", true); 841 SimulateOnPageContents(url, 1, "Le YouTube", "fr", true);
839 infobar = GetTranslateInfoBar(); 842 infobar = GetTranslateInfoBar();
840 EXPECT_TRUE(infobar == NULL); 843 EXPECT_TRUE(infobar == NULL);
841 } 844 }
842 845
843 // Tests the "Never translate <language>" pref. 846 // Tests the "Never translate <language>" pref.
844 TEST_F(TranslateManagerTest, NeverTranslateLanguagePref) { 847 TEST_F(TranslateManagerTest, NeverTranslateLanguagePref) {
845 // Simulate navigating to a page and getting its language. 848 // Simulate navigating to a page and getting its language.
846 GURL url("http://www.google.fr"); 849 GURL url("http://www.google.fr");
847 SimulateNavigation(url, "Le Google", "fr", true); 850 SimulateNavigation(url, 0, "Le Google", "fr", true);
848 851
849 // An infobar should be shown. 852 // An infobar should be shown.
850 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 853 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
851 854
852 // Select never translate this language. 855 // Select never translate this language.
853 PrefService* prefs = contents()->profile()->GetPrefs(); 856 PrefService* prefs = contents()->profile()->GetPrefs();
854 prefs->AddPrefObserver(TranslatePrefs::kPrefTranslateLanguageBlacklist, 857 prefs->AddPrefObserver(TranslatePrefs::kPrefTranslateLanguageBlacklist,
855 &pref_observer_); 858 &pref_observer_);
856 TranslatePrefs translate_prefs(prefs); 859 TranslatePrefs translate_prefs(prefs);
857 EXPECT_FALSE(translate_prefs.IsLanguageBlacklisted("fr")); 860 EXPECT_FALSE(translate_prefs.IsLanguageBlacklisted("fr"));
858 EXPECT_TRUE(translate_prefs.CanTranslate(prefs, "fr", url)); 861 EXPECT_TRUE(translate_prefs.CanTranslate(prefs, "fr", url));
859 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateLanguageBlacklist); 862 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateLanguageBlacklist);
860 translate_prefs.BlacklistLanguage("fr"); 863 translate_prefs.BlacklistLanguage("fr");
861 EXPECT_TRUE(translate_prefs.IsLanguageBlacklisted("fr")); 864 EXPECT_TRUE(translate_prefs.IsLanguageBlacklisted("fr"));
862 EXPECT_FALSE(translate_prefs.CanTranslate(prefs, "fr", url)); 865 EXPECT_FALSE(translate_prefs.CanTranslate(prefs, "fr", url));
863 866
864 // Close the infobar. 867 // Close the infobar.
865 EXPECT_TRUE(CloseTranslateInfoBar()); 868 EXPECT_TRUE(CloseTranslateInfoBar());
866 869
867 // Navigate to a new page also in French. 870 // Navigate to a new page also in French.
868 SimulateNavigation(GURL("http://wwww.youtube.fr"), "Le YouTube", "fr", true); 871 SimulateNavigation(GURL("http://wwww.youtube.fr"), 1, "Le YouTube", "fr",
872 true);
869 873
870 // There should not be a translate infobar. 874 // There should not be a translate infobar.
871 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 875 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
872 876
873 // Remove the language from the blacklist. 877 // Remove the language from the blacklist.
874 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateLanguageBlacklist); 878 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateLanguageBlacklist);
875 translate_prefs.RemoveLanguageFromBlacklist("fr"); 879 translate_prefs.RemoveLanguageFromBlacklist("fr");
876 EXPECT_FALSE(translate_prefs.IsLanguageBlacklisted("fr")); 880 EXPECT_FALSE(translate_prefs.IsLanguageBlacklisted("fr"));
877 EXPECT_TRUE(translate_prefs.CanTranslate(prefs, "fr", url)); 881 EXPECT_TRUE(translate_prefs.CanTranslate(prefs, "fr", url));
878 882
879 // Navigate to a page in French. 883 // Navigate to a page in French.
880 SimulateNavigation(url, "Le Google", "fr", true); 884 SimulateNavigation(url, 2, "Le Google", "fr", true);
881 885
882 // There should be a translate infobar. 886 // There should be a translate infobar.
883 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 887 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
884 prefs->RemovePrefObserver(TranslatePrefs::kPrefTranslateLanguageBlacklist, 888 prefs->RemovePrefObserver(TranslatePrefs::kPrefTranslateLanguageBlacklist,
885 &pref_observer_); 889 &pref_observer_);
886 } 890 }
887 891
888 // Tests the "Never translate this site" pref. 892 // Tests the "Never translate this site" pref.
889 TEST_F(TranslateManagerTest, NeverTranslateSitePref) { 893 TEST_F(TranslateManagerTest, NeverTranslateSitePref) {
890 // Simulate navigating to a page and getting its language. 894 // Simulate navigating to a page and getting its language.
891 GURL url("http://www.google.fr"); 895 GURL url("http://www.google.fr");
892 std::string host(url.host()); 896 std::string host(url.host());
893 SimulateNavigation(url, "Le Google", "fr", true); 897 SimulateNavigation(url, 0, "Le Google", "fr", true);
894 898
895 // An infobar should be shown. 899 // An infobar should be shown.
896 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 900 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
897 901
898 // Select never translate this site. 902 // Select never translate this site.
899 PrefService* prefs = contents()->profile()->GetPrefs(); 903 PrefService* prefs = contents()->profile()->GetPrefs();
900 prefs->AddPrefObserver(TranslatePrefs::kPrefTranslateSiteBlacklist, 904 prefs->AddPrefObserver(TranslatePrefs::kPrefTranslateSiteBlacklist,
901 &pref_observer_); 905 &pref_observer_);
902 TranslatePrefs translate_prefs(prefs); 906 TranslatePrefs translate_prefs(prefs);
903 EXPECT_FALSE(translate_prefs.IsSiteBlacklisted(host)); 907 EXPECT_FALSE(translate_prefs.IsSiteBlacklisted(host));
904 EXPECT_TRUE(translate_prefs.CanTranslate(prefs, "fr", url)); 908 EXPECT_TRUE(translate_prefs.CanTranslate(prefs, "fr", url));
905 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateSiteBlacklist); 909 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateSiteBlacklist);
906 translate_prefs.BlacklistSite(host); 910 translate_prefs.BlacklistSite(host);
907 EXPECT_TRUE(translate_prefs.IsSiteBlacklisted(host)); 911 EXPECT_TRUE(translate_prefs.IsSiteBlacklisted(host));
908 EXPECT_FALSE(translate_prefs.CanTranslate(prefs, "fr", url)); 912 EXPECT_FALSE(translate_prefs.CanTranslate(prefs, "fr", url));
909 913
910 // Close the infobar. 914 // Close the infobar.
911 EXPECT_TRUE(CloseTranslateInfoBar()); 915 EXPECT_TRUE(CloseTranslateInfoBar());
912 916
913 // Navigate to a new page also on the same site. 917 // Navigate to a new page also on the same site.
914 SimulateNavigation(GURL("http://www.google.fr/hello"), "Bonjour", "fr", true); 918 SimulateNavigation(GURL("http://www.google.fr/hello"), 1, "Bonjour", "fr",
919 true);
915 920
916 // There should not be a translate infobar. 921 // There should not be a translate infobar.
917 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 922 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
918 923
919 // Remove the site from the blacklist. 924 // Remove the site from the blacklist.
920 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateSiteBlacklist); 925 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateSiteBlacklist);
921 translate_prefs.RemoveSiteFromBlacklist(host); 926 translate_prefs.RemoveSiteFromBlacklist(host);
922 EXPECT_FALSE(translate_prefs.IsSiteBlacklisted(host)); 927 EXPECT_FALSE(translate_prefs.IsSiteBlacklisted(host));
923 EXPECT_TRUE(translate_prefs.CanTranslate(prefs, "fr", url)); 928 EXPECT_TRUE(translate_prefs.CanTranslate(prefs, "fr", url));
924 929
925 // Navigate to a page in French. 930 // Navigate to a page in French.
926 SimulateNavigation(url, "Le Google", "fr", true); 931 SimulateNavigation(url, 0, "Le Google", "fr", true);
927 932
928 // There should be a translate infobar. 933 // There should be a translate infobar.
929 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 934 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
930 prefs->RemovePrefObserver(TranslatePrefs::kPrefTranslateSiteBlacklist, 935 prefs->RemovePrefObserver(TranslatePrefs::kPrefTranslateSiteBlacklist,
931 &pref_observer_); 936 &pref_observer_);
932 } 937 }
933 938
934 // Tests the "Always translate this language" pref. 939 // Tests the "Always translate this language" pref.
935 TEST_F(TranslateManagerTest, AlwaysTranslateLanguagePref) { 940 TEST_F(TranslateManagerTest, AlwaysTranslateLanguagePref) {
936 // Select always translate French to English. 941 // Select always translate French to English.
937 PrefService* prefs = contents()->profile()->GetPrefs(); 942 PrefService* prefs = contents()->profile()->GetPrefs();
938 prefs->AddPrefObserver(TranslatePrefs::kPrefTranslateWhitelists, 943 prefs->AddPrefObserver(TranslatePrefs::kPrefTranslateWhitelists,
939 &pref_observer_); 944 &pref_observer_);
940 TranslatePrefs translate_prefs(prefs); 945 TranslatePrefs translate_prefs(prefs);
941 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateWhitelists); 946 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateWhitelists);
942 translate_prefs.WhitelistLanguagePair("fr", "en"); 947 translate_prefs.WhitelistLanguagePair("fr", "en");
943 948
944 // Load a page in French. 949 // Load a page in French.
945 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 950 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
946 951
947 // It should have triggered an automatic translation to English. 952 // It should have triggered an automatic translation to English.
948 953
949 // The translating infobar should be showing. 954 // The translating infobar should be showing.
950 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 955 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
951 ASSERT_TRUE(infobar != NULL); 956 ASSERT_TRUE(infobar != NULL);
952 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATING, infobar->type()); 957 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATING, infobar->type());
953 958
954 SimulateURLFetch(true); // Simulate the translate script being retrieved. 959 SimulateURLFetch(true); // Simulate the translate script being retrieved.
955 int page_id = 0; 960 int page_id = 0;
956 std::string original_lang, target_lang; 961 std::string original_lang, target_lang;
957 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 962 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
963 EXPECT_EQ(0, page_id);
958 EXPECT_EQ("fr", original_lang); 964 EXPECT_EQ("fr", original_lang);
959 EXPECT_EQ("en", target_lang); 965 EXPECT_EQ("en", target_lang);
960 process()->sink().ClearMessages(); 966 process()->sink().ClearMessages();
961 967
962 // Try another language, it should not be autotranslated. 968 // Try another language, it should not be autotranslated.
963 SimulateNavigation(GURL("http://www.google.es"), "El Google", "es", true); 969 SimulateNavigation(GURL("http://www.google.es"), 1, "El Google", "es", true);
964 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 970 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
965 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 971 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
966 EXPECT_TRUE(CloseTranslateInfoBar()); 972 EXPECT_TRUE(CloseTranslateInfoBar());
967 973
968 // Let's switch to incognito mode, it should not be autotranslated in that 974 // Let's switch to incognito mode, it should not be autotranslated in that
969 // case either. 975 // case either.
970 TestingProfile* test_profile = 976 TestingProfile* test_profile =
971 static_cast<TestingProfile*>(contents()->profile()); 977 static_cast<TestingProfile*>(contents()->profile());
972 test_profile->set_off_the_record(true); 978 test_profile->set_off_the_record(true);
973 SimulateNavigation(GURL("http://www.youtube.fr"), "Le YouTube", "fr", true); 979 SimulateNavigation(GURL("http://www.youtube.fr"), 2, "Le YouTube", "fr",
980 true);
974 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 981 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
975 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 982 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
976 EXPECT_TRUE(CloseTranslateInfoBar()); 983 EXPECT_TRUE(CloseTranslateInfoBar());
977 test_profile->set_off_the_record(false); // Get back to non incognito. 984 test_profile->set_off_the_record(false); // Get back to non incognito.
978 985
979 // Now revert the always translate pref and make sure we go back to expected 986 // Now revert the always translate pref and make sure we go back to expected
980 // behavior, which is show a "before translate" infobar. 987 // behavior, which is show a "before translate" infobar.
981 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateWhitelists); 988 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateWhitelists);
982 translate_prefs.RemoveLanguagePairFromWhitelist("fr", "en"); 989 translate_prefs.RemoveLanguagePairFromWhitelist("fr", "en");
983 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 990 SimulateNavigation(GURL("http://www.google.fr"), 3, "Le Google", "fr", true);
984 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 991 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
985 infobar = GetTranslateInfoBar(); 992 infobar = GetTranslateInfoBar();
986 ASSERT_TRUE(infobar != NULL); 993 ASSERT_TRUE(infobar != NULL);
987 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type()); 994 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type());
988 prefs->RemovePrefObserver(TranslatePrefs::kPrefTranslateWhitelists, 995 prefs->RemovePrefObserver(TranslatePrefs::kPrefTranslateWhitelists,
989 &pref_observer_); 996 &pref_observer_);
990 } 997 }
991 998
992 // Context menu. 999 // Context menu.
993 TEST_F(TranslateManagerTest, ContextMenu) { 1000 TEST_F(TranslateManagerTest, ContextMenu) {
(...skipping 26 matching lines...) Expand all
1020 1027
1021 // That should have triggered a translation. 1028 // That should have triggered a translation.
1022 // The "translating..." infobar should be showing. 1029 // The "translating..." infobar should be showing.
1023 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1030 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1024 ASSERT_TRUE(infobar != NULL); 1031 ASSERT_TRUE(infobar != NULL);
1025 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATING, infobar->type()); 1032 EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATING, infobar->type());
1026 SimulateURLFetch(true); // Simulate the translate script being retrieved. 1033 SimulateURLFetch(true); // Simulate the translate script being retrieved.
1027 int page_id = 0; 1034 int page_id = 0;
1028 std::string original_lang, target_lang; 1035 std::string original_lang, target_lang;
1029 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 1036 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
1037 EXPECT_EQ(0, page_id);
1030 EXPECT_EQ("fr", original_lang); 1038 EXPECT_EQ("fr", original_lang);
1031 EXPECT_EQ("en", target_lang); 1039 EXPECT_EQ("en", target_lang);
1032 process()->sink().ClearMessages(); 1040 process()->sink().ClearMessages();
1033 1041
1034 // This should also have reverted the blacklisting of this site and language. 1042 // This should also have reverted the blacklisting of this site and language.
1035 EXPECT_FALSE(translate_prefs.IsLanguageBlacklisted("fr")); 1043 EXPECT_FALSE(translate_prefs.IsLanguageBlacklisted("fr"));
1036 EXPECT_FALSE(translate_prefs.IsSiteBlacklisted(url.host())); 1044 EXPECT_FALSE(translate_prefs.IsSiteBlacklisted(url.host()));
1037 1045
1038 // Let's simulate the page being translated. 1046 // Let's simulate the page being translated.
1039 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en", 1047 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
1040 TranslateErrors::NONE)); 1048 TranslateErrors::NONE));
1041 1049
1042 // The translate menu should now be disabled. 1050 // The translate menu should now be disabled.
1043 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents())); 1051 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents()));
1044 menu->Init(); 1052 menu->Init();
1045 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); 1053 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE));
1046 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); 1054 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
1047 1055
1048 // Test that selecting translate in the context menu WHILE the page is being 1056 // Test that selecting translate in the context menu WHILE the page is being
1049 // translated does nothing (this could happen if autotranslate kicks-in and 1057 // translated does nothing (this could happen if autotranslate kicks-in and
1050 // the user selects the menu while the translation is being performed). 1058 // the user selects the menu while the translation is being performed).
1051 SimulateNavigation(GURL("http://www.google.es"), "El Google", "es", true); 1059 SimulateNavigation(GURL("http://www.google.es"), 1, "El Google", "es", true);
1052 infobar = GetTranslateInfoBar(); 1060 infobar = GetTranslateInfoBar();
1053 ASSERT_TRUE(infobar != NULL); 1061 ASSERT_TRUE(infobar != NULL);
1054 infobar->Translate(); 1062 infobar->Translate();
1055 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 1063 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
1064 EXPECT_EQ(1, page_id);
1056 process()->sink().ClearMessages(); 1065 process()->sink().ClearMessages();
1057 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents())); 1066 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents()));
1058 menu->Init(); 1067 menu->Init();
1059 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); 1068 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
1060 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE); 1069 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE);
1061 // No message expected since the translation should have been ignored. 1070 // No message expected since the translation should have been ignored.
1062 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 1071 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
1063 1072
1064 // Now test that selecting translate in the context menu AFTER the page has 1073 // Now test that selecting translate in the context menu AFTER the page has
1065 // been translated does nothing. 1074 // been translated does nothing.
1066 SimulateNavigation(GURL("http://www.google.de"), "Das Google", "de", true); 1075 SimulateNavigation(GURL("http://www.google.de"), 2, "Das Google", "de", true);
1067 infobar = GetTranslateInfoBar(); 1076 infobar = GetTranslateInfoBar();
1068 ASSERT_TRUE(infobar != NULL); 1077 ASSERT_TRUE(infobar != NULL);
1069 infobar->Translate(); 1078 infobar->Translate();
1070 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 1079 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
1080 EXPECT_EQ(2, page_id);
1071 process()->sink().ClearMessages(); 1081 process()->sink().ClearMessages();
1072 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents())); 1082 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents()));
1073 menu->Init(); 1083 menu->Init();
1074 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); 1084 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
1075 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "de", "en", 1085 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "de", "en",
1076 TranslateErrors::NONE)); 1086 TranslateErrors::NONE));
1077 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE); 1087 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE);
1078 // No message expected since the translation should have been ignored. 1088 // No message expected since the translation should have been ignored.
1079 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 1089 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
1080 1090
1081 // Test that the translate context menu is disabled when the page is in the 1091 // Test that the translate context menu is disabled when the page is in the
1082 // same language as the UI. 1092 // same language as the UI.
1083 SimulateNavigation(url, "Google", "en", true); 1093 SimulateNavigation(url, 0, "Google", "en", true);
1084 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents())); 1094 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents()));
1085 menu->Init(); 1095 menu->Init();
1086 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); 1096 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE));
1087 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); 1097 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
1088 1098
1089 // Test that the translate context menu is enabled when the page is in an 1099 // Test that the translate context menu is enabled when the page is in an
1090 // unknown language. 1100 // unknown language.
1091 SimulateNavigation(url, "G00g1e", "und", true); 1101 SimulateNavigation(url, 0, "G00g1e", "und", true);
1092 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents())); 1102 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents()));
1093 menu->Init(); 1103 menu->Init();
1094 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); 1104 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE));
1095 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); 1105 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
1096 1106
1097 // Test that the translate context menu is disabled when the page is in an 1107 // Test that the translate context menu is disabled when the page is in an
1098 // unsupported language. 1108 // unsupported language.
1099 SimulateNavigation(url, "G00g1e", "qbz", true); 1109 SimulateNavigation(url, 0, "G00g1e", "qbz", true);
1100 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents())); 1110 menu.reset(TestRenderViewContextMenu::CreateContextMenu(contents()));
1101 menu->Init(); 1111 menu->Init();
1102 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); 1112 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE));
1103 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); 1113 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
1104 } 1114 }
1105 1115
1106 // Tests that an extra always/never translate button is shown on the "before 1116 // Tests that an extra always/never translate button is shown on the "before
1107 // translate" infobar when the translation is accepted/declined 3 times, 1117 // translate" infobar when the translation is accepted/declined 3 times,
1108 // only when not in incognito mode. 1118 // only when not in incognito mode.
1109 TEST_F(TranslateManagerTest, BeforeTranslateExtraButtons) { 1119 TEST_F(TranslateManagerTest, BeforeTranslateExtraButtons) {
1110 TranslatePrefs translate_prefs(contents()->profile()->GetPrefs()); 1120 TranslatePrefs translate_prefs(contents()->profile()->GetPrefs());
1111 translate_prefs.ResetTranslationAcceptedCount("fr"); 1121 translate_prefs.ResetTranslationAcceptedCount("fr");
1112 translate_prefs.ResetTranslationDeniedCount("fr"); 1122 translate_prefs.ResetTranslationDeniedCount("fr");
1113 translate_prefs.ResetTranslationAcceptedCount("de"); 1123 translate_prefs.ResetTranslationAcceptedCount("de");
1114 translate_prefs.ResetTranslationDeniedCount("de"); 1124 translate_prefs.ResetTranslationDeniedCount("de");
1115 1125
1116 // We'll do 4 times in incognito mode first to make sure the button is not 1126 // We'll do 4 times in incognito mode first to make sure the button is not
1117 // shown in that case, then 4 times in normal mode. 1127 // shown in that case, then 4 times in normal mode.
1118 TranslateInfoBarDelegate* infobar; 1128 TranslateInfoBarDelegate* infobar;
1119 TestingProfile* test_profile = 1129 TestingProfile* test_profile =
1120 static_cast<TestingProfile*>(contents()->profile()); 1130 static_cast<TestingProfile*>(contents()->profile());
1121 test_profile->set_off_the_record(true); 1131 test_profile->set_off_the_record(true);
1122 for (int i = 0; i < 8; ++i) { 1132 for (int i = 0; i < 8; ++i) {
1123 SCOPED_TRACE(::testing::Message::Message() << "Iteration " << i << 1133 SCOPED_TRACE(::testing::Message::Message() << "Iteration " << i <<
1124 " incognito mode=" << test_profile->IsOffTheRecord()); 1134 " incognito mode=" << test_profile->IsOffTheRecord());
1125 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 1135 SimulateNavigation(GURL("http://www.google.fr"), 1, "Le Google", "fr",
1136 true);
1126 infobar = GetTranslateInfoBar(); 1137 infobar = GetTranslateInfoBar();
1127 ASSERT_TRUE(infobar != NULL); 1138 ASSERT_TRUE(infobar != NULL);
1128 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type()); 1139 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type());
1129 if (i < 7) { 1140 if (i < 7) {
1130 EXPECT_FALSE(infobar->ShouldShowAlwaysTranslateButton()); 1141 EXPECT_FALSE(infobar->ShouldShowAlwaysTranslateButton());
1131 infobar->Translate(); 1142 infobar->Translate();
1132 process()->sink().ClearMessages(); 1143 process()->sink().ClearMessages();
1133 } else { 1144 } else {
1134 EXPECT_TRUE(infobar->ShouldShowAlwaysTranslateButton()); 1145 EXPECT_TRUE(infobar->ShouldShowAlwaysTranslateButton());
1135 } 1146 }
(...skipping 11 matching lines...) Expand all
1147 std::string original_lang, target_lang; 1158 std::string original_lang, target_lang;
1148 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 1159 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
1149 process()->sink().ClearMessages(); 1160 process()->sink().ClearMessages();
1150 1161
1151 // Now test that declining the translation causes a "never translate" button 1162 // Now test that declining the translation causes a "never translate" button
1152 // to be shown (in non incognito mode only). 1163 // to be shown (in non incognito mode only).
1153 test_profile->set_off_the_record(true); 1164 test_profile->set_off_the_record(true);
1154 for (int i = 0; i < 8; ++i) { 1165 for (int i = 0; i < 8; ++i) {
1155 SCOPED_TRACE(::testing::Message::Message() << "Iteration " << i << 1166 SCOPED_TRACE(::testing::Message::Message() << "Iteration " << i <<
1156 " incognito mode=" << test_profile->IsOffTheRecord()); 1167 " incognito mode=" << test_profile->IsOffTheRecord());
1157 SimulateNavigation(GURL("http://www.google.de"), "Das Google", "de", true); 1168 SimulateNavigation(GURL("http://www.google.de"), 1, "Das Google", "de",
1169 true);
1158 infobar = GetTranslateInfoBar(); 1170 infobar = GetTranslateInfoBar();
1159 ASSERT_TRUE(infobar != NULL); 1171 ASSERT_TRUE(infobar != NULL);
1160 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type()); 1172 EXPECT_EQ(TranslateInfoBarDelegate::BEFORE_TRANSLATE, infobar->type());
1161 if (i < 7) { 1173 if (i < 7) {
1162 EXPECT_FALSE(infobar->ShouldShowNeverTranslateButton()); 1174 EXPECT_FALSE(infobar->ShouldShowNeverTranslateButton());
1163 infobar->TranslationDeclined(); 1175 infobar->TranslationDeclined();
1164 } else { 1176 } else {
1165 EXPECT_TRUE(infobar->ShouldShowNeverTranslateButton()); 1177 EXPECT_TRUE(infobar->ShouldShowNeverTranslateButton());
1166 } 1178 }
1167 if (i == 3) 1179 if (i == 3)
1168 test_profile->set_off_the_record(false); 1180 test_profile->set_off_the_record(false);
1169 } 1181 }
1170 // Simulate the user pressing "Never translate French". 1182 // Simulate the user pressing "Never translate French".
1171 infobar->NeverTranslatePageLanguage(); 1183 infobar->NeverTranslatePageLanguage();
1172 EXPECT_TRUE(translate_prefs.IsLanguageBlacklisted("de")); 1184 EXPECT_TRUE(translate_prefs.IsLanguageBlacklisted("de"));
1173 // No translation should have occured and the infobar should be gone. 1185 // No translation should have occured and the infobar should be gone.
1174 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 1186 EXPECT_FALSE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
1175 process()->sink().ClearMessages(); 1187 process()->sink().ClearMessages();
1176 ASSERT_TRUE(GetTranslateInfoBar() == NULL); 1188 ASSERT_TRUE(GetTranslateInfoBar() == NULL);
1177 } 1189 }
1178 1190
1179 // Tests that we don't show a translate infobar when a page instructs that it 1191 // Tests that we don't show a translate infobar when a page instructs that it
1180 // should not be translated. 1192 // should not be translated.
1181 TEST_F(TranslateManagerTest, NonTranslatablePage) { 1193 TEST_F(TranslateManagerTest, NonTranslatablePage) {
1182 // Simulate navigating to a page. 1194 // Simulate navigating to a page.
1183 SimulateNavigation(GURL("http://mail.google.fr"), "Le Google", "fr", false); 1195 SimulateNavigation(GURL("http://mail.google.fr"), 0, "Le Google", "fr",
1196 false);
1184 1197
1185 // We should not have an infobar. 1198 // We should not have an infobar.
1186 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 1199 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
1187 1200
1188 // The context menu should be disabled. 1201 // The context menu should be disabled.
1189 scoped_ptr<TestRenderViewContextMenu> menu( 1202 scoped_ptr<TestRenderViewContextMenu> menu(
1190 TestRenderViewContextMenu::CreateContextMenu(contents())); 1203 TestRenderViewContextMenu::CreateContextMenu(contents()));
1191 menu->Init(); 1204 menu->Init();
1192 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); 1205 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE));
1193 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); 1206 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
1194 } 1207 }
1195 1208
1196 // Tests that the script is expired and refetched as expected. 1209 // Tests that the script is expired and refetched as expected.
1197 TEST_F(TranslateManagerTest, ScriptExpires) { 1210 TEST_F(TranslateManagerTest, ScriptExpires) {
1198 ExpireTranslateScriptImmediately(); 1211 ExpireTranslateScriptImmediately();
1199 1212
1200 // Simulate navigating to a page and translating it. 1213 // Simulate navigating to a page and translating it.
1201 SimulateNavigation(GURL("http://www.google.fr"), "Le Google", "fr", true); 1214 SimulateNavigation(GURL("http://www.google.fr"), 0, "Le Google", "fr", true);
1202 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1215 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1203 ASSERT_TRUE(infobar != NULL); 1216 ASSERT_TRUE(infobar != NULL);
1204 process()->sink().ClearMessages(); 1217 process()->sink().ClearMessages();
1205 infobar->Translate(); 1218 infobar->Translate();
1206 SimulateURLFetch(true); 1219 SimulateURLFetch(true);
1207 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en", 1220 rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
1208 TranslateErrors::NONE)); 1221 TranslateErrors::NONE));
1209 1222
1210 // A task should have been posted to clear the script, run it. 1223 // A task should have been posted to clear the script, run it.
1211 MessageLoop::current()->RunAllPending(); 1224 MessageLoop::current()->RunAllPending();
1212 1225
1213 // Do another navigation and translation. 1226 // Do another navigation and translation.
1214 SimulateNavigation(GURL("http://www.google.es"), "El Google", "es", true); 1227 SimulateNavigation(GURL("http://www.google.es"), 1, "El Google", "es", true);
1215 infobar = GetTranslateInfoBar(); 1228 infobar = GetTranslateInfoBar();
1216 ASSERT_TRUE(infobar != NULL); 1229 ASSERT_TRUE(infobar != NULL);
1217 process()->sink().ClearMessages(); 1230 process()->sink().ClearMessages();
1218 infobar->Translate(); 1231 infobar->Translate();
1219 // If we don't simulate the URL fetch, the TranslateManager should be waiting 1232 // If we don't simulate the URL fetch, the TranslateManager should be waiting
1220 // for the script and no message should have been sent to the renderer. 1233 // for the script and no message should have been sent to the renderer.
1221 EXPECT_TRUE( 1234 EXPECT_TRUE(
1222 process()->sink().GetFirstMessageMatching(ViewMsg_TranslatePage::ID) == 1235 process()->sink().GetFirstMessageMatching(ViewMsg_TranslatePage::ID) ==
1223 NULL); 1236 NULL);
1224 // Now simulate the URL fetch. 1237 // Now simulate the URL fetch.
1225 SimulateURLFetch(true); 1238 SimulateURLFetch(true);
1226 // Now the message should have been sent. 1239 // Now the message should have been sent.
1227 int page_id = 0; 1240 int page_id = 0;
1228 std::string original_lang, target_lang; 1241 std::string original_lang, target_lang;
1229 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang)); 1242 EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
1243 EXPECT_EQ(1, page_id);
1230 EXPECT_EQ("es", original_lang); 1244 EXPECT_EQ("es", original_lang);
1231 EXPECT_EQ("en", target_lang); 1245 EXPECT_EQ("en", target_lang);
1232 } 1246 }
OLDNEW
« no previous file with comments | « chrome/browser/tab_contents/test_tab_contents.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698