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

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

Issue 378253002: Fix translate namespace (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing android build errors Created 6 years, 5 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
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 "chrome/renderer/translate/translate_helper.h" 5 #include "chrome/renderer/translate/translate_helper.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 bool is_cld_reliable; 174 bool is_cld_reliable;
175 std::string language = translate::DeterminePageLanguage( 175 std::string language = translate::DeterminePageLanguage(
176 content_language, html_lang, contents, &cld_language, &is_cld_reliable); 176 content_language, html_lang, contents, &cld_language, &is_cld_reliable);
177 177
178 if (language.empty()) 178 if (language.empty())
179 return; 179 return;
180 180
181 language_determined_time_ = base::TimeTicks::Now(); 181 language_determined_time_ = base::TimeTicks::Now();
182 182
183 GURL url(document.url()); 183 GURL url(document.url());
184 LanguageDetectionDetails details; 184 translate::LanguageDetectionDetails details;
185 details.time = base::Time::Now(); 185 details.time = base::Time::Now();
186 details.url = url; 186 details.url = url;
187 details.content_language = content_language; 187 details.content_language = content_language;
188 details.cld_language = cld_language; 188 details.cld_language = cld_language;
189 details.is_cld_reliable = is_cld_reliable; 189 details.is_cld_reliable = is_cld_reliable;
190 details.html_root_language = html_lang; 190 details.html_root_language = html_lang;
191 details.adopted_language = language; 191 details.adopted_language = language;
192 192
193 // TODO(hajimehoshi): If this affects performance, it should be set only if 193 // TODO(hajimehoshi): If this affects performance, it should be set only if
194 // translate-internals tab exists. 194 // translate-internals tab exists.
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 458
459 void TranslateHelper::CheckTranslateStatus(int page_seq_no) { 459 void TranslateHelper::CheckTranslateStatus(int page_seq_no) {
460 // If this is not the same page, the translation has been canceled. If the 460 // If this is not the same page, the translation has been canceled. If the
461 // view is gone, the page is closing. 461 // view is gone, the page is closing.
462 if (page_seq_no_ != page_seq_no || !render_view()->GetWebView()) 462 if (page_seq_no_ != page_seq_no || !render_view()->GetWebView())
463 return; 463 return;
464 464
465 // First check if there was an error. 465 // First check if there was an error.
466 if (HasTranslationFailed()) { 466 if (HasTranslationFailed()) {
467 // TODO(toyoshim): Check |errorCode| of translate.js and notify it here. 467 // TODO(toyoshim): Check |errorCode| of translate.js and notify it here.
468 NotifyBrowserTranslationFailed(TranslateErrors::TRANSLATION_ERROR); 468 NotifyBrowserTranslationFailed(
469 translate::TranslateErrors::TRANSLATION_ERROR);
469 return; // There was an error. 470 return; // There was an error.
470 } 471 }
471 472
472 if (HasTranslationFinished()) { 473 if (HasTranslationFinished()) {
473 std::string actual_source_lang; 474 std::string actual_source_lang;
474 // Translation was successfull, if it was auto, retrieve the source 475 // Translation was successfull, if it was auto, retrieve the source
475 // language the Translate Element detected. 476 // language the Translate Element detected.
476 if (source_lang_ == kAutoDetectionLanguage) { 477 if (source_lang_ == kAutoDetectionLanguage) {
477 actual_source_lang = GetOriginalPageLanguage(); 478 actual_source_lang = GetOriginalPageLanguage();
478 if (actual_source_lang.empty()) { 479 if (actual_source_lang.empty()) {
479 NotifyBrowserTranslationFailed(TranslateErrors::UNKNOWN_LANGUAGE); 480 NotifyBrowserTranslationFailed(
481 translate::TranslateErrors::UNKNOWN_LANGUAGE);
480 return; 482 return;
481 } else if (actual_source_lang == target_lang_) { 483 } else if (actual_source_lang == target_lang_) {
482 NotifyBrowserTranslationFailed(TranslateErrors::IDENTICAL_LANGUAGES); 484 NotifyBrowserTranslationFailed(
485 translate::TranslateErrors::IDENTICAL_LANGUAGES);
483 return; 486 return;
484 } 487 }
485 } else { 488 } else {
486 actual_source_lang = source_lang_; 489 actual_source_lang = source_lang_;
487 } 490 }
488 491
489 if (!translation_pending_) { 492 if (!translation_pending_) {
490 NOTREACHED(); 493 NOTREACHED();
491 return; 494 return;
492 } 495 }
493 496
494 translation_pending_ = false; 497 translation_pending_ = false;
495 498
496 // Check JavaScript performance counters for UMA reports. 499 // Check JavaScript performance counters for UMA reports.
497 translate::ReportTimeToTranslate( 500 translate::ReportTimeToTranslate(
498 ExecuteScriptAndGetDoubleResult("cr.googleTranslate.translationTime")); 501 ExecuteScriptAndGetDoubleResult("cr.googleTranslate.translationTime"));
499 502
500 // Notify the browser we are done. 503 // Notify the browser we are done.
501 render_view()->Send(new ChromeViewHostMsg_PageTranslated( 504 render_view()->Send(
502 render_view()->GetRoutingID(), actual_source_lang, target_lang_, 505 new ChromeViewHostMsg_PageTranslated(render_view()->GetRoutingID(),
503 TranslateErrors::NONE)); 506 actual_source_lang,
507 target_lang_,
508 translate::TranslateErrors::NONE));
504 return; 509 return;
505 } 510 }
506 511
507 // The translation is still pending, check again later. 512 // The translation is still pending, check again later.
508 base::MessageLoop::current()->PostDelayedTask( 513 base::MessageLoop::current()->PostDelayedTask(
509 FROM_HERE, 514 FROM_HERE,
510 base::Bind(&TranslateHelper::CheckTranslateStatus, 515 base::Bind(&TranslateHelper::CheckTranslateStatus,
511 weak_method_factory_.GetWeakPtr(), page_seq_no), 516 weak_method_factory_.GetWeakPtr(), page_seq_no),
512 AdjustDelay(kTranslateStatusCheckDelayMs)); 517 AdjustDelay(kTranslateStatusCheckDelayMs));
513 } 518 }
514 519
515 void TranslateHelper::TranslatePageImpl(int page_seq_no, int count) { 520 void TranslateHelper::TranslatePageImpl(int page_seq_no, int count) {
516 DCHECK_LT(count, kMaxTranslateInitCheckAttempts); 521 DCHECK_LT(count, kMaxTranslateInitCheckAttempts);
517 if (page_seq_no_ != page_seq_no || !render_view()->GetWebView()) 522 if (page_seq_no_ != page_seq_no || !render_view()->GetWebView())
518 return; 523 return;
519 524
520 if (!IsTranslateLibReady()) { 525 if (!IsTranslateLibReady()) {
521 // The library is not ready, try again later, unless we have tried several 526 // The library is not ready, try again later, unless we have tried several
522 // times unsucessfully already. 527 // times unsucessfully already.
523 if (++count >= kMaxTranslateInitCheckAttempts) { 528 if (++count >= kMaxTranslateInitCheckAttempts) {
524 NotifyBrowserTranslationFailed(TranslateErrors::INITIALIZATION_ERROR); 529 NotifyBrowserTranslationFailed(
530 translate::TranslateErrors::INITIALIZATION_ERROR);
525 return; 531 return;
526 } 532 }
527 base::MessageLoop::current()->PostDelayedTask( 533 base::MessageLoop::current()->PostDelayedTask(
528 FROM_HERE, 534 FROM_HERE,
529 base::Bind(&TranslateHelper::TranslatePageImpl, 535 base::Bind(&TranslateHelper::TranslatePageImpl,
530 weak_method_factory_.GetWeakPtr(), 536 weak_method_factory_.GetWeakPtr(),
531 page_seq_no, count), 537 page_seq_no, count),
532 AdjustDelay(count * kTranslateInitCheckDelayMs)); 538 AdjustDelay(count * kTranslateInitCheckDelayMs));
533 return; 539 return;
534 } 540 }
535 541
536 // The library is loaded, and ready for translation now. 542 // The library is loaded, and ready for translation now.
537 // Check JavaScript performance counters for UMA reports. 543 // Check JavaScript performance counters for UMA reports.
538 translate::ReportTimeToBeReady( 544 translate::ReportTimeToBeReady(
539 ExecuteScriptAndGetDoubleResult("cr.googleTranslate.readyTime")); 545 ExecuteScriptAndGetDoubleResult("cr.googleTranslate.readyTime"));
540 translate::ReportTimeToLoad( 546 translate::ReportTimeToLoad(
541 ExecuteScriptAndGetDoubleResult("cr.googleTranslate.loadTime")); 547 ExecuteScriptAndGetDoubleResult("cr.googleTranslate.loadTime"));
542 548
543 if (!StartTranslation()) { 549 if (!StartTranslation()) {
544 NotifyBrowserTranslationFailed(TranslateErrors::TRANSLATION_ERROR); 550 NotifyBrowserTranslationFailed(
551 translate::TranslateErrors::TRANSLATION_ERROR);
545 return; 552 return;
546 } 553 }
547 // Check the status of the translation. 554 // Check the status of the translation.
548 base::MessageLoop::current()->PostDelayedTask( 555 base::MessageLoop::current()->PostDelayedTask(
549 FROM_HERE, 556 FROM_HERE,
550 base::Bind(&TranslateHelper::CheckTranslateStatus, 557 base::Bind(&TranslateHelper::CheckTranslateStatus,
551 weak_method_factory_.GetWeakPtr(), page_seq_no), 558 weak_method_factory_.GetWeakPtr(), page_seq_no),
552 AdjustDelay(kTranslateStatusCheckDelayMs)); 559 AdjustDelay(kTranslateStatusCheckDelayMs));
553 } 560 }
554 561
555 void TranslateHelper::NotifyBrowserTranslationFailed( 562 void TranslateHelper::NotifyBrowserTranslationFailed(
556 TranslateErrors::Type error) { 563 translate::TranslateErrors::Type error) {
557 translation_pending_ = false; 564 translation_pending_ = false;
558 // Notify the browser there was an error. 565 // Notify the browser there was an error.
559 render_view()->Send(new ChromeViewHostMsg_PageTranslated( 566 render_view()->Send(new ChromeViewHostMsg_PageTranslated(
560 render_view()->GetRoutingID(), source_lang_, target_lang_, error)); 567 render_view()->GetRoutingID(), source_lang_, target_lang_, error));
561 } 568 }
562 569
563 WebFrame* TranslateHelper::GetMainFrame() { 570 WebFrame* TranslateHelper::GetMainFrame() {
564 WebView* web_view = render_view()->GetWebView(); 571 WebView* web_view = render_view()->GetWebView();
565 572
566 // When the tab is going to be closed, the web_view can be NULL. 573 // When the tab is going to be closed, the web_view can be NULL.
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 // be DEFERRED until CLD is ready. In the latter case, CLD is in dynamic mode 646 // be DEFERRED until CLD is ready. In the latter case, CLD is in dynamic mode
640 // and may eventually become available, triggering the RESUMED event; after 647 // and may eventually become available, triggering the RESUMED event; after
641 // this, everything should start being ON_TIME. This should never run more 648 // this, everything should start being ON_TIME. This should never run more
642 // than twice in a page load, under any conditions. 649 // than twice in a page load, under any conditions.
643 // Also note that language detection is triggered off of a delay AFTER the 650 // Also note that language detection is triggered off of a delay AFTER the
644 // page load completed event has fired, making this very much off the critical 651 // page load completed event has fired, making this very much off the critical
645 // path. 652 // path.
646 content::RenderThread::Get()->UpdateHistograms( 653 content::RenderThread::Get()->UpdateHistograms(
647 content::kHistogramSynchronizerReservedSequenceNumber); 654 content::kHistogramSynchronizerReservedSequenceNumber);
648 } 655 }
OLDNEW
« no previous file with comments | « chrome/renderer/translate/translate_helper.h ('k') | chrome/renderer/translate/translate_helper_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698