1558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// found in the LICENSE file.
4558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
5558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#ifndef CHROME_BROWSER_APPS_SHORTCUT_MANAGER_FACTORY_H_
6558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#define CHROME_BROWSER_APPS_SHORTCUT_MANAGER_FACTORY_H_
7558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
9558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
10558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochtemplate<typename Type> struct DefaultSingletonTraits;
11558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
12558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochclass Profile;
13558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
14558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochclass AppShortcutManager;
15558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
16558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Singleton that owns all AppShortcutManagers and associates them with
17558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Profiles. Listens for the Profile's destruction notification and cleans up
18558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// the associated AppShortcutManager.
19558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// AppShortcutManagers should not exist in incognito profiles.
20558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochclass AppShortcutManagerFactory : public BrowserContextKeyedServiceFactory {
21558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch public:
22558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  static AppShortcutManager* GetForProfile(Profile* profile);
23558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
24558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  static AppShortcutManagerFactory* GetInstance();
25558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
26558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch private:
27558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  friend struct DefaultSingletonTraits<AppShortcutManagerFactory>;
28558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
29558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  AppShortcutManagerFactory();
30558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  virtual ~AppShortcutManagerFactory();
31558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
32558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  // BrowserContextKeyedServiceFactory:
33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual KeyedService* BuildServiceInstanceFor(
34558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch      content::BrowserContext* profile) const OVERRIDE;
35558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  virtual bool ServiceIsCreatedWithBrowserContext() const OVERRIDE;
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual bool ServiceIsNULLWhileTesting() const OVERRIDE;
37558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch};
38558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
39558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif  // CHROME_BROWSER_APPS_SHORTCUT_MANAGER_FACTORY_H_
40