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)#include "chrome/browser/translate/translate_accept_languages_factory.h"
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/prefs/pref_service.h"
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/profiles/incognito_helpers.h"
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/profiles/profile.h"
105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/common/pref_names.h"
11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_dependency_manager.h"
12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/core/keyed_service.h"
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/translate/core/browser/translate_accept_languages.h"
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace {
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// TranslateAcceptLanguagesService is a thin container for
185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// TranslateAcceptLanguages to enable associating it with a BrowserContext.
19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class TranslateAcceptLanguagesService : public KeyedService {
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public:
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  explicit TranslateAcceptLanguagesService(PrefService* prefs);
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual ~TranslateAcceptLanguagesService();
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Returns the associated TranslateAcceptLanguages.
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  translate::TranslateAcceptLanguages& accept_languages() {
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    return accept_languages_;
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  }
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private:
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  translate::TranslateAcceptLanguages accept_languages_;
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(TranslateAcceptLanguagesService);
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)};
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TranslateAcceptLanguagesService::TranslateAcceptLanguagesService(
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    PrefService* prefs)
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    : accept_languages_(prefs, prefs::kAcceptLanguages) {}
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TranslateAcceptLanguagesService::~TranslateAcceptLanguagesService() {}
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}  // namespace
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// static
435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TranslateAcceptLanguagesFactory*
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TranslateAcceptLanguagesFactory::GetInstance() {
455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return Singleton<TranslateAcceptLanguagesFactory>::get();
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// static
495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)translate::TranslateAcceptLanguages*
505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TranslateAcceptLanguagesFactory::GetForBrowserContext(
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    content::BrowserContext* context) {
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  TranslateAcceptLanguagesService* service =
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      static_cast<TranslateAcceptLanguagesService*>(
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          GetInstance()->GetServiceForBrowserContext(context, true));
555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return &service->accept_languages();
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TranslateAcceptLanguagesFactory::TranslateAcceptLanguagesFactory()
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    : BrowserContextKeyedServiceFactory(
605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          "TranslateAcceptLanguagesService",
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          BrowserContextDependencyManager::GetInstance()) {}
625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TranslateAcceptLanguagesFactory::~TranslateAcceptLanguagesFactory() {}
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
65a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* TranslateAcceptLanguagesFactory::BuildServiceInstanceFor(
665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    content::BrowserContext* browser_context) const {
675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  Profile* profile = Profile::FromBrowserContext(browser_context);
685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return new TranslateAcceptLanguagesService(profile->GetPrefs());
695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)content::BrowserContext*
725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TranslateAcceptLanguagesFactory::GetBrowserContextToUse(
735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    content::BrowserContext* context) const {
745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return chrome::GetBrowserContextRedirectedInIncognito(context);
755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
76