signin_error_notifier_factory_ash.cc revision effb81e5f8246d0db0270817048dc992db66e9fb
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/signin/signin_error_notifier_factory_ash.h"
6
7#include "ash/shell.h"
8#include "chrome/browser/browser_process.h"
9#include "chrome/browser/profiles/profile.h"
10#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
11#include "chrome/browser/signin/signin_error_notifier_ash.h"
12#include "components/keyed_service/content/browser_context_dependency_manager.h"
13#include "components/signin/core/browser/profile_oauth2_token_service.h"
14
15SigninErrorNotifierFactory::SigninErrorNotifierFactory()
16    : BrowserContextKeyedServiceFactory(
17        "SigninErrorNotifier",
18        BrowserContextDependencyManager::GetInstance()) {
19  DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance());
20}
21
22SigninErrorNotifierFactory::~SigninErrorNotifierFactory() {}
23
24// static
25SigninErrorNotifier* SigninErrorNotifierFactory::GetForProfile(
26    Profile* profile) {
27  return static_cast<SigninErrorNotifier*>(
28      GetInstance()->GetServiceForBrowserContext(profile, true));
29}
30
31// static
32SigninErrorNotifierFactory* SigninErrorNotifierFactory::GetInstance() {
33  return Singleton<SigninErrorNotifierFactory>::get();
34}
35
36KeyedService* SigninErrorNotifierFactory::BuildServiceInstanceFor(
37    content::BrowserContext* context) const {
38  if (!ash::Shell::HasInstance())
39    return NULL;
40
41  Profile* profile = static_cast<Profile*>(context);
42
43  SigninErrorController* controller =
44      ProfileOAuth2TokenServiceFactory::GetForProfile(profile)->
45      signin_error_controller();
46
47  return new SigninErrorNotifier(controller, profile);
48}
49