1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/extensions/extension_toolbar_model_factory.h"
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/extensions/extension_toolbar_model.h"
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/profiles/profile.h"
10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_dependency_manager.h"
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_prefs.h"
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_prefs_factory.h"
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extensions_browser_client.h"
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace extensions {
16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// static
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)ExtensionToolbarModel* ExtensionToolbarModelFactory::GetForProfile(
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    Profile* profile) {
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return static_cast<ExtensionToolbarModel*>(
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      GetInstance()->GetServiceForBrowserContext(profile, true));
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// static
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)ExtensionToolbarModelFactory* ExtensionToolbarModelFactory::GetInstance() {
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return Singleton<ExtensionToolbarModelFactory>::get();
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)ExtensionToolbarModelFactory::ExtensionToolbarModelFactory()
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    : BrowserContextKeyedServiceFactory(
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        "ExtensionToolbarModel",
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)        BrowserContextDependencyManager::GetInstance()) {
33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  DependsOn(ExtensionPrefsFactory::GetInstance());
3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  DependsOn(ExtensionActionAPI::GetFactoryInstance());
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)ExtensionToolbarModelFactory::~ExtensionToolbarModelFactory() {}
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* ExtensionToolbarModelFactory::BuildServiceInstanceFor(
40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    content::BrowserContext* context) const {
41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return new ExtensionToolbarModel(
42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      Profile::FromBrowserContext(context),
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch      ExtensionPrefsFactory::GetForBrowserContext(context));
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)content::BrowserContext* ExtensionToolbarModelFactory::GetBrowserContextToUse(
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    content::BrowserContext* context) const {
48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  return ExtensionsBrowserClient::Get()->GetOriginalContext(context);
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool ExtensionToolbarModelFactory::ServiceIsCreatedWithBrowserContext() const {
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return true;
53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool ExtensionToolbarModelFactory::ServiceIsNULLWhileTesting() const {
56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return true;
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
58effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
59effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}  // namespace extensions
60