1// Copyright 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/menu_manager_factory.h"
6
7#include "chrome/browser/extensions/menu_manager.h"
8#include "chrome/browser/profiles/profile.h"
9#include "components/keyed_service/content/browser_context_dependency_manager.h"
10#include "extensions/browser/extension_system.h"
11#include "extensions/browser/extension_system_provider.h"
12#include "extensions/browser/extensions_browser_client.h"
13
14namespace extensions {
15
16// static
17MenuManager* MenuManagerFactory::GetForBrowserContext(
18    content::BrowserContext* context) {
19  return static_cast<MenuManager*>(
20      GetInstance()->GetServiceForBrowserContext(context, true));
21}
22
23// static
24MenuManagerFactory* MenuManagerFactory::GetInstance() {
25  return Singleton<MenuManagerFactory>::get();
26}
27
28// static
29KeyedService* MenuManagerFactory::BuildServiceInstanceForTesting(
30    content::BrowserContext* context) {
31  return GetInstance()->BuildServiceInstanceFor(context);
32}
33
34MenuManagerFactory::MenuManagerFactory()
35    : BrowserContextKeyedServiceFactory(
36        "MenuManager",
37        BrowserContextDependencyManager::GetInstance()) {
38  DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory());
39}
40
41MenuManagerFactory::~MenuManagerFactory() {}
42
43KeyedService* MenuManagerFactory::BuildServiceInstanceFor(
44    content::BrowserContext* context) const {
45  Profile* profile = Profile::FromBrowserContext(context);
46  return new MenuManager(profile, ExtensionSystem::Get(profile)->state_store());
47}
48
49content::BrowserContext* MenuManagerFactory::GetBrowserContextToUse(
50    content::BrowserContext* context) const {
51  return ExtensionsBrowserClient::Get()->GetOriginalContext(context);
52}
53
54bool MenuManagerFactory::ServiceIsCreatedWithBrowserContext() const {
55  return true;
56}
57
58bool MenuManagerFactory::ServiceIsNULLWhileTesting() const {
59  return true;
60}
61
62}  // namespace extensions
63