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