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

Side by Side Diff: chrome/renderer/translate/translate_helper_browsertest.cc

Issue 821453003: Update legacy Tuple-using code. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/time/time.h" 5 #include "base/time/time.h"
6 #include "chrome/renderer/isolated_world_ids.h" 6 #include "chrome/renderer/isolated_world_ids.h"
7 #include "chrome/test/base/chrome_render_view_test.h" 7 #include "chrome/test/base/chrome_render_view_test.h"
8 #include "components/translate/content/common/translate_messages.h" 8 #include "components/translate/content/common/translate_messages.h"
9 #include "components/translate/content/renderer/translate_helper.h" 9 #include "components/translate/content/renderer/translate_helper.h"
10 #include "components/translate/core/common/translate_constants.h" 10 #include "components/translate/core/common/translate_constants.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 ChromeRenderViewTest::TearDown(); 71 ChromeRenderViewTest::TearDown();
72 } 72 }
73 73
74 bool GetPageTranslatedMessage(std::string* original_lang, 74 bool GetPageTranslatedMessage(std::string* original_lang,
75 std::string* target_lang, 75 std::string* target_lang,
76 translate::TranslateErrors::Type* error) { 76 translate::TranslateErrors::Type* error) {
77 const IPC::Message* message = render_thread_->sink(). 77 const IPC::Message* message = render_thread_->sink().
78 GetUniqueMessageMatching(ChromeViewHostMsg_PageTranslated::ID); 78 GetUniqueMessageMatching(ChromeViewHostMsg_PageTranslated::ID);
79 if (!message) 79 if (!message)
80 return false; 80 return false;
81 Tuple3<std::string, std::string, translate::TranslateErrors::Type> 81 Tuple<std::string, std::string, translate::TranslateErrors::Type>
82 translate_param; 82 translate_param;
83 ChromeViewHostMsg_PageTranslated::Read(message, &translate_param); 83 ChromeViewHostMsg_PageTranslated::Read(message, &translate_param);
84 if (original_lang) 84 if (original_lang)
85 *original_lang = translate_param.a; 85 *original_lang = get<0>(translate_param);
86 if (target_lang) 86 if (target_lang)
87 *target_lang = translate_param.b; 87 *target_lang = get<1>(translate_param);
88 if (error) 88 if (error)
89 *error = translate_param.c; 89 *error = get<2>(translate_param);
90 return true; 90 return true;
91 } 91 }
92 92
93 TestTranslateHelper* translate_helper_; 93 TestTranslateHelper* translate_helper_;
94 94
95 private: 95 private:
96 DISALLOW_COPY_AND_ASSIGN(TranslateHelperBrowserTest); 96 DISALLOW_COPY_AND_ASSIGN(TranslateHelperBrowserTest);
97 }; 97 };
98 98
99 // Tests that the browser gets notified of the translation failure if the 99 // Tests that the browser gets notified of the translation failure if the
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 // Suppress the normal delay that occurs when the page is loaded before which 323 // Suppress the normal delay that occurs when the page is loaded before which
324 // the renderer sends the page contents to the browser. 324 // the renderer sends the page contents to the browser.
325 SendContentStateImmediately(); 325 SendContentStateImmediately();
326 326
327 LoadHTML("<html><body>A random page with random content.</body></html>"); 327 LoadHTML("<html><body>A random page with random content.</body></html>");
328 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( 328 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching(
329 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 329 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
330 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 330 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
331 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; 331 ChromeViewHostMsg_TranslateLanguageDetermined::Param params;
332 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 332 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
333 EXPECT_TRUE(params.b) << "Page should be translatable."; 333 EXPECT_TRUE(get<1>(params)) << "Page should be translatable.";
334 render_thread_->sink().ClearMessages(); 334 render_thread_->sink().ClearMessages();
335 335
336 // Now the page specifies the META tag to prevent translation. 336 // Now the page specifies the META tag to prevent translation.
337 LoadHTML("<html><head><meta name=\"google\" value=\"notranslate\"></head>" 337 LoadHTML("<html><head><meta name=\"google\" value=\"notranslate\"></head>"
338 "<body>A random page with random content.</body></html>"); 338 "<body>A random page with random content.</body></html>");
339 message = render_thread_->sink().GetUniqueMessageMatching( 339 message = render_thread_->sink().GetUniqueMessageMatching(
340 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 340 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
341 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 341 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
342 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 342 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
343 EXPECT_FALSE(params.b) << "Page should not be translatable."; 343 EXPECT_FALSE(get<1>(params)) << "Page should not be translatable.";
344 render_thread_->sink().ClearMessages(); 344 render_thread_->sink().ClearMessages();
345 345
346 // Try the alternate version of the META tag (content instead of value). 346 // Try the alternate version of the META tag (content instead of value).
347 LoadHTML("<html><head><meta name=\"google\" content=\"notranslate\"></head>" 347 LoadHTML("<html><head><meta name=\"google\" content=\"notranslate\"></head>"
348 "<body>A random page with random content.</body></html>"); 348 "<body>A random page with random content.</body></html>");
349 message = render_thread_->sink().GetUniqueMessageMatching( 349 message = render_thread_->sink().GetUniqueMessageMatching(
350 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 350 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
351 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 351 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
352 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 352 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
353 EXPECT_FALSE(params.b) << "Page should not be translatable."; 353 EXPECT_FALSE(get<1>(params)) << "Page should not be translatable.";
354 } 354 }
355 355
356 // Tests that the language meta tag takes precedence over the CLD when reporting 356 // Tests that the language meta tag takes precedence over the CLD when reporting
357 // the page's language. 357 // the page's language.
358 TEST_F(ChromeRenderViewTest, LanguageMetaTag) { 358 TEST_F(ChromeRenderViewTest, LanguageMetaTag) {
359 // Suppress the normal delay that occurs when the page is loaded before which 359 // Suppress the normal delay that occurs when the page is loaded before which
360 // the renderer sends the page contents to the browser. 360 // the renderer sends the page contents to the browser.
361 SendContentStateImmediately(); 361 SendContentStateImmediately();
362 362
363 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"es\">" 363 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"es\">"
364 "</head><body>A random page with random content.</body></html>"); 364 "</head><body>A random page with random content.</body></html>");
365 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( 365 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching(
366 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 366 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
367 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 367 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
368 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; 368 ChromeViewHostMsg_TranslateLanguageDetermined::Param params;
369 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 369 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
370 EXPECT_EQ("es", params.a.adopted_language); 370 EXPECT_EQ("es", get<0>(params).adopted_language);
371 render_thread_->sink().ClearMessages(); 371 render_thread_->sink().ClearMessages();
372 372
373 // Makes sure we support multiple languages specified. 373 // Makes sure we support multiple languages specified.
374 LoadHTML("<html><head><meta http-equiv=\"content-language\" " 374 LoadHTML("<html><head><meta http-equiv=\"content-language\" "
375 "content=\" fr , es,en \">" 375 "content=\" fr , es,en \">"
376 "</head><body>A random page with random content.</body></html>"); 376 "</head><body>A random page with random content.</body></html>");
377 message = render_thread_->sink().GetUniqueMessageMatching( 377 message = render_thread_->sink().GetUniqueMessageMatching(
378 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 378 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
379 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 379 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
380 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 380 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
381 EXPECT_EQ("fr", params.a.adopted_language); 381 EXPECT_EQ("fr", get<0>(params).adopted_language);
382 } 382 }
383 383
384 // Tests that the language meta tag works even with non-all-lower-case. 384 // Tests that the language meta tag works even with non-all-lower-case.
385 // http://code.google.com/p/chromium/issues/detail?id=145689 385 // http://code.google.com/p/chromium/issues/detail?id=145689
386 TEST_F(ChromeRenderViewTest, LanguageMetaTagCase) { 386 TEST_F(ChromeRenderViewTest, LanguageMetaTagCase) {
387 // Suppress the normal delay that occurs when the page is loaded before which 387 // Suppress the normal delay that occurs when the page is loaded before which
388 // the renderer sends the page contents to the browser. 388 // the renderer sends the page contents to the browser.
389 SendContentStateImmediately(); 389 SendContentStateImmediately();
390 390
391 LoadHTML("<html><head><meta http-equiv=\"Content-Language\" content=\"es\">" 391 LoadHTML("<html><head><meta http-equiv=\"Content-Language\" content=\"es\">"
392 "</head><body>A random page with random content.</body></html>"); 392 "</head><body>A random page with random content.</body></html>");
393 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( 393 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching(
394 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 394 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
395 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 395 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
396 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; 396 ChromeViewHostMsg_TranslateLanguageDetermined::Param params;
397 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 397 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
398 EXPECT_EQ("es", params.a.adopted_language); 398 EXPECT_EQ("es", get<0>(params).adopted_language);
399 render_thread_->sink().ClearMessages(); 399 render_thread_->sink().ClearMessages();
400 400
401 // Makes sure we support multiple languages specified. 401 // Makes sure we support multiple languages specified.
402 LoadHTML("<html><head><meta http-equiv=\"Content-Language\" " 402 LoadHTML("<html><head><meta http-equiv=\"Content-Language\" "
403 "content=\" fr , es,en \">" 403 "content=\" fr , es,en \">"
404 "</head><body>A random page with random content.</body></html>"); 404 "</head><body>A random page with random content.</body></html>");
405 message = render_thread_->sink().GetUniqueMessageMatching( 405 message = render_thread_->sink().GetUniqueMessageMatching(
406 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 406 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
407 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 407 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
408 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 408 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
409 EXPECT_EQ("fr", params.a.adopted_language); 409 EXPECT_EQ("fr", get<0>(params).adopted_language);
410 } 410 }
411 411
412 // Tests that the language meta tag is converted to Chrome standard of dashes 412 // Tests that the language meta tag is converted to Chrome standard of dashes
413 // instead of underscores and proper capitalization. 413 // instead of underscores and proper capitalization.
414 // http://code.google.com/p/chromium/issues/detail?id=159487 414 // http://code.google.com/p/chromium/issues/detail?id=159487
415 TEST_F(ChromeRenderViewTest, LanguageCommonMistakesAreCorrected) { 415 TEST_F(ChromeRenderViewTest, LanguageCommonMistakesAreCorrected) {
416 // Suppress the normal delay that occurs when the page is loaded before which 416 // Suppress the normal delay that occurs when the page is loaded before which
417 // the renderer sends the page contents to the browser. 417 // the renderer sends the page contents to the browser.
418 SendContentStateImmediately(); 418 SendContentStateImmediately();
419 419
420 LoadHTML("<html><head><meta http-equiv='Content-Language' content='EN_us'>" 420 LoadHTML("<html><head><meta http-equiv='Content-Language' content='EN_us'>"
421 "</head><body>A random page with random content.</body></html>"); 421 "</head><body>A random page with random content.</body></html>");
422 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( 422 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching(
423 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 423 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
424 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 424 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
425 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; 425 ChromeViewHostMsg_TranslateLanguageDetermined::Param params;
426 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 426 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
427 EXPECT_EQ("en", params.a.adopted_language); 427 EXPECT_EQ("en", get<0>(params).adopted_language);
428 render_thread_->sink().ClearMessages(); 428 render_thread_->sink().ClearMessages();
429 429
430 LoadHTML("<html><head><meta http-equiv='Content-Language' content='ZH_tw'>" 430 LoadHTML("<html><head><meta http-equiv='Content-Language' content='ZH_tw'>"
431 "</head><body>A random page with random content.</body></html>"); 431 "</head><body>A random page with random content.</body></html>");
432 message = render_thread_->sink().GetUniqueMessageMatching( 432 message = render_thread_->sink().GetUniqueMessageMatching(
433 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 433 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
434 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 434 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
435 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 435 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
436 EXPECT_EQ("zh-TW", params.a.adopted_language); 436 EXPECT_EQ("zh-TW", get<0>(params).adopted_language);
437 render_thread_->sink().ClearMessages(); 437 render_thread_->sink().ClearMessages();
438 } 438 }
439 439
440 // Tests that a back navigation gets a translate language message. 440 // Tests that a back navigation gets a translate language message.
441 TEST_F(ChromeRenderViewTest, BackToTranslatablePage) { 441 TEST_F(ChromeRenderViewTest, BackToTranslatablePage) {
442 SendContentStateImmediately(); 442 SendContentStateImmediately();
443 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"zh\">" 443 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"zh\">"
444 "</head><body>This page is in Chinese.</body></html>"); 444 "</head><body>This page is in Chinese.</body></html>");
445 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching( 445 const IPC::Message* message = render_thread_->sink().GetUniqueMessageMatching(
446 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 446 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
447 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 447 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
448 ChromeViewHostMsg_TranslateLanguageDetermined::Param params; 448 ChromeViewHostMsg_TranslateLanguageDetermined::Param params;
449 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 449 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
450 EXPECT_EQ("zh", params.a.adopted_language); 450 EXPECT_EQ("zh", get<0>(params).adopted_language);
451 render_thread_->sink().ClearMessages(); 451 render_thread_->sink().ClearMessages();
452 452
453 content::PageState back_state = GetCurrentPageState(); 453 content::PageState back_state = GetCurrentPageState();
454 454
455 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"fr\">" 455 LoadHTML("<html><head><meta http-equiv=\"content-language\" content=\"fr\">"
456 "</head><body>This page is in French.</body></html>"); 456 "</head><body>This page is in French.</body></html>");
457 message = render_thread_->sink().GetUniqueMessageMatching( 457 message = render_thread_->sink().GetUniqueMessageMatching(
458 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 458 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
459 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 459 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
460 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 460 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
461 EXPECT_EQ("fr", params.a.adopted_language); 461 EXPECT_EQ("fr", get<0>(params).adopted_language);
462 render_thread_->sink().ClearMessages(); 462 render_thread_->sink().ClearMessages();
463 463
464 GoBack(back_state); 464 GoBack(back_state);
465 465
466 message = render_thread_->sink().GetUniqueMessageMatching( 466 message = render_thread_->sink().GetUniqueMessageMatching(
467 ChromeViewHostMsg_TranslateLanguageDetermined::ID); 467 ChromeViewHostMsg_TranslateLanguageDetermined::ID);
468 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 468 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
469 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params); 469 ChromeViewHostMsg_TranslateLanguageDetermined::Read(message, &params);
470 EXPECT_EQ("zh", params.a.adopted_language); 470 EXPECT_EQ("zh", get<0>(params).adopted_language);
471 render_thread_->sink().ClearMessages(); 471 render_thread_->sink().ClearMessages();
472 } 472 }
OLDNEW
« no previous file with comments | « chrome/renderer/spellchecker/spellcheck_provider_mac_unittest.cc ('k') | chrome/utility/shell_handler_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698