• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifndef CHROME_BROWSER_DRIVE_DRIVE_NOTIFICATION_MANAGER_FACTORY_H_
6 #define CHROME_BROWSER_DRIVE_DRIVE_NOTIFICATION_MANAGER_FACTORY_H_
7 
8 #include "base/memory/singleton.h"
9 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
10 
11 namespace content {
12 class BrowserContext;
13 }
14 
15 namespace drive {
16 
17 class DriveNotificationManager;
18 
19 // Singleton that owns all DriveNotificationManager and associates them with
20 // browser contexts.
21 class DriveNotificationManagerFactory
22     : public BrowserContextKeyedServiceFactory {
23  public:
24   // Returns the |DriveNotificationManager| for |context| if one exists or NULL
25   // otherwise.
26   static DriveNotificationManager* FindForBrowserContext(
27       content::BrowserContext* context);
28 
29   // Returns the |DriveNotificationManager| for |context|, creating it first if
30   // required.
31   static DriveNotificationManager* GetForBrowserContext(
32       content::BrowserContext* context);
33 
34   static DriveNotificationManagerFactory* GetInstance();
35 
36  private:
37   friend struct DefaultSingletonTraits<DriveNotificationManagerFactory>;
38 
39   DriveNotificationManagerFactory();
40   virtual ~DriveNotificationManagerFactory();
41 
42   // BrowserContextKeyedServiceFactory implementation.
43   virtual KeyedService* BuildServiceInstanceFor(
44       content::BrowserContext* context) const OVERRIDE;
45 };
46 
47 }  // namespace drive
48 
49 #endif  // CHROME_BROWSER_DRIVE_DRIVE_NOTIFICATION_MANAGER_FACTORY_H_
50