1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_TRANSLATE_CHROME_TRANSLATE_CLIENT_H_
#define CHROME_BROWSER_TRANSLATE_CHROME_TRANSLATE_CLIENT_H_
#include <memory>
#include <string>
#include "base/macros.h"
#include "chrome/browser/ui/translate/translate_bubble_model.h"
#include "components/translate/content/browser/content_translate_driver.h"
#include "components/translate/core/browser/translate_client.h"
#include "components/translate/core/browser/translate_step.h"
#include "components/translate/core/common/translate_errors.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
namespace content {
class BrowserContext;
class WebContents;
} // namespace content
class PrefService;
namespace translate {
class LanguageModel;
class LanguageState;
class TranslateAcceptLanguages;
class TranslatePrefs;
class TranslateManager;
} // namespace translate
enum class ShowTranslateBubbleResult;
class ChromeTranslateClient
: public translate::TranslateClient,
public translate::ContentTranslateDriver::Observer,
public content::WebContentsObserver,
public content::WebContentsUserData<ChromeTranslateClient> {
public:
~ChromeTranslateClient() override;
// Gets the LanguageState associated with the page.
translate::LanguageState& GetLanguageState();
// Returns the ContentTranslateDriver instance associated with this
// WebContents.
translate::ContentTranslateDriver& translate_driver() {
return translate_driver_;
}
// Helper method to return a new TranslatePrefs instance.
static std::unique_ptr<translate::TranslatePrefs> CreateTranslatePrefs(
PrefService* prefs);
// Helper method to return the TranslateAcceptLanguages instance associated
// with |browser_context|.
static translate::TranslateAcceptLanguages* GetTranslateAcceptLanguages(
content::BrowserContext* browser_context);
// Helper method to return the TranslateManager instance associated with
// |web_contents|, or NULL if there is no such associated instance.
static translate::TranslateManager* GetManagerFromWebContents(
content::WebContents* web_contents);
// Gets |source| and |target| language for translation.
static void GetTranslateLanguages(content::WebContents* web_contents,
std::string* source,
std::string* target);
static void BindContentTranslateDriver(
content::RenderFrameHost* render_frame_host,
translate::mojom::ContentTranslateDriverRequest request);
// Gets the associated TranslateManager.
translate::TranslateManager* GetTranslateManager();
// Gets the associated WebContents. Returns NULL if the WebContents is being
// destroyed.
content::WebContents* GetWebContents();
// TranslateClient implementation.
translate::TranslateDriver* GetTranslateDriver() override;
PrefService* GetPrefs() override;
std::unique_ptr<translate::TranslatePrefs> GetTranslatePrefs() override;
translate::TranslateAcceptLanguages* GetTranslateAcceptLanguages() override;
int GetInfobarIconID() const override;
#if !defined(USE_AURA)
std::unique_ptr<infobars::InfoBar> CreateInfoBar(
std::unique_ptr<translate::TranslateInfoBarDelegate> delegate)
const override;
#endif
void ShowTranslateUI(translate::TranslateStep step,
const std::string& source_language,
const std::string& target_language,
translate::TranslateErrors::Type error_type,
bool triggered_from_menu) override;
bool IsTranslatableURL(const GURL& url) override;
void ShowReportLanguageDetectionErrorUI(const GURL& report_url) override;
// ContentTranslateDriver::Observer implementation.
void OnLanguageDetermined(
const translate::LanguageDetectionDetails& details) override;
void OnPageTranslated(const std::string& original_lang,
const std::string& translated_lang,
translate::TranslateErrors::Type error_type) override;
private:
explicit ChromeTranslateClient(content::WebContents* web_contents);
friend class content::WebContentsUserData<ChromeTranslateClient>;
// content::WebContentsObserver implementation.
void WebContentsDestroyed() override;
// Shows the translate bubble.
ShowTranslateBubbleResult ShowBubble(
translate::TranslateStep step,
translate::TranslateErrors::Type error_type);
translate::ContentTranslateDriver translate_driver_;
std::unique_ptr<translate::TranslateManager> translate_manager_;
// Model to be notified about detected language of every page visited. Not
// owned here.
translate::LanguageModel* language_model_;
DISALLOW_COPY_AND_ASSIGN(ChromeTranslateClient);
};
#endif // CHROME_BROWSER_TRANSLATE_CHROME_TRANSLATE_CLIENT_H_
|