15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef CHROME_BROWSER_TRANSLATE_TRANSLATE_ACCEPT_LANGUAGES_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define CHROME_BROWSER_TRANSLATE_TRANSLATE_ACCEPT_LANGUAGES_H_ 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <set> 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <string> 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/basictypes.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/prefs/pref_change_registrar.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class PrefService; 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace translate { 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// TranslateAcceptLanguages tracks the value of the "Accept-Language" HTTP 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// header. 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class TranslateAcceptLanguages { 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // |accept_languages_pref| is the path to the preference storing the accept 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // languages. 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) TranslateAcceptLanguages(PrefService* prefs, 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const char* accept_languages_pref); 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ~TranslateAcceptLanguages(); 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns true if |language| is available as Accept-Languages. |language| 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // will be converted if it has the synonym of accept language. 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static bool CanBeAcceptLanguage(const std::string& language); 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Returns true if the passed language has been configured by the user as an 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // accept language. |language| will be converted if it has the synonym of 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // accept languages. 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool IsAcceptLanguage(const std::string& language); 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private: 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Initializes the |accept_languages_| language table based on the associated 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // preference in |prefs|. 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void InitAcceptLanguages(PrefService* prefs); 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Set of accept languages. 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::set<std::string> accept_languages_; 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Listens to accept languages changes. 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PrefChangeRegistrar pref_change_registrar_; 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Path of accept languages preference. 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string accept_languages_pref_; 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TranslateAcceptLanguages); 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace translate 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // CHROME_BROWSER_TRANSLATE_TRANSLATE_ACCEPT_LANGUAGES_H_ 58