1// Copyright 2014 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_ACCEPT_LANGUAGES_H_ 6#define CHROME_BROWSER_TRANSLATE_TRANSLATE_ACCEPT_LANGUAGES_H_ 7 8#include <set> 9#include <string> 10 11#include "base/basictypes.h" 12#include "base/prefs/pref_change_registrar.h" 13 14class PrefService; 15 16namespace translate { 17 18// TranslateAcceptLanguages tracks the value of the "Accept-Language" HTTP 19// header. 20class TranslateAcceptLanguages { 21 public: 22 23 // |accept_languages_pref| is the path to the preference storing the accept 24 // languages. 25 TranslateAcceptLanguages(PrefService* prefs, 26 const char* accept_languages_pref); 27 virtual ~TranslateAcceptLanguages(); 28 29 // Returns true if |language| is available as Accept-Languages. |language| 30 // will be converted if it has the synonym of accept language. 31 static bool CanBeAcceptLanguage(const std::string& language); 32 33 // Returns true if the passed language has been configured by the user as an 34 // accept language. |language| will be converted if it has the synonym of 35 // accept languages. 36 bool IsAcceptLanguage(const std::string& language); 37 38 private: 39 // Initializes the |accept_languages_| language table based on the associated 40 // preference in |prefs|. 41 void InitAcceptLanguages(PrefService* prefs); 42 43 // Set of accept languages. 44 std::set<std::string> accept_languages_; 45 46 // Listens to accept languages changes. 47 PrefChangeRegistrar pref_change_registrar_; 48 49 // Path of accept languages preference. 50 const std::string accept_languages_pref_; 51 52 DISALLOW_COPY_AND_ASSIGN(TranslateAcceptLanguages); 53}; 54 55} // namespace translate 56 57#endif // CHROME_BROWSER_TRANSLATE_TRANSLATE_ACCEPT_LANGUAGES_H_ 58