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 #include "chrome/browser/translate/translate_accept_languages_factory.h" 6 7 #include "base/prefs/pref_service.h" 8 #include "chrome/browser/profiles/incognito_helpers.h" 9 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/common/pref_names.h" 11 #include "components/keyed_service/content/browser_context_dependency_manager.h" 12 #include "components/keyed_service/core/keyed_service.h" 13 #include "components/translate/core/browser/translate_accept_languages.h" 14 15 namespace { 16 17 // TranslateAcceptLanguagesService is a thin container for 18 // TranslateAcceptLanguages to enable associating it with a BrowserContext. 19 class TranslateAcceptLanguagesService : public KeyedService { 20 public: 21 explicit TranslateAcceptLanguagesService(PrefService* prefs); 22 virtual ~TranslateAcceptLanguagesService(); 23 24 // Returns the associated TranslateAcceptLanguages. 25 TranslateAcceptLanguages& accept_languages() { return accept_languages_; } 26 27 private: 28 TranslateAcceptLanguages accept_languages_; 29 DISALLOW_COPY_AND_ASSIGN(TranslateAcceptLanguagesService); 30 }; 31 32 TranslateAcceptLanguagesService::TranslateAcceptLanguagesService( 33 PrefService* prefs) 34 : accept_languages_(prefs, prefs::kAcceptLanguages) {} 35 36 TranslateAcceptLanguagesService::~TranslateAcceptLanguagesService() {} 37 38 } // namespace 39 40 // static 41 TranslateAcceptLanguagesFactory* 42 TranslateAcceptLanguagesFactory::GetInstance() { 43 return Singleton<TranslateAcceptLanguagesFactory>::get(); 44 } 45 46 // static 47 TranslateAcceptLanguages* TranslateAcceptLanguagesFactory::GetForBrowserContext( 48 content::BrowserContext* context) { 49 TranslateAcceptLanguagesService* service = 50 static_cast<TranslateAcceptLanguagesService*>( 51 GetInstance()->GetServiceForBrowserContext(context, true)); 52 return &service->accept_languages(); 53 } 54 55 TranslateAcceptLanguagesFactory::TranslateAcceptLanguagesFactory() 56 : BrowserContextKeyedServiceFactory( 57 "TranslateAcceptLanguagesService", 58 BrowserContextDependencyManager::GetInstance()) {} 59 60 TranslateAcceptLanguagesFactory::~TranslateAcceptLanguagesFactory() {} 61 62 KeyedService* TranslateAcceptLanguagesFactory::BuildServiceInstanceFor( 63 content::BrowserContext* browser_context) const { 64 Profile* profile = Profile::FromBrowserContext(browser_context); 65 return new TranslateAcceptLanguagesService(profile->GetPrefs()); 66 } 67 68 content::BrowserContext* 69 TranslateAcceptLanguagesFactory::GetBrowserContextToUse( 70 content::BrowserContext* context) const { 71 return chrome::GetBrowserContextRedirectedInIncognito(context); 72 } 73