blob: b296c52d2e8f911129e614213e3535ebb5101546 [file] [log] [blame]
// 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 COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_ACCEPT_LANGUAGES_H_
#define COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_ACCEPT_LANGUAGES_H_
#include <set>
#include <string>
#include "base/macros.h"
#include "components/prefs/pref_change_registrar.h"
class PrefService;
namespace translate {
// 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);
};
} // namespace translate
#endif // COMPONENTS_TRANSLATE_CORE_BROWSER_TRANSLATE_ACCEPT_LANGUAGES_H_