Chromium Code Reviews| Index: chrome/browser/translate/translate_ui_delegate.h |
| diff --git a/chrome/browser/translate/translate_ui_delegate.h b/chrome/browser/translate/translate_ui_delegate.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4ddb77567551e5e1cc54bd22f14a97e4745fd70b |
| --- /dev/null |
| +++ b/chrome/browser/translate/translate_ui_delegate.h |
| @@ -0,0 +1,127 @@ |
| +// Copyright 2013 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_TRANSLATE_UI_DELEGATE_H_ |
| +#define CHROME_BROWSER_TRANSLATE_TRANSLATE_UI_DELEGATE_H_ |
| + |
| +#include <string> |
| +#include <vector> |
| + |
| +#include "base/logging.h" |
| +#include "base/memory/scoped_ptr.h" |
| +#include "base/strings/string16.h" |
| +#include "chrome/common/chrome_constants.h" |
| + |
| +class TranslatePrefs; |
| + |
| +namespace content { |
| +class WebContents; |
| +} // namespace content |
| + |
| +// The TranslateUIDelegate is a generic delegate for UI which offers Translate |
| +// feature to the user. |
| +// This object holds the reference to prefs object, so this object must be alive |
| +// while prefs object lives. |
|
Takashi Toyoshima
2013/09/12 07:08:40
You should not use abbreviation in comments. So pr
hajimehoshi
2013/09/12 07:48:16
I added a comment about the life cycle of Translat
|
| +class TranslateUIDelegate { |
| + public: |
| + static const size_t kNoIndex; |
| + |
| + TranslateUIDelegate(content::WebContents* web_contents, |
| + const std::string& original_language, |
| + const std::string& target_language); |
| + virtual ~TranslateUIDelegate(); |
| + |
| + content::WebContents* web_contents() { return web_contents_; } |
| + |
| + // Returns the number of languages supported. |
| + size_t num_languages() const { return languages_.size(); } |
| + |
| + size_t original_language_index() const { return original_language_index_; } |
| + void set_original_language_index(size_t language_index) { |
|
Takashi Toyoshima
2013/09/12 07:08:40
ditto.
hajimehoshi
2013/09/12 07:48:16
Done.
|
| + DCHECK_LT(language_index, num_languages()); |
| + original_language_index_ = language_index; |
| + } |
| + |
| + size_t target_language_index() const { return target_language_index_; } |
| + void set_target_language_index(size_t language_index) { |
|
Takashi Toyoshima
2013/09/12 07:08:40
ditto.
hajimehoshi
2013/09/12 07:48:16
Done.
|
| + DCHECK_LT(language_index, num_languages()); |
| + target_language_index_ = language_index; |
| + } |
| + |
| + // Returns the ISO code for the language at |index|. |
| + std::string GetLanguageCodeAt(size_t index) const; |
| + |
| + // Returns the displayable name for the language at |index|. |
| + string16 GetLanguageNameAt(size_t index) const; |
| + |
| + // The source language for Translate. |
| + std::string GetOriginalLanguageCode() const; |
| + |
| + // The target language for Translate. |
| + std::string GetTargetLanguageCode() const; |
| + |
| + // Starts translating the current page. |
| + void Translate(); |
| + |
| + // Reverts translation. |
| + void RevertTranslation(); |
| + |
| + // Processes when the user declines translation. |
| + void TranslationDeclined(); |
| + |
| + // Returns true if the current language is blocked. |
| + bool IsLanguageBlocked(); |
| + |
| + // Sets the value if the current language is blocked. |
| + void SetLanguageBlocked(bool value); |
| + |
| + // Returns true if the current webpage is blacklisted. |
| + bool IsSiteBlacklisted(); |
| + |
| + // Sets the value if the current webpage is blacklisted. |
| + void SetSiteBlacklist(bool value); |
| + |
| + // Returns true if the webpage in the current original language should be |
| + // translated into the current target language automatically. |
| + bool ShouldAlwaysTranslate(); |
| + |
| + // Sets the value if the webpage in the current original language should be |
| + // translated into the current target language automatically. |
| + void SetAlwaysTranslate(bool value); |
| + |
| + private: |
| + // Gets the host of the page being translated, or an empty string if no URL is |
| + // associated with the current page. |
| + std::string GetPageHost(); |
| + |
| + content::WebContents* web_contents_; |
| + |
| + typedef std::pair<std::string, string16> LanguageNamePair; |
| + |
| + // The list supported languages for translation. |
| + // The pair first string is the language ISO code (ex: en, fr...), the second |
| + // string is the displayable name on the current locale. |
| + // The languages are sorted alphabetically based on the displayable name. |
| + std::vector<LanguageNamePair> languages_; |
| + |
| + // The index for language the page is originally in. |
| + size_t original_language_index_; |
| + |
| + // The index for language the page is originally in that was originally |
| + // reported (original_language_index_ changes if the user selects a new |
| + // original language, but this one does not). This is necessary to report |
| + // language detection errors with the right original language even if the user |
| + // changed the original language. |
| + size_t initial_original_language_index_; |
| + |
| + // The index for language the page should be translated to. |
| + size_t target_language_index_; |
| + |
| + // The translation related preferences. |
| + scoped_ptr<TranslatePrefs> prefs_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(TranslateUIDelegate); |
| +}; |
| + |
| +#endif // CHROME_BROWSER_TRANSLATE_TRANSLATE_UI_DELEGATE_H_ |