Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / translate / chrome_translate_client.h
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 #ifndef CHROME_BROWSER_TRANSLATE_CHROME_TRANSLATE_CLIENT_H_
6 #define CHROME_BROWSER_TRANSLATE_CHROME_TRANSLATE_CLIENT_H_
7
8 #include <string>
9
10 #include "base/memory/scoped_ptr.h"
11 #include "chrome/browser/ui/translate/translate_bubble_model.h"
12 #include "components/translate/content/browser/browser_cld_data_provider.h"
13 #include "components/translate/content/browser/content_translate_driver.h"
14 #include "components/translate/core/browser/translate_client.h"
15 #include "components/translate/core/browser/translate_step.h"
16 #include "components/translate/core/common/translate_errors.h"
17 #include "content/public/browser/web_contents_observer.h"
18 #include "content/public/browser/web_contents_user_data.h"
19
20 namespace content {
21 class BrowserContext;
22 class WebContents;
23 }  // namespace content
24
25 namespace test {
26 class ScopedCLDDynamicDataHarness;
27 }  // namespace test
28
29 class PrefService;
30
31 namespace translate {
32 class LanguageState;
33 class TranslateAcceptLanguages;
34 class TranslatePrefs;
35 class TranslateManager;
36 }  // namespace translate
37
38 class ChromeTranslateClient
39     : public translate::TranslateClient,
40       public translate::ContentTranslateDriver::Observer,
41       public content::WebContentsObserver,
42       public content::WebContentsUserData<ChromeTranslateClient> {
43  public:
44   ~ChromeTranslateClient() override;
45
46   // Gets the LanguageState associated with the page.
47   translate::LanguageState& GetLanguageState();
48
49   // Returns the ContentTranslateDriver instance associated with this
50   // WebContents.
51   translate::ContentTranslateDriver& translate_driver() {
52     return translate_driver_;
53   }
54
55   // Helper method to return a new TranslatePrefs instance.
56   static scoped_ptr<translate::TranslatePrefs> CreateTranslatePrefs(
57       PrefService* prefs);
58
59   // Helper method to return the TranslateAcceptLanguages instance associated
60   // with |browser_context|.
61   static translate::TranslateAcceptLanguages* GetTranslateAcceptLanguages(
62       content::BrowserContext* browser_context);
63
64   // Helper method to return the TranslateManager instance associated with
65   // |web_contents|, or NULL if there is no such associated instance.
66   static translate::TranslateManager* GetManagerFromWebContents(
67       content::WebContents* web_contents);
68
69   // Gets |source| and |target| language for translation.
70   static void GetTranslateLanguages(content::WebContents* web_contents,
71                                     std::string* source,
72                                     std::string* target);
73
74   // Gets the associated TranslateManager.
75   translate::TranslateManager* GetTranslateManager();
76
77   // Gets the associated WebContents. Returns NULL if the WebContents is being
78   // destroyed.
79   content::WebContents* GetWebContents();
80
81   // TranslateClient implementation.
82   translate::TranslateDriver* GetTranslateDriver() override;
83   PrefService* GetPrefs() override;
84   scoped_ptr<translate::TranslatePrefs> GetTranslatePrefs() override;
85   translate::TranslateAcceptLanguages* GetTranslateAcceptLanguages() override;
86   int GetInfobarIconID() const override;
87   scoped_ptr<infobars::InfoBar> CreateInfoBar(
88       scoped_ptr<translate::TranslateInfoBarDelegate> delegate) const override;
89   void ShowTranslateUI(translate::TranslateStep step,
90                        const std::string source_language,
91                        const std::string target_language,
92                        translate::TranslateErrors::Type error_type,
93                        bool triggered_from_menu) override;
94   bool IsTranslatableURL(const GURL& url) override;
95   void ShowReportLanguageDetectionErrorUI(const GURL& report_url) override;
96
97   // ContentTranslateDriver::Observer implementation.
98   void OnLanguageDetermined(
99       const translate::LanguageDetectionDetails& details) override;
100   void OnPageTranslated(const std::string& original_lang,
101                         const std::string& translated_lang,
102                         translate::TranslateErrors::Type error_type) override;
103
104  private:
105   explicit ChromeTranslateClient(content::WebContents* web_contents);
106   friend class content::WebContentsUserData<ChromeTranslateClient>;
107
108   // content::WebContentsObserver implementation.
109   bool OnMessageReceived(const IPC::Message& message) override;
110   void WebContentsDestroyed() override;
111
112   // Shows the translate bubble.
113   void ShowBubble(translate::TranslateStep step,
114                   translate::TranslateErrors::Type error_type);
115
116   translate::ContentTranslateDriver translate_driver_;
117   scoped_ptr<translate::TranslateManager> translate_manager_;
118
119   // Provides CLD data for this process.
120   scoped_ptr<translate::BrowserCldDataProvider> cld_data_provider_;
121
122   DISALLOW_COPY_AND_ASSIGN(ChromeTranslateClient);
123 };
124
125 #endif  // CHROME_BROWSER_TRANSLATE_CHROME_TRANSLATE_CLIENT_H_