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

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

Issue 9473001: Extract minimal RenderViewHost interface for embedders, leaving (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to LKGR. Created 8 years, 9 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
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/browser/translate/translate_manager.h" 5 #include "chrome/browser/translate/translate_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
332 // notification. So we need to explictly initiate the translation. 332 // notification. So we need to explictly initiate the translation.
333 // Note that we delay it as the TranslateManager gets this notification 333 // Note that we delay it as the TranslateManager gets this notification
334 // before the TabContents and the TabContents processing might remove the 334 // before the TabContents and the TabContents processing might remove the
335 // current infobars. Since InitTranslation might add an infobar, it must 335 // current infobars. Since InitTranslation might add an infobar, it must
336 // be done after that. 336 // be done after that.
337 MessageLoop::current()->PostTask(FROM_HERE, 337 MessageLoop::current()->PostTask(FROM_HERE,
338 base::Bind( 338 base::Bind(
339 &TranslateManager::InitiateTranslationPosted, 339 &TranslateManager::InitiateTranslationPosted,
340 weak_method_factory_.GetWeakPtr(), 340 weak_method_factory_.GetWeakPtr(),
341 controller->GetWebContents()->GetRenderProcessHost()->GetID(), 341 controller->GetWebContents()->GetRenderProcessHost()->GetID(),
342 controller->GetWebContents()->GetRenderViewHost()->routing_id(), 342 controller->GetWebContents()->
343 GetRenderViewHost()->GetRoutingID(),
343 helper->language_state().original_language())); 344 helper->language_state().original_language()));
344 break; 345 break;
345 } 346 }
346 case chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED: { 347 case chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED: {
347 WebContents* tab = content::Source<WebContents>(source).ptr(); 348 WebContents* tab = content::Source<WebContents>(source).ptr();
348 // We may get this notifications multiple times. Make sure to translate 349 // We may get this notifications multiple times. Make sure to translate
349 // only once. 350 // only once.
350 TabContentsWrapper* wrapper = 351 TabContentsWrapper* wrapper =
351 TabContentsWrapper::GetCurrentWrapperForContents(tab); 352 TabContentsWrapper::GetCurrentWrapperForContents(tab);
352 if (!wrapper || !wrapper->translate_tab_helper()) 353 if (!wrapper || !wrapper->translate_tab_helper())
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 612
612 if (!translate_script_.empty()) { 613 if (!translate_script_.empty()) {
613 DoTranslatePage(web_contents, translate_script_, source_lang, target_lang); 614 DoTranslatePage(web_contents, translate_script_, source_lang, target_lang);
614 return; 615 return;
615 } 616 }
616 617
617 // The script is not available yet. Queue that request and query for the 618 // The script is not available yet. Queue that request and query for the
618 // script. Once it is downloaded we'll do the translate. 619 // script. Once it is downloaded we'll do the translate.
619 RenderViewHost* rvh = web_contents->GetRenderViewHost(); 620 RenderViewHost* rvh = web_contents->GetRenderViewHost();
620 PendingRequest request; 621 PendingRequest request;
621 request.render_process_id = rvh->process()->GetID(); 622 request.render_process_id = rvh->GetProcess()->GetID();
622 request.render_view_id = rvh->routing_id(); 623 request.render_view_id = rvh->GetRoutingID();
623 request.page_id = entry->GetPageID(); 624 request.page_id = entry->GetPageID();
624 request.source_lang = source_lang; 625 request.source_lang = source_lang;
625 request.target_lang = target_lang; 626 request.target_lang = target_lang;
626 pending_requests_.push_back(request); 627 pending_requests_.push_back(request);
627 RequestTranslateScript(); 628 RequestTranslateScript();
628 } 629 }
629 630
630 void TranslateManager::RevertTranslation(WebContents* web_contents) { 631 void TranslateManager::RevertTranslation(WebContents* web_contents) {
631 NavigationEntry* entry = web_contents->GetController().GetActiveEntry(); 632 NavigationEntry* entry = web_contents->GetController().GetActiveEntry();
632 if (!entry) { 633 if (!entry) {
633 NOTREACHED(); 634 NOTREACHED();
634 return; 635 return;
635 } 636 }
636 web_contents->GetRenderViewHost()->Send(new ChromeViewMsg_RevertTranslation( 637 web_contents->GetRenderViewHost()->Send(new ChromeViewMsg_RevertTranslation(
637 web_contents->GetRenderViewHost()->routing_id(), entry->GetPageID())); 638 web_contents->GetRenderViewHost()->GetRoutingID(), entry->GetPageID()));
638 639
639 TranslateTabHelper* helper = TabContentsWrapper::GetCurrentWrapperForContents( 640 TranslateTabHelper* helper = TabContentsWrapper::GetCurrentWrapperForContents(
640 web_contents)->translate_tab_helper(); 641 web_contents)->translate_tab_helper();
641 helper->language_state().set_current_language( 642 helper->language_state().set_current_language(
642 helper->language_state().original_language()); 643 helper->language_state().original_language());
643 } 644 }
644 645
645 void TranslateManager::ReportLanguageDetectionError(WebContents* web_contents) { 646 void TranslateManager::ReportLanguageDetectionError(WebContents* web_contents) {
646 UMA_HISTOGRAM_COUNTS("Translate.ReportLanguageDetectionError", 1); 647 UMA_HISTOGRAM_COUNTS("Translate.ReportLanguageDetectionError", 1);
647 GURL page_url = web_contents->GetController().GetActiveEntry()->GetURL(); 648 GURL page_url = web_contents->GetController().GetActiveEntry()->GetURL();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 } 682 }
682 683
683 TabContentsWrapper* wrapper = 684 TabContentsWrapper* wrapper =
684 TabContentsWrapper::GetCurrentWrapperForContents(tab); 685 TabContentsWrapper::GetCurrentWrapperForContents(tab);
685 if (!wrapper || !wrapper->translate_tab_helper()) 686 if (!wrapper || !wrapper->translate_tab_helper())
686 return; 687 return;
687 688
688 wrapper->translate_tab_helper()->language_state().set_translation_pending( 689 wrapper->translate_tab_helper()->language_state().set_translation_pending(
689 true); 690 true);
690 tab->GetRenderViewHost()->Send(new ChromeViewMsg_TranslatePage( 691 tab->GetRenderViewHost()->Send(new ChromeViewMsg_TranslatePage(
691 tab->GetRenderViewHost()->routing_id(), entry->GetPageID(), 692 tab->GetRenderViewHost()->GetRoutingID(), entry->GetPageID(),
692 translate_script, source_lang, target_lang)); 693 translate_script, source_lang, target_lang));
693 } 694 }
694 695
695 void TranslateManager::PageTranslated(WebContents* tab, 696 void TranslateManager::PageTranslated(WebContents* tab,
696 PageTranslatedDetails* details) { 697 PageTranslatedDetails* details) {
697 TabContentsWrapper* wrapper = 698 TabContentsWrapper* wrapper =
698 TabContentsWrapper::GetCurrentWrapperForContents(tab); 699 TabContentsWrapper::GetCurrentWrapperForContents(tab);
699 InfoBarTabHelper* infobar_helper = wrapper->infobar_tab_helper(); 700 InfoBarTabHelper* infobar_helper = wrapper->infobar_tab_helper();
700 PrefService* prefs = wrapper->profile()->GetPrefs(); 701 PrefService* prefs = wrapper->profile()->GetPrefs();
701 702
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 InfoBarTabHelper* infobar_helper = wrapper->infobar_tab_helper(); 875 InfoBarTabHelper* infobar_helper = wrapper->infobar_tab_helper();
875 876
876 for (size_t i = 0; i < infobar_helper->infobar_count(); ++i) { 877 for (size_t i = 0; i < infobar_helper->infobar_count(); ++i) {
877 TranslateInfoBarDelegate* delegate = 878 TranslateInfoBarDelegate* delegate =
878 infobar_helper->GetInfoBarDelegateAt(i)->AsTranslateInfoBarDelegate(); 879 infobar_helper->GetInfoBarDelegateAt(i)->AsTranslateInfoBarDelegate();
879 if (delegate) 880 if (delegate)
880 return delegate; 881 return delegate;
881 } 882 }
882 return NULL; 883 return NULL;
883 } 884 }
OLDNEW
« no previous file with comments | « chrome/browser/task_manager/task_manager_resource_providers.cc ('k') | chrome/browser/ui/browser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698