// Copyright 2014 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_ACCEPT_LANGUAGES_H_ #define CHROME_BROWSER_TRANSLATE_TRANSLATE_ACCEPT_LANGUAGES_H_ #include <set> #include <string> #include "base/basictypes.h" #include "base/prefs/pref_change_registrar.h" class PrefService; // TranslateAcceptLanguages tracks the value of the "Accept-Language" HTTP // header. class TranslateAcceptLanguages { public: // |accept_languages_pref| is the path to the preference storing the accept // languages. TranslateAcceptLanguages(PrefService* prefs, const char* accept_languages_pref); virtual ~TranslateAcceptLanguages(); // Returns true if |language| is available as Accept-Languages. |language| // will be converted if it has the synonym of accept language. static bool CanBeAcceptLanguage(const std::string& language); // Returns true if the passed language has been configured by the user as an // accept language. |language| will be converted if it has the synonym of // accept languages. bool IsAcceptLanguage(const std::string& language); private: // Initializes the |accept_languages_| language table based on the associated // preference in |prefs|. void InitAcceptLanguages(PrefService* prefs); // Set of accept languages. std::set<std::string> accept_languages_; // Listens to accept languages changes. PrefChangeRegistrar pref_change_registrar_; // Path of accept languages preference. const std::string accept_languages_pref_; DISALLOW_COPY_AND_ASSIGN(TranslateAcceptLanguages); }; #endif // CHROME_BROWSER_TRANSLATE_TRANSLATE_ACCEPT_LANGUAGES_H_