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_ |