Home | History | Annotate | Download | only in translate
      1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_TRANSLATE_TRANSLATE_PREFS_H_
      6 #define CHROME_BROWSER_TRANSLATE_TRANSLATE_PREFS_H_
      7 #pragma once
      8 
      9 #include <string>
     10 
     11 #include "googleurl/src/gurl.h"
     12 
     13 class DictionaryValue;
     14 class ListValue;
     15 class PrefService;
     16 
     17 class TranslatePrefs {
     18  public:
     19   static const char kPrefTranslateLanguageBlacklist[];
     20   static const char kPrefTranslateSiteBlacklist[];
     21   static const char kPrefTranslateWhitelists[];
     22   static const char kPrefTranslateDeniedCount[];
     23   static const char kPrefTranslateAcceptedCount[];
     24 
     25   explicit TranslatePrefs(PrefService* user_prefs);
     26 
     27   bool IsLanguageBlacklisted(const std::string& original_language);
     28   void BlacklistLanguage(const std::string& original_language);
     29   void RemoveLanguageFromBlacklist(const std::string& original_language);
     30 
     31   bool IsSiteBlacklisted(const std::string& site);
     32   void BlacklistSite(const std::string& site);
     33   void RemoveSiteFromBlacklist(const std::string& site);
     34 
     35   bool IsLanguagePairWhitelisted(const std::string& original_language,
     36       const std::string& target_language);
     37   void WhitelistLanguagePair(const std::string& original_language,
     38       const std::string& target_language);
     39   void RemoveLanguagePairFromWhitelist(const std::string& original_language,
     40       const std::string& target_language);
     41 
     42   // These methods are used to track how many times the user has denied the
     43   // translation for a specific language. (So we can present a UI to black-list
     44   // that language if the user keeps denying translations).
     45   int GetTranslationDeniedCount(const std::string& language);
     46   void IncrementTranslationDeniedCount(const std::string& language);
     47   void ResetTranslationDeniedCount(const std::string& language);
     48 
     49   // These methods are used to track how many times the user has accepted the
     50   // translation for a specific language. (So we can present a UI to white-list
     51   // that langueg if the user keeps accepting translations).
     52   int GetTranslationAcceptedCount(const std::string& language);
     53   void IncrementTranslationAcceptedCount(const std::string& language);
     54   void ResetTranslationAcceptedCount(const std::string& language);
     55 
     56   static bool CanTranslate(PrefService* user_prefs,
     57       const std::string& original_language, const GURL& url);
     58   static bool ShouldAutoTranslate(PrefService* user_prefs,
     59       const std::string& original_language, std::string* target_language);
     60   static void RegisterUserPrefs(PrefService* user_prefs);
     61 
     62  private:
     63   static void MigrateTranslateWhitelists(PrefService* user_prefs);
     64   bool IsValueBlacklisted(const char* pref_id, const std::string& value);
     65   void BlacklistValue(const char* pref_id, const std::string& value);
     66   void RemoveValueFromBlacklist(const char* pref_id, const std::string& value);
     67   bool IsValueInList(const ListValue* list, const std::string& value);
     68   bool IsLanguageWhitelisted(const std::string& original_language,
     69       std::string* target_language);
     70 
     71   // Retrieves the dictionary mapping the number of times translation has been
     72   // denied for a language, creating it if necessary.
     73   DictionaryValue* GetTranslationDeniedCountDictionary();
     74 
     75   // Retrieves the dictionary mapping the number of times translation has been
     76   // accepted for a language, creating it if necessary.
     77   DictionaryValue* GetTranslationAcceptedCountDictionary();
     78 
     79   PrefService* prefs_;  // Weak.
     80 };
     81 
     82 #endif  // CHROME_BROWSER_TRANSLATE_TRANSLATE_PREFS_H_
     83