Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(186)

Unified Diff: webkit/browser/dom_storage/session_storage_database.h

Issue 22297005: Move webkit/{browser,common}/dom_storage into content/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webkit/browser/dom_storage/session_storage_database.h
diff --git a/webkit/browser/dom_storage/session_storage_database.h b/webkit/browser/dom_storage/session_storage_database.h
deleted file mode 100644
index c442504726d311b49d646d1012851cab5efedd13..0000000000000000000000000000000000000000
--- a/webkit/browser/dom_storage/session_storage_database.h
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef WEBKIT_BROWSER_DOM_STORAGE_SESSION_STORAGE_DATABASE_H_
-#define WEBKIT_BROWSER_DOM_STORAGE_SESSION_STORAGE_DATABASE_H_
-
-#include <map>
-#include <string>
-
-#include "base/files/file_path.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/synchronization/lock.h"
-#include "third_party/leveldatabase/src/include/leveldb/status.h"
-#include "webkit/browser/webkit_storage_browser_export.h"
-#include "webkit/common/dom_storage/dom_storage_types.h"
-
-class GURL;
-
-namespace leveldb {
-class DB;
-struct ReadOptions;
-class WriteBatch;
-} // namespace leveldb
-
-namespace dom_storage {
-
-// SessionStorageDatabase holds the data from multiple namespaces and multiple
-// origins. All DomStorageAreas for session storage share the same
-// SessionStorageDatabase.
-
-// Only one thread is allowed to call the public functions other than
-// ReadAreaValues and ReadNamespacesAndOrigins. Other threads are allowed to
-// call ReadAreaValues and ReadNamespacesAndOrigins.
-class WEBKIT_STORAGE_BROWSER_EXPORT SessionStorageDatabase :
- public base::RefCountedThreadSafe<SessionStorageDatabase> {
- public:
- explicit SessionStorageDatabase(const base::FilePath& file_path);
-
- // Reads the (key, value) pairs for |namespace_id| and |origin|. |result| is
- // assumed to be empty and any duplicate keys will be overwritten. If the
- // database exists on disk then it will be opened. If it does not exist then
- // it will not be created and |result| will be unmodified.
- void ReadAreaValues(const std::string& namespace_id,
- const GURL& origin,
- ValuesMap* result);
-
- // Updates the data for |namespace_id| and |origin|. Will remove all keys
- // before updating the database if |clear_all_first| is set. Then all entries
- // in |changes| will be examined - keys mapped to a null NullableString16 will
- // be removed and all others will be inserted/updated as appropriate. It is
- // allowed to write data into a shallow copy created by CloneNamespace, and in
- // that case the copy will be made deep before writing the values.
- bool CommitAreaChanges(const std::string& namespace_id,
- const GURL& origin,
- bool clear_all_first,
- const ValuesMap& changes);
-
- // Creates shallow copies of the areas for |namespace_id| and associates them
- // with |new_namespace_id|.
- bool CloneNamespace(const std::string& namespace_id,
- const std::string& new_namespace_id);
-
- // Deletes the data for |namespace_id| and |origin|.
- bool DeleteArea(const std::string& namespace_id, const GURL& origin);
-
- // Deletes the data for |namespace_id|.
- bool DeleteNamespace(const std::string& namespace_id);
-
- // Reads the namespace IDs and origins present in the database.
- bool ReadNamespacesAndOrigins(
- std::map<std::string, std::vector<GURL> >* namespaces_and_origins);
-
- private:
- friend class base::RefCountedThreadSafe<SessionStorageDatabase>;
- friend class SessionStorageDatabaseTest;
-
- ~SessionStorageDatabase();
-
- // Opens the database at file_path_ if it exists already and creates it if
- // |create_if_needed| is true. Returns true if the database was opened, false
- // if the opening failed or was not necessary (the database doesn't exist and
- // |create_if_needed| is false). The possible failures are:
- // - leveldb cannot open the database.
- // - The database is in an inconsistent or errored state.
- bool LazyOpen(bool create_if_needed);
-
- // Tries to open the database at file_path_, assigns |db| to point to the
- // opened leveldb::DB instance.
- leveldb::Status TryToOpen(leveldb::DB** db);
-
- // Returns true if the database is already open, false otherwise.
- bool IsOpen() const;
-
- // Helpers for checking caller erros, invariants and database errors. All
- // these return |ok|, for chaining.
- bool CallerErrorCheck(bool ok) const;
- bool ConsistencyCheck(bool ok);
- bool DatabaseErrorCheck(bool ok);
-
- // Helper functions. All return true if the operation succeeded, and false if
- // it failed (a database error or a consistency error). If the return type is
- // void, the operation cannot fail. If they return false, ConsistencyCheck or
- // DatabaseErrorCheck have already been called.
-
- // Creates a namespace for |namespace_id| and updates the next namespace id if
- // needed. If |ok_if_exists| is false, checks that the namespace didn't exist
- // before.
- bool CreateNamespace(const std::string& namespace_id,
- bool ok_if_exists,
- leveldb::WriteBatch* batch);
-
- // Reads the areas assoiated with |namespace_id| and puts the (origin, map_id)
- // pairs into |areas|.
- bool GetAreasInNamespace(const std::string& namespace_id,
- std::map<std::string, std::string>* areas);
-
- // Adds an association between |origin| and |map_id| into the namespace
- // |namespace_id|.
- void AddAreaToNamespace(const std::string& namespace_id,
- const std::string& origin,
- const std::string& map_id,
- leveldb::WriteBatch* batch);
-
- // Helpers for deleting data for |namespace_id| and |origin|.
- bool DeleteAreaHelper(const std::string& namespace_id,
- const std::string& origin,
- leveldb::WriteBatch* batch);
-
- // Retrieves the map id for |namespace_id| and |origin|. It's not an error if
- // the map doesn't exist.
- bool GetMapForArea(const std::string& namespace_id,
- const std::string& origin,
- const leveldb::ReadOptions& options,
- bool* exists,
- std::string* map_id);
-
- // Creates a new map for |namespace_id| and |origin|. |map_id| will hold the
- // id of the created map. If there is a map for |namespace_id| and |origin|,
- // this just overwrites the map id. The caller is responsible for decreasing
- // the ref count.
- bool CreateMapForArea(const std::string& namespace_id,
- const GURL& origin,
- std::string* map_id,
- leveldb::WriteBatch* batch);
- // Reads the contents of the map |map_id| into |result|. If |only_keys| is
- // true, only keys are aread from the database and the values in |result| will
- // be empty.
- bool ReadMap(const std::string& map_id,
- const leveldb::ReadOptions& options,
- ValuesMap* result,
- bool only_keys);
- // Writes |values| into the map |map_id|.
- void WriteValuesToMap(const std::string& map_id,
- const ValuesMap& values,
- leveldb::WriteBatch* batch);
-
- bool GetMapRefCount(const std::string& map_id, int64* ref_count);
- bool IncreaseMapRefCount(const std::string& map_id,
- leveldb::WriteBatch* batch);
- // Decreases the ref count of a map by |decrease|. If the ref count goes to 0,
- // deletes the map.
- bool DecreaseMapRefCount(const std::string& map_id,
- int decrease,
- leveldb::WriteBatch* batch);
-
- // Deletes all values in |map_id|.
- bool ClearMap(const std::string& map_id, leveldb::WriteBatch* batch);
-
- // Breaks the association between (|namespace_id|, |origin|) and |map_id| and
- // creates a new map for (|namespace_id|, |origin|). Copies the data from the
- // old map if |copy_data| is true.
- bool DeepCopyArea(const std::string& namespace_id,
- const GURL& origin,
- bool copy_data,
- std::string* map_id,
- leveldb::WriteBatch* batch);
-
- // Helper functions for creating the keys needed for the schema.
- static std::string NamespaceStartKey(const std::string& namespace_id);
- static std::string NamespaceKey(const std::string& namespace_id,
- const std::string& origin);
- static const char* NamespacePrefix();
- static std::string MapRefCountKey(const std::string& map_id);
- static std::string MapKey(const std::string& map_id, const std::string& key);
- static const char* NextMapIdKey();
-
- scoped_ptr<leveldb::DB> db_;
- base::FilePath file_path_;
-
- // For protecting the database opening code.
- base::Lock db_lock_;
-
- // True if a database error has occurred (e.g., cannot read data).
- bool db_error_;
- // True if the database is in an inconsistent state.
- bool is_inconsistent_;
-
- DISALLOW_COPY_AND_ASSIGN(SessionStorageDatabase);
-};
-
-} // namespace dom_storage
-
-#endif // WEBKIT_BROWSER_DOM_STORAGE_SESSION_STORAGE_DATABASE_H_
« no previous file with comments | « webkit/browser/dom_storage/local_storage_database_adapter.cc ('k') | webkit/browser/dom_storage/session_storage_database.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698