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