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

Side by Side Diff: components/translate/content/renderer/translate_helper.cc

Issue 1144153004: components: Remove use of MessageLoopProxy and deprecated MessageLoop APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased. Created 5 years, 6 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 "components/translate/content/renderer/translate_helper.h" 5 #include "components/translate/content/renderer/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/location.h"
9 #include "base/logging.h" 10 #include "base/logging.h"
10 #include "base/message_loop/message_loop.h"
11 #include "base/metrics/histogram.h" 11 #include "base/metrics/histogram.h"
12 #include "base/single_thread_task_runner.h"
12 #include "base/strings/string16.h" 13 #include "base/strings/string16.h"
13 #include "base/strings/string_util.h" 14 #include "base/strings/string_util.h"
14 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
16 #include "base/thread_task_runner_handle.h"
15 #include "components/translate/content/common/translate_messages.h" 17 #include "components/translate/content/common/translate_messages.h"
16 #include "components/translate/content/renderer/renderer_cld_data_provider.h" 18 #include "components/translate/content/renderer/renderer_cld_data_provider.h"
17 #include "components/translate/content/renderer/renderer_cld_data_provider_facto ry.h" 19 #include "components/translate/content/renderer/renderer_cld_data_provider_facto ry.h"
18 #include "components/translate/content/renderer/renderer_cld_utils.h" 20 #include "components/translate/content/renderer/renderer_cld_utils.h"
19 #include "components/translate/core/common/translate_constants.h" 21 #include "components/translate/core/common/translate_constants.h"
20 #include "components/translate/core/common/translate_metrics.h" 22 #include "components/translate/core/common/translate_metrics.h"
21 #include "components/translate/core/common/translate_util.h" 23 #include "components/translate/core/common/translate_util.h"
22 #include "components/translate/core/language_detection/language_detection_util.h " 24 #include "components/translate/core/language_detection/language_detection_util.h "
23 #include "content/public/common/content_constants.h" 25 #include "content/public/common/content_constants.h"
24 #include "content/public/common/url_constants.h" 26 #include "content/public/common/url_constants.h"
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 // Notify the browser we are done. 503 // Notify the browser we are done.
502 render_view()->Send( 504 render_view()->Send(
503 new ChromeViewHostMsg_PageTranslated(render_view()->GetRoutingID(), 505 new ChromeViewHostMsg_PageTranslated(render_view()->GetRoutingID(),
504 actual_source_lang, 506 actual_source_lang,
505 target_lang_, 507 target_lang_,
506 TranslateErrors::NONE)); 508 TranslateErrors::NONE));
507 return; 509 return;
508 } 510 }
509 511
510 // The translation is still pending, check again later. 512 // The translation is still pending, check again later.
511 base::MessageLoop::current()->PostDelayedTask( 513 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
512 FROM_HERE, 514 FROM_HERE, base::Bind(&TranslateHelper::CheckTranslateStatus,
513 base::Bind(&TranslateHelper::CheckTranslateStatus, 515 weak_method_factory_.GetWeakPtr(), page_seq_no),
514 weak_method_factory_.GetWeakPtr(), page_seq_no),
515 AdjustDelay(kTranslateStatusCheckDelayMs)); 516 AdjustDelay(kTranslateStatusCheckDelayMs));
516 } 517 }
517 518
518 void TranslateHelper::TranslatePageImpl(int page_seq_no, int count) { 519 void TranslateHelper::TranslatePageImpl(int page_seq_no, int count) {
519 DCHECK_LT(count, kMaxTranslateInitCheckAttempts); 520 DCHECK_LT(count, kMaxTranslateInitCheckAttempts);
520 if (page_seq_no_ != page_seq_no || !render_view()->GetWebView()) 521 if (page_seq_no_ != page_seq_no || !render_view()->GetWebView())
521 return; 522 return;
522 523
523 if (!IsTranslateLibReady()) { 524 if (!IsTranslateLibReady()) {
524 // The library is not ready, try again later, unless we have tried several 525 // The library is not ready, try again later, unless we have tried several
525 // times unsucessfully already. 526 // times unsucessfully already.
526 if (++count >= kMaxTranslateInitCheckAttempts) { 527 if (++count >= kMaxTranslateInitCheckAttempts) {
527 NotifyBrowserTranslationFailed(TranslateErrors::INITIALIZATION_ERROR); 528 NotifyBrowserTranslationFailed(TranslateErrors::INITIALIZATION_ERROR);
528 return; 529 return;
529 } 530 }
530 base::MessageLoop::current()->PostDelayedTask( 531 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
531 FROM_HERE, 532 FROM_HERE,
532 base::Bind(&TranslateHelper::TranslatePageImpl, 533 base::Bind(&TranslateHelper::TranslatePageImpl,
533 weak_method_factory_.GetWeakPtr(), 534 weak_method_factory_.GetWeakPtr(), page_seq_no, count),
534 page_seq_no, count),
535 AdjustDelay(count * kTranslateInitCheckDelayMs)); 535 AdjustDelay(count * kTranslateInitCheckDelayMs));
536 return; 536 return;
537 } 537 }
538 538
539 // The library is loaded, and ready for translation now. 539 // The library is loaded, and ready for translation now.
540 // Check JavaScript performance counters for UMA reports. 540 // Check JavaScript performance counters for UMA reports.
541 ReportTimeToBeReady( 541 ReportTimeToBeReady(
542 ExecuteScriptAndGetDoubleResult("cr.googleTranslate.readyTime")); 542 ExecuteScriptAndGetDoubleResult("cr.googleTranslate.readyTime"));
543 ReportTimeToLoad( 543 ReportTimeToLoad(
544 ExecuteScriptAndGetDoubleResult("cr.googleTranslate.loadTime")); 544 ExecuteScriptAndGetDoubleResult("cr.googleTranslate.loadTime"));
545 545
546 if (!StartTranslation()) { 546 if (!StartTranslation()) {
547 NotifyBrowserTranslationFailed(TranslateErrors::TRANSLATION_ERROR); 547 NotifyBrowserTranslationFailed(TranslateErrors::TRANSLATION_ERROR);
548 return; 548 return;
549 } 549 }
550 // Check the status of the translation. 550 // Check the status of the translation.
551 base::MessageLoop::current()->PostDelayedTask( 551 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
552 FROM_HERE, 552 FROM_HERE, base::Bind(&TranslateHelper::CheckTranslateStatus,
553 base::Bind(&TranslateHelper::CheckTranslateStatus, 553 weak_method_factory_.GetWeakPtr(), page_seq_no),
554 weak_method_factory_.GetWeakPtr(), page_seq_no),
555 AdjustDelay(kTranslateStatusCheckDelayMs)); 554 AdjustDelay(kTranslateStatusCheckDelayMs));
556 } 555 }
557 556
558 void TranslateHelper::NotifyBrowserTranslationFailed( 557 void TranslateHelper::NotifyBrowserTranslationFailed(
559 TranslateErrors::Type error) { 558 TranslateErrors::Type error) {
560 translation_pending_ = false; 559 translation_pending_ = false;
561 // Notify the browser there was an error. 560 // Notify the browser there was an error.
562 render_view()->Send(new ChromeViewHostMsg_PageTranslated( 561 render_view()->Send(new ChromeViewHostMsg_PageTranslated(
563 render_view()->GetRoutingID(), source_lang_, target_lang_, error)); 562 render_view()->GetRoutingID(), source_lang_, target_lang_, error));
564 } 563 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 cld_data_provider_->SendCldDataRequest(); 612 cld_data_provider_->SendCldDataRequest();
614 613
615 // ... and enqueue another delayed task to call again. This will start a 614 // ... and enqueue another delayed task to call again. This will start a
616 // chain of polling that will last until the pointer stops being NULL, 615 // chain of polling that will last until the pointer stops being NULL,
617 // which is the right thing to do. 616 // which is the right thing to do.
618 // NB: In the great majority of cases, the data file will be available and 617 // NB: In the great majority of cases, the data file will be available and
619 // the very first delayed task will be a no-op that terminates the chain. 618 // the very first delayed task will be a no-op that terminates the chain.
620 // It's only while downloading the file that this will chain for a 619 // It's only while downloading the file that this will chain for a
621 // nontrivial amount of time. 620 // nontrivial amount of time.
622 // Use a weak pointer to avoid keeping this helper object around forever. 621 // Use a weak pointer to avoid keeping this helper object around forever.
623 base::MessageLoop::current()->PostDelayedTask( 622 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
624 FROM_HERE, 623 FROM_HERE, base::Bind(&TranslateHelper::SendCldDataRequest,
625 base::Bind(&TranslateHelper::SendCldDataRequest, 624 weak_method_factory_.GetWeakPtr(),
626 weak_method_factory_.GetWeakPtr(), 625 next_delay_millis, next_delay_millis * 2),
627 next_delay_millis,
628 next_delay_millis * 2),
629 base::TimeDelta::FromMilliseconds(delay_millis)); 626 base::TimeDelta::FromMilliseconds(delay_millis));
630 } 627 }
631 628
632 void TranslateHelper::OnCldDataAvailable() { 629 void TranslateHelper::OnCldDataAvailable() {
633 if (deferred_page_capture_) { 630 if (deferred_page_capture_) {
634 deferred_page_capture_ = false; // Don't do this a second time. 631 deferred_page_capture_ = false; // Don't do this a second time.
635 PageCapturedImpl(deferred_page_seq_no_, deferred_contents_); 632 PageCapturedImpl(deferred_page_seq_no_, deferred_contents_);
636 deferred_page_seq_no_ = -1; // Clean up for sanity 633 deferred_page_seq_no_ = -1; // Clean up for sanity
637 deferred_contents_.clear(); // Clean up for sanity 634 deferred_contents_.clear(); // Clean up for sanity
638 } 635 }
(...skipping 20 matching lines...) Expand all
659 // this, everything should start being ON_TIME. This should never run more 656 // this, everything should start being ON_TIME. This should never run more
660 // than twice in a page load, under any conditions. 657 // than twice in a page load, under any conditions.
661 // Also note that language detection is triggered off of a delay AFTER the 658 // Also note that language detection is triggered off of a delay AFTER the
662 // page load completed event has fired, making this very much off the critical 659 // page load completed event has fired, making this very much off the critical
663 // path. 660 // path.
664 content::RenderThread::Get()->UpdateHistograms( 661 content::RenderThread::Get()->UpdateHistograms(
665 content::kHistogramSynchronizerReservedSequenceNumber); 662 content::kHistogramSynchronizerReservedSequenceNumber);
666 } 663 }
667 664
668 } // namespace translate 665 } // namespace translate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698