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..d3d98aaf3d4b45153e5037be49637a991f0ac0f8 | 
| --- /dev/null | 
| +++ b/chrome/browser/translate/translate_ui_delegate.h | 
| @@ -0,0 +1,139 @@ | 
| +// 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. | 
| +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(); } | 
| + | 
| + // Returns the ISO code for the language at |index|. | 
| + std::string language_code_at(size_t index) const { | 
| 
 
Takashi Toyoshima
2013/09/10 09:33:16
I'm not sure, but having these function as inline
 
hajimehoshi
2013/09/12 06:16:04
I agree.  I moved the implementations of language_
 
 | 
| + DCHECK_LT(index, num_languages()); | 
| + return languages_[index].first; | 
| + } | 
| + | 
| + // Returns the displayable name for the language at |index|. | 
| + string16 language_name_at(size_t index) const { | 
| + if (index == kNoIndex) | 
| + return string16(); | 
| + DCHECK_LT(index, num_languages()); | 
| + return languages_[index].second; | 
| + } | 
| + | 
| + size_t original_language_index() const { return original_language_index_; } | 
| + void set_original_language_index(size_t language_index) { | 
| + 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) { | 
| + DCHECK_LT(language_index, num_languages()); | 
| + target_language_index_ = language_index; | 
| + } | 
| + | 
| + // The source language for Translate. | 
| + std::string original_language_code() const { | 
| + return (original_language_index() == kNoIndex) ? | 
| + chrome::kUnknownLanguageCode : | 
| + language_code_at(original_language_index()); | 
| + } | 
| + | 
| + // The target language for Translate. | 
| + std::string target_language_code() const { | 
| + return language_code_at(target_language_index()); | 
| + } | 
| + | 
| + // 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_ |