• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
accept_languages()25   TranslateAcceptLanguages& accept_languages() { return accept_languages_; }
26 
27  private:
28   TranslateAcceptLanguages accept_languages_;
29   DISALLOW_COPY_AND_ASSIGN(TranslateAcceptLanguagesService);
30 };
31 
TranslateAcceptLanguagesService(PrefService * prefs)32 TranslateAcceptLanguagesService::TranslateAcceptLanguagesService(
33     PrefService* prefs)
34     : accept_languages_(prefs, prefs::kAcceptLanguages) {}
35 
~TranslateAcceptLanguagesService()36 TranslateAcceptLanguagesService::~TranslateAcceptLanguagesService() {}
37 
38 }  // namespace
39 
40 // static
41 TranslateAcceptLanguagesFactory*
GetInstance()42 TranslateAcceptLanguagesFactory::GetInstance() {
43   return Singleton<TranslateAcceptLanguagesFactory>::get();
44 }
45 
46 // static
GetForBrowserContext(content::BrowserContext * context)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 
TranslateAcceptLanguagesFactory()55 TranslateAcceptLanguagesFactory::TranslateAcceptLanguagesFactory()
56     : BrowserContextKeyedServiceFactory(
57           "TranslateAcceptLanguagesService",
58           BrowserContextDependencyManager::GetInstance()) {}
59 
~TranslateAcceptLanguagesFactory()60 TranslateAcceptLanguagesFactory::~TranslateAcceptLanguagesFactory() {}
61 
BuildServiceInstanceFor(content::BrowserContext * browser_context) const62 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*
GetBrowserContextToUse(content::BrowserContext * context) const69 TranslateAcceptLanguagesFactory::GetBrowserContextToUse(
70     content::BrowserContext* context) const {
71   return chrome::GetBrowserContextRedirectedInIncognito(context);
72 }
73