| OLD | NEW | 
|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #ifndef EXTENSIONS_BROWSER_VALUE_STORE_LEVELDB_VALUE_STORE_H_ | 5 #ifndef EXTENSIONS_BROWSER_VALUE_STORE_LEVELDB_VALUE_STORE_H_ | 
| 6 #define EXTENSIONS_BROWSER_VALUE_STORE_LEVELDB_VALUE_STORE_H_ | 6 #define EXTENSIONS_BROWSER_VALUE_STORE_LEVELDB_VALUE_STORE_H_ | 
| 7 | 7 | 
| 8 #include <string> | 8 #include <string> | 
| 9 #include <vector> | 9 #include <vector> | 
| 10 | 10 | 
| 11 #include "base/compiler_specific.h" | 11 #include "base/compiler_specific.h" | 
| 12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" | 
| 13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" | 
|  | 14 #include "base/trace_event/memory_dump_provider.h" | 
| 14 #include "extensions/browser/value_store/value_store.h" | 15 #include "extensions/browser/value_store/value_store.h" | 
| 15 #include "third_party/leveldatabase/src/include/leveldb/db.h" | 16 #include "third_party/leveldatabase/src/include/leveldb/db.h" | 
| 16 | 17 | 
| 17 namespace base { | 18 namespace base { | 
| 18 class HistogramBase; | 19 class HistogramBase; | 
| 19 }  // namespace base | 20 }  // namespace base | 
| 20 | 21 | 
| 21 // Value store area, backed by a leveldb database. | 22 // Value store area, backed by a leveldb database. | 
| 22 // All methods must be run on the FILE thread. | 23 // All methods must be run on the FILE thread. | 
| 23 class LeveldbValueStore : public ValueStore { | 24 class LeveldbValueStore : public ValueStore, | 
|  | 25                           public base::trace_event::MemoryDumpProvider { | 
| 24  public: | 26  public: | 
| 25   // Creates a database bound to |path|. The underlying database won't be | 27   // Creates a database bound to |path|. The underlying database won't be | 
| 26   // opened (i.e. may not be created) until one of the get/set/etc methods are | 28   // opened (i.e. may not be created) until one of the get/set/etc methods are | 
| 27   // called - this is because opening the database may fail, and extensions | 29   // called - this is because opening the database may fail, and extensions | 
| 28   // need to be notified of that, but we don't want to permanently give up. | 30   // need to be notified of that, but we don't want to permanently give up. | 
| 29   // | 31   // | 
| 30   // Must be created on the FILE thread. | 32   // Must be created on the FILE thread. | 
| 31   LeveldbValueStore(const std::string& uma_client_name, | 33   LeveldbValueStore(const std::string& uma_client_name, | 
| 32                     const base::FilePath& path); | 34                     const base::FilePath& path); | 
| 33 | 35 | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
| 49   WriteResult Remove(const std::string& key) override; | 51   WriteResult Remove(const std::string& key) override; | 
| 50   WriteResult Remove(const std::vector<std::string>& keys) override; | 52   WriteResult Remove(const std::vector<std::string>& keys) override; | 
| 51   WriteResult Clear() override; | 53   WriteResult Clear() override; | 
| 52   bool Restore() override; | 54   bool Restore() override; | 
| 53   bool RestoreKey(const std::string& key) override; | 55   bool RestoreKey(const std::string& key) override; | 
| 54 | 56 | 
| 55   // Write directly to the backing levelDB. Only used for testing to cause | 57   // Write directly to the backing levelDB. Only used for testing to cause | 
| 56   // corruption in the database. | 58   // corruption in the database. | 
| 57   bool WriteToDbForTest(leveldb::WriteBatch* batch); | 59   bool WriteToDbForTest(leveldb::WriteBatch* batch); | 
| 58 | 60 | 
|  | 61   // base::trace_event::MemoryDumpProvider implementation. | 
|  | 62   bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, | 
|  | 63                     base::trace_event::ProcessMemoryDump* pmd) override; | 
|  | 64 | 
| 59  private: | 65  private: | 
| 60   // Tries to open the database if it hasn't been opened already. | 66   // Tries to open the database if it hasn't been opened already. | 
| 61   scoped_ptr<ValueStore::Error> EnsureDbIsOpen(); | 67   scoped_ptr<ValueStore::Error> EnsureDbIsOpen(); | 
| 62 | 68 | 
| 63   // Reads a setting from the database. | 69   // Reads a setting from the database. | 
| 64   scoped_ptr<ValueStore::Error> ReadFromDb( | 70   scoped_ptr<ValueStore::Error> ReadFromDb( | 
| 65       leveldb::ReadOptions options, | 71       leveldb::ReadOptions options, | 
| 66       const std::string& key, | 72       const std::string& key, | 
| 67       // Will be reset() with the result, if any. | 73       // Will be reset() with the result, if any. | 
| 68       scoped_ptr<base::Value>* setting); | 74       scoped_ptr<base::Value>* setting); | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
| 95   const base::FilePath db_path_; | 101   const base::FilePath db_path_; | 
| 96 | 102 | 
| 97   // leveldb backend. | 103   // leveldb backend. | 
| 98   scoped_ptr<leveldb::DB> db_; | 104   scoped_ptr<leveldb::DB> db_; | 
| 99   base::HistogramBase* open_histogram_; | 105   base::HistogramBase* open_histogram_; | 
| 100 | 106 | 
| 101   DISALLOW_COPY_AND_ASSIGN(LeveldbValueStore); | 107   DISALLOW_COPY_AND_ASSIGN(LeveldbValueStore); | 
| 102 }; | 108 }; | 
| 103 | 109 | 
| 104 #endif  // EXTENSIONS_BROWSER_VALUE_STORE_LEVELDB_VALUE_STORE_H_ | 110 #endif  // EXTENSIONS_BROWSER_VALUE_STORE_LEVELDB_VALUE_STORE_H_ | 
| OLD | NEW | 
|---|