| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 CONTENT_BROWSER_DOM_STORAGE_SESSION_STORAGE_DATABASE_H_ | 5 #ifndef CONTENT_BROWSER_DOM_STORAGE_SESSION_STORAGE_DATABASE_H_ |
| 6 #define CONTENT_BROWSER_DOM_STORAGE_SESSION_STORAGE_DATABASE_H_ | 6 #define CONTENT_BROWSER_DOM_STORAGE_SESSION_STORAGE_DATABASE_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| 11 #include "base/files/file_path.h" | 11 #include "base/files/file_path.h" |
| 12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/synchronization/lock.h" | 14 #include "base/synchronization/lock.h" |
| 15 #include "base/trace_event/memory_dump_provider.h" |
| 15 #include "content/common/content_export.h" | 16 #include "content/common/content_export.h" |
| 16 #include "content/common/dom_storage/dom_storage_types.h" | 17 #include "content/common/dom_storage/dom_storage_types.h" |
| 17 #include "third_party/leveldatabase/src/include/leveldb/status.h" | 18 #include "third_party/leveldatabase/src/include/leveldb/status.h" |
| 18 | 19 |
| 19 class GURL; | 20 class GURL; |
| 20 | 21 |
| 21 namespace leveldb { | 22 namespace leveldb { |
| 22 class DB; | 23 class DB; |
| 23 struct ReadOptions; | 24 struct ReadOptions; |
| 24 class WriteBatch; | 25 class WriteBatch; |
| 25 } // namespace leveldb | 26 } // namespace leveldb |
| 26 | 27 |
| 27 namespace content { | 28 namespace content { |
| 28 | 29 |
| 29 // SessionStorageDatabase holds the data from multiple namespaces and multiple | 30 // SessionStorageDatabase holds the data from multiple namespaces and multiple |
| 30 // origins. All DOMStorageAreas for session storage share the same | 31 // origins. All DOMStorageAreas for session storage share the same |
| 31 // SessionStorageDatabase. | 32 // SessionStorageDatabase. |
| 32 | 33 |
| 33 // Only one thread is allowed to call the public functions other than | 34 // Only one thread is allowed to call the public functions other than |
| 34 // ReadAreaValues and ReadNamespacesAndOrigins. Other threads are allowed to | 35 // ReadAreaValues and ReadNamespacesAndOrigins. Other threads are allowed to |
| 35 // call ReadAreaValues and ReadNamespacesAndOrigins. | 36 // call ReadAreaValues and ReadNamespacesAndOrigins. |
| 36 class CONTENT_EXPORT SessionStorageDatabase : | 37 class CONTENT_EXPORT SessionStorageDatabase |
| 37 public base::RefCountedThreadSafe<SessionStorageDatabase> { | 38 : public base::RefCountedThreadSafe<SessionStorageDatabase>, |
| 39 public base::trace_event::MemoryDumpProvider { |
| 38 public: | 40 public: |
| 39 explicit SessionStorageDatabase(const base::FilePath& file_path); | 41 explicit SessionStorageDatabase(const base::FilePath& file_path); |
| 40 | 42 |
| 41 // Reads the (key, value) pairs for |namespace_id| and |origin|. |result| is | 43 // Reads the (key, value) pairs for |namespace_id| and |origin|. |result| is |
| 42 // assumed to be empty and any duplicate keys will be overwritten. If the | 44 // assumed to be empty and any duplicate keys will be overwritten. If the |
| 43 // database exists on disk then it will be opened. If it does not exist then | 45 // database exists on disk then it will be opened. If it does not exist then |
| 44 // it will not be created and |result| will be unmodified. | 46 // it will not be created and |result| will be unmodified. |
| 45 void ReadAreaValues(const std::string& namespace_id, | 47 void ReadAreaValues(const std::string& namespace_id, |
| 46 const GURL& origin, | 48 const GURL& origin, |
| 47 DOMStorageValuesMap* result); | 49 DOMStorageValuesMap* result); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 65 // Deletes the data for |namespace_id| and |origin|. | 67 // Deletes the data for |namespace_id| and |origin|. |
| 66 bool DeleteArea(const std::string& namespace_id, const GURL& origin); | 68 bool DeleteArea(const std::string& namespace_id, const GURL& origin); |
| 67 | 69 |
| 68 // Deletes the data for |namespace_id|. | 70 // Deletes the data for |namespace_id|. |
| 69 bool DeleteNamespace(const std::string& namespace_id); | 71 bool DeleteNamespace(const std::string& namespace_id); |
| 70 | 72 |
| 71 // Reads the namespace IDs and origins present in the database. | 73 // Reads the namespace IDs and origins present in the database. |
| 72 bool ReadNamespacesAndOrigins( | 74 bool ReadNamespacesAndOrigins( |
| 73 std::map<std::string, std::vector<GURL> >* namespaces_and_origins); | 75 std::map<std::string, std::vector<GURL> >* namespaces_and_origins); |
| 74 | 76 |
| 77 // base::trace_event::MemoryDumpProvider implementation. |
| 78 bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, |
| 79 base::trace_event::ProcessMemoryDump* pmd) override; |
| 80 |
| 75 private: | 81 private: |
| 76 friend class base::RefCountedThreadSafe<SessionStorageDatabase>; | 82 friend class base::RefCountedThreadSafe<SessionStorageDatabase>; |
| 77 class DBOperation; | 83 class DBOperation; |
| 78 friend class SessionStorageDatabase::DBOperation; | 84 friend class SessionStorageDatabase::DBOperation; |
| 79 friend class SessionStorageDatabaseTest; | 85 friend class SessionStorageDatabaseTest; |
| 80 | 86 |
| 81 ~SessionStorageDatabase(); | 87 ~SessionStorageDatabase() override; |
| 82 | 88 |
| 83 // Opens the database at file_path_ if it exists already and creates it if | 89 // Opens the database at file_path_ if it exists already and creates it if |
| 84 // |create_if_needed| is true. Returns true if the database was opened, false | 90 // |create_if_needed| is true. Returns true if the database was opened, false |
| 85 // if the opening failed or was not necessary (the database doesn't exist and | 91 // if the opening failed or was not necessary (the database doesn't exist and |
| 86 // |create_if_needed| is false). The possible failures are: | 92 // |create_if_needed| is false). The possible failures are: |
| 87 // - leveldb cannot open the database. | 93 // - leveldb cannot open the database. |
| 88 // - The database is in an inconsistent or errored state. | 94 // - The database is in an inconsistent or errored state. |
| 89 bool LazyOpen(bool create_if_needed); | 95 bool LazyOpen(bool create_if_needed); |
| 90 | 96 |
| 91 // Tries to open the database at file_path_, assigns |db| to point to the | 97 // Tries to open the database at file_path_, assigns |db| to point to the |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 // The number of database operations in progress. We need this so that we can | 211 // The number of database operations in progress. We need this so that we can |
| 206 // delete an inconsistent database at the right moment. | 212 // delete an inconsistent database at the right moment. |
| 207 int operation_count_; | 213 int operation_count_; |
| 208 | 214 |
| 209 DISALLOW_COPY_AND_ASSIGN(SessionStorageDatabase); | 215 DISALLOW_COPY_AND_ASSIGN(SessionStorageDatabase); |
| 210 }; | 216 }; |
| 211 | 217 |
| 212 } // namespace content | 218 } // namespace content |
| 213 | 219 |
| 214 #endif // CONTENT_BROWSER_DOM_STORAGE_SESSION_STORAGE_DATABASE_H_ | 220 #endif // CONTENT_BROWSER_DOM_STORAGE_SESSION_STORAGE_DATABASE_H_ |
| OLD | NEW |