• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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_EXTENSIONS_API_STORAGE_SYNC_OR_LOCAL_VALUE_STORE_CACHE_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_STORAGE_SYNC_OR_LOCAL_VALUE_STORE_CACHE_H_
7 
8 #include "base/basictypes.h"
9 #include "base/compiler_specific.h"
10 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "chrome/browser/extensions/api/storage/settings_observer.h"
13 #include "chrome/browser/extensions/api/storage/settings_storage_quota_enforcer.h"
14 #include "chrome/browser/extensions/api/storage/value_store_cache.h"
15 
16 namespace base {
17 class FilePath;
18 }
19 
20 namespace extensions {
21 
22 class SettingsBackend;
23 class SettingsStorageFactory;
24 
25 // ValueStoreCache for the LOCAL and SYNC namespaces. It owns a backend for
26 // apps and another for extensions. Each backend takes care of persistence and
27 // syncing.
28 class SyncOrLocalValueStoreCache : public ValueStoreCache {
29  public:
30   SyncOrLocalValueStoreCache(
31       settings_namespace::Namespace settings_namespace,
32       const scoped_refptr<SettingsStorageFactory>& factory,
33       const SettingsStorageQuotaEnforcer::Limits& quota,
34       const scoped_refptr<SettingsObserverList>& observers,
35       const base::FilePath& profile_path);
36   virtual ~SyncOrLocalValueStoreCache();
37 
38   SettingsBackend* GetAppBackend() const;
39   SettingsBackend* GetExtensionBackend() const;
40 
41   // ValueStoreCache implementation:
42 
43   virtual void RunWithValueStoreForExtension(
44       const StorageCallback& callback,
45       scoped_refptr<const Extension> extension) OVERRIDE;
46 
47   virtual void DeleteStorageSoon(const std::string& extension_id) OVERRIDE;
48 
49  private:
50   void InitOnFileThread(const scoped_refptr<SettingsStorageFactory>& factory,
51                         const SettingsStorageQuotaEnforcer::Limits& quota,
52                         const scoped_refptr<SettingsObserverList>& observers,
53                         const base::FilePath& profile_path);
54 
55   settings_namespace::Namespace settings_namespace_;
56   scoped_ptr<SettingsBackend> app_backend_;
57   scoped_ptr<SettingsBackend> extension_backend_;
58 
59   DISALLOW_COPY_AND_ASSIGN(SyncOrLocalValueStoreCache);
60 };
61 
62 }  // namespace extensions
63 
64 #endif  // CHROME_BROWSER_EXTENSIONS_API_STORAGE_SYNC_OR_LOCAL_VALUE_STORE_CACHE_H_
65