1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/signin/signin_error_notifier_factory_ash.h" 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ash/shell.h" 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/browser_process.h" 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/browser/signin/signin_error_notifier_ash.h" 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_dependency_manager.h" 13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "components/signin/core/browser/profile_oauth2_token_service.h" 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)SigninErrorNotifierFactory::SigninErrorNotifierFactory() 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) : BrowserContextKeyedServiceFactory( 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) "SigninErrorNotifier", 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) BrowserContextDependencyManager::GetInstance()) { 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance()); 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)SigninErrorNotifierFactory::~SigninErrorNotifierFactory() {} 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// static 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)SigninErrorNotifier* SigninErrorNotifierFactory::GetForProfile( 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Profile* profile) { 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return static_cast<SigninErrorNotifier*>( 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GetInstance()->GetServiceForBrowserContext(profile, true)); 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// static 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)SigninErrorNotifierFactory* SigninErrorNotifierFactory::GetInstance() { 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return Singleton<SigninErrorNotifierFactory>::get(); 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* SigninErrorNotifierFactory::BuildServiceInstanceFor( 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::BrowserContext* context) const { 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) if (!ash::Shell::HasInstance()) 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return NULL; 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) Profile* profile = static_cast<Profile*>(context); 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) SigninErrorController* controller = 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ProfileOAuth2TokenServiceFactory::GetForProfile(profile)-> 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) signin_error_controller(); 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return new SigninErrorNotifier(controller, profile); 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 49