• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "components/translate/content/browser/content_translate_driver.h"
6 
7 #include "base/logging.h"
8 #include "components/translate/content/common/translate_messages.h"
9 #include "content/public/browser/browser_context.h"
10 #include "content/public/browser/navigation_controller.h"
11 #include "content/public/browser/navigation_entry.h"
12 #include "content/public/browser/page_navigator.h"
13 #include "content/public/browser/render_view_host.h"
14 #include "content/public/browser/web_contents.h"
15 #include "content/public/common/referrer.h"
16 #include "url/gurl.h"
17 
ContentTranslateDriver(content::NavigationController * nav_controller)18 ContentTranslateDriver::ContentTranslateDriver(
19     content::NavigationController* nav_controller)
20     : navigation_controller_(nav_controller),
21       observer_(NULL) {
22   DCHECK(navigation_controller_);
23 }
24 
~ContentTranslateDriver()25 ContentTranslateDriver::~ContentTranslateDriver() {}
26 
27 // TranslateDriver methods
28 
IsLinkNavigation()29 bool ContentTranslateDriver::IsLinkNavigation() {
30   return navigation_controller_ && navigation_controller_->GetActiveEntry() &&
31          navigation_controller_->GetActiveEntry()->GetTransitionType() ==
32              content::PAGE_TRANSITION_LINK;
33 }
34 
OnTranslateEnabledChanged()35 void ContentTranslateDriver::OnTranslateEnabledChanged() {
36   if (observer_) {
37     content::WebContents* web_contents =
38         navigation_controller_->GetWebContents();
39     observer_->OnTranslateEnabledChanged(web_contents);
40   }
41 }
42 
OnIsPageTranslatedChanged()43 void ContentTranslateDriver::OnIsPageTranslatedChanged() {
44   if (observer_) {
45     content::WebContents* web_contents =
46         navigation_controller_->GetWebContents();
47     observer_->OnIsPageTranslatedChanged(web_contents);
48   }
49 }
50 
TranslatePage(const std::string & translate_script,const std::string & source_lang,const std::string & target_lang)51 void ContentTranslateDriver::TranslatePage(const std::string& translate_script,
52                                            const std::string& source_lang,
53                                            const std::string& target_lang) {
54   content::NavigationEntry* entry = navigation_controller_->GetActiveEntry();
55   if (!entry) {
56     NOTREACHED();
57     return;
58   }
59 
60   content::WebContents* web_contents = navigation_controller_->GetWebContents();
61   web_contents->GetRenderViewHost()->Send(new ChromeViewMsg_TranslatePage(
62       web_contents->GetRenderViewHost()->GetRoutingID(),
63       entry->GetPageID(),
64       translate_script,
65       source_lang,
66       target_lang));
67 }
68 
RevertTranslation()69 void ContentTranslateDriver::RevertTranslation() {
70   content::NavigationEntry* entry = navigation_controller_->GetActiveEntry();
71   if (!entry) {
72     NOTREACHED();
73     return;
74   }
75 
76   content::WebContents* web_contents = navigation_controller_->GetWebContents();
77   web_contents->GetRenderViewHost()->Send(new ChromeViewMsg_RevertTranslation(
78       web_contents->GetRenderViewHost()->GetRoutingID(), entry->GetPageID()));
79 }
80 
IsOffTheRecord()81 bool ContentTranslateDriver::IsOffTheRecord() {
82   return navigation_controller_->GetBrowserContext()->IsOffTheRecord();
83 }
84 
GetContentsMimeType()85 const std::string& ContentTranslateDriver::GetContentsMimeType() {
86   return navigation_controller_->GetWebContents()->GetContentsMimeType();
87 }
88 
GetLastCommittedURL()89 const GURL& ContentTranslateDriver::GetLastCommittedURL() {
90   return navigation_controller_->GetWebContents()->GetLastCommittedURL();
91 }
92 
GetActiveURL()93 const GURL& ContentTranslateDriver::GetActiveURL() {
94   content::NavigationEntry* entry = navigation_controller_->GetActiveEntry();
95   if (!entry)
96     return GURL::EmptyGURL();
97   return entry->GetURL();
98 }
99 
GetVisibleURL()100 const GURL& ContentTranslateDriver::GetVisibleURL() {
101   return navigation_controller_->GetWebContents()->GetVisibleURL();
102 }
103 
HasCurrentPage()104 bool ContentTranslateDriver::HasCurrentPage() {
105   return (navigation_controller_->GetActiveEntry() != NULL);
106 }
107 
GetCurrentPageID()108 int ContentTranslateDriver::GetCurrentPageID() {
109   DCHECK(HasCurrentPage());
110   content::NavigationEntry* entry = navigation_controller_->GetActiveEntry();
111   return entry->GetPageID();
112 }
113 
OpenUrlInNewTab(const GURL & url)114 void ContentTranslateDriver::OpenUrlInNewTab(const GURL& url) {
115   content::OpenURLParams params(url,
116                                 content::Referrer(),
117                                 NEW_FOREGROUND_TAB,
118                                 content::PAGE_TRANSITION_LINK,
119                                 false);
120   navigation_controller_->GetWebContents()->OpenURL(params);
121 }
122