install_tracker_factory.cc revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
1// Copyright (c) 2013 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/extensions/install_tracker_factory.h"
6
7#include "base/memory/singleton.h"
8#include "chrome/browser/extensions/extension_service.h"
9#include "chrome/browser/extensions/extension_system.h"
10#include "chrome/browser/extensions/extension_system_factory.h"
11#include "chrome/browser/extensions/install_tracker.h"
12#include "chrome/browser/profiles/incognito_helpers.h"
13#include "chrome/browser/profiles/profile.h"
14#include "components/browser_context_keyed_service/browser_context_dependency_manager.h"
15
16namespace extensions {
17
18// static
19InstallTracker* InstallTrackerFactory::GetForProfile(Profile* profile) {
20  return static_cast<InstallTracker*>(
21      GetInstance()->GetServiceForBrowserContext(profile, true));
22}
23
24InstallTrackerFactory* InstallTrackerFactory::GetInstance() {
25  return Singleton<InstallTrackerFactory>::get();
26}
27
28InstallTrackerFactory::InstallTrackerFactory()
29    : BrowserContextKeyedServiceFactory(
30        "InstallTracker",
31        BrowserContextDependencyManager::GetInstance()) {
32  DependsOn(ExtensionSystemFactory::GetInstance());
33}
34
35InstallTrackerFactory::~InstallTrackerFactory() {
36}
37
38BrowserContextKeyedService* InstallTrackerFactory::BuildServiceInstanceFor(
39    content::BrowserContext* context) const {
40  Profile* profile = static_cast<Profile*>(context);
41  ExtensionService* service =
42      extensions::ExtensionSystem::Get(profile)->extension_service();
43  return new InstallTracker(profile, service->extension_prefs());
44}
45
46content::BrowserContext* InstallTrackerFactory::GetBrowserContextToUse(
47    content::BrowserContext* context) const {
48  // The installs themselves are routed to the non-incognito profile and so
49  // should the install progress.
50  return chrome::GetBrowserContextRedirectedInIncognito(context);
51}
52
53}  // namespace extensions
54