// Copyright (c) 2010 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_PREFS_H_ #define CHROME_BROWSER_TRANSLATE_TRANSLATE_PREFS_H_ #pragma once #include <string> #include "googleurl/src/gurl.h" class DictionaryValue; class ListValue; class PrefService; class TranslatePrefs { public: static const char kPrefTranslateLanguageBlacklist[]; static const char kPrefTranslateSiteBlacklist[]; static const char kPrefTranslateWhitelists[]; static const char kPrefTranslateDeniedCount[]; static const char kPrefTranslateAcceptedCount[]; explicit TranslatePrefs(PrefService* user_prefs); bool IsLanguageBlacklisted(const std::string& original_language); void BlacklistLanguage(const std::string& original_language); void RemoveLanguageFromBlacklist(const std::string& original_language); bool IsSiteBlacklisted(const std::string& site); void BlacklistSite(const std::string& site); void RemoveSiteFromBlacklist(const std::string& site); bool IsLanguagePairWhitelisted(const std::string& original_language, const std::string& target_language); void WhitelistLanguagePair(const std::string& original_language, const std::string& target_language); void RemoveLanguagePairFromWhitelist(const std::string& original_language, const std::string& target_language); // These methods are used to track how many times the user has denied the // translation for a specific language. (So we can present a UI to black-list // that language if the user keeps denying translations). int GetTranslationDeniedCount(const std::string& language); void IncrementTranslationDeniedCount(const std::string& language); void ResetTranslationDeniedCount(const std::string& language); // These methods are used to track how many times the user has accepted the // translation for a specific language. (So we can present a UI to white-list // that langueg if the user keeps accepting translations). int GetTranslationAcceptedCount(const std::string& language); void IncrementTranslationAcceptedCount(const std::string& language); void ResetTranslationAcceptedCount(const std::string& language); static bool CanTranslate(PrefService* user_prefs, const std::string& original_language, const GURL& url); static bool ShouldAutoTranslate(PrefService* user_prefs, const std::string& original_language, std::string* target_language); static void RegisterUserPrefs(PrefService* user_prefs); private: static void MigrateTranslateWhitelists(PrefService* user_prefs); bool IsValueBlacklisted(const char* pref_id, const std::string& value); void BlacklistValue(const char* pref_id, const std::string& value); void RemoveValueFromBlacklist(const char* pref_id, const std::string& value); bool IsValueInList(const ListValue* list, const std::string& value); bool IsLanguageWhitelisted(const std::string& original_language, std::string* target_language); // Retrieves the dictionary mapping the number of times translation has been // denied for a language, creating it if necessary. DictionaryValue* GetTranslationDeniedCountDictionary(); // Retrieves the dictionary mapping the number of times translation has been // accepted for a language, creating it if necessary. DictionaryValue* GetTranslationAcceptedCountDictionary(); PrefService* prefs_; // Weak. }; #endif // CHROME_BROWSER_TRANSLATE_TRANSLATE_PREFS_H_