Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / file_manager / volume_manager_factory.h
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 "base/basictypes.h"
6 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
7
8 #ifndef CHROME_BROWSER_CHROMEOS_FILE_MANAGER_VOLUME_MANAGER_FACTORY_H_
9 #define CHROME_BROWSER_CHROMEOS_FILE_MANAGER_VOLUME_MANAGER_FACTORY_H_
10
11 template<typename T> struct DefaultSingletonTraits;
12
13 namespace content {
14 class BrowserContext;
15 }  // namespace content
16
17 namespace file_manager {
18
19 class VolumeManager;
20
21 // Factory to create VolumeManager.
22 class VolumeManagerFactory : public BrowserContextKeyedServiceFactory {
23  public:
24   // Returns VolumeManager instance.
25   static VolumeManager* Get(content::BrowserContext* context);
26
27   static VolumeManagerFactory* GetInstance();
28
29  protected:
30   // BrowserContextKeyedBaseFactory overrides:
31   virtual content::BrowserContext* GetBrowserContextToUse(
32       content::BrowserContext* context) const override;
33   virtual bool ServiceIsCreatedWithBrowserContext() const override;
34   virtual bool ServiceIsNULLWhileTesting() const override;
35
36   // BrowserContextKeyedServiceFactory overrides:
37   virtual KeyedService* BuildServiceInstanceFor(
38       content::BrowserContext* context) const override;
39
40  private:
41   // For Singleton.
42   friend struct DefaultSingletonTraits<VolumeManagerFactory>;
43
44   VolumeManagerFactory();
45   virtual ~VolumeManagerFactory();
46
47   DISALLOW_COPY_AND_ASSIGN(VolumeManagerFactory);
48 };
49
50 }  // namespace file_manager
51
52 #endif  // CHROME_BROWSER_CHROMEOS_FILE_MANAGER_VOLUME_MANAGER_FACTORY_H_