summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authormarja@chromium.org <marja@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-18 16:52:46 +0000
committermarja@chromium.org <marja@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-18 16:52:46 +0000
commitd0ab479282ee222d84ac42bfd415d24aae7025c6 (patch)
treeac4da33e90a9ad3c5921d0f5d9306fca5bad5074 /content
parent2d4aead88b33b037bd3746ae6fb90f8c66498bbe (diff)
downloadchromium_src-d0ab479282ee222d84ac42bfd415d24aae7025c6.zip
chromium_src-d0ab479282ee222d84ac42bfd415d24aae7025c6.tar.gz
chromium_src-d0ab479282ee222d84ac42bfd415d24aae7025c6.tar.bz2
Create and store persistent unique ids for sessionStorage.
This helps us to store / restore sessionStorages when doing a session restore (in a later CL). BUG=104292 TEST=existing tests+DomStorageContextTest.PersistentIds Review URL: https://chromiumcodereview.appspot.com/10546167 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@142735 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/dom_storage/session_storage_namespace_impl.cc9
-rw-r--r--content/browser/dom_storage/session_storage_namespace_impl.h15
-rw-r--r--content/public/browser/session_storage_namespace.h18
3 files changed, 39 insertions, 3 deletions
diff --git a/content/browser/dom_storage/session_storage_namespace_impl.cc b/content/browser/dom_storage/session_storage_namespace_impl.cc
index fccc6f1..cc5848e 100644
--- a/content/browser/dom_storage/session_storage_namespace_impl.cc
+++ b/content/browser/dom_storage/session_storage_namespace_impl.cc
@@ -21,10 +21,19 @@ SessionStorageNamespaceImpl::SessionStorageNamespaceImpl(
namepace_id_to_clone)) {
}
+SessionStorageNamespaceImpl::SessionStorageNamespaceImpl(
+ DOMStorageContextImpl* context, const std::string& persistent_id)
+ : session_(new DomStorageSession(context->context(), persistent_id)) {
+}
+
int64 SessionStorageNamespaceImpl::id() const {
return session_->namespace_id();
}
+const std::string& SessionStorageNamespaceImpl::persistent_id() const {
+ return session_->persistent_namespace_id();
+}
+
SessionStorageNamespaceImpl* SessionStorageNamespaceImpl::Clone() {
return new SessionStorageNamespaceImpl(session_->Clone());
}
diff --git a/content/browser/dom_storage/session_storage_namespace_impl.h b/content/browser/dom_storage/session_storage_namespace_impl.h
index 4c74ac86..bccf8a4 100644
--- a/content/browser/dom_storage/session_storage_namespace_impl.h
+++ b/content/browser/dom_storage/session_storage_namespace_impl.h
@@ -20,10 +20,23 @@ class DomStorageSession;
class SessionStorageNamespaceImpl
: NON_EXPORTED_BASE(public content::SessionStorageNamespace) {
public:
+ // Constructs a |SessionStorageNamespaceImpl| and allocates new IDs for it.
explicit SessionStorageNamespaceImpl(DOMStorageContextImpl* context);
+
+ // Constructs a |SessionStorageNamespaceImpl| by cloning
+ // |namespace_to_clone|. Allocates new IDs for it.
SessionStorageNamespaceImpl(DOMStorageContextImpl* context,
int64 namepace_id_to_clone);
- int64 id() const;
+
+ // Constructs a |SessionStorageNamespaceImpl| and assigns |persistent_id|
+ // to it. Allocates a new non-persistent ID.
+ SessionStorageNamespaceImpl(DOMStorageContextImpl* context,
+ const std::string& persistent_id);
+
+ // content::SessionStorageNamespace implementation.
+ virtual int64 id() const OVERRIDE;
+ virtual const std::string& persistent_id() const OVERRIDE;
+
SessionStorageNamespaceImpl* Clone();
private:
diff --git a/content/public/browser/session_storage_namespace.h b/content/public/browser/session_storage_namespace.h
index 5b17d0c..2469ad5 100644
--- a/content/public/browser/session_storage_namespace.h
+++ b/content/public/browser/session_storage_namespace.h
@@ -6,19 +6,33 @@
#define CONTENT_PUBLIC_BROWSER_SESSION_STORAGE_NAMESPACE_H_
#pragma once
+#include <string>
+
+#include "base/basictypes.h"
#include "base/memory/ref_counted.h"
namespace content {
// This is a ref-counted class that represents a SessionStorageNamespace.
// On destruction it ensures that the storage namespace is destroyed.
-// NOTE: That if we're shutting down, we don't strictly need to do this, but
-// it keeps valgrind happy.
class SessionStorageNamespace
: public base::RefCountedThreadSafe<SessionStorageNamespace> {
+ public:
+ SessionStorageNamespace() {}
+
+ // Returns the ID of the |SessionStorageNamespace|. The ID is unique among all
+ // SessionStorageNamespace objects, but not unique across browser runs.
+ virtual int64 id() const = 0;
+
+ // Returns the persistent ID for the |SessionStorageNamespace|. The ID is
+ // unique across browser runs.
+ virtual const std::string& persistent_id() const = 0;
+
protected:
friend class base::RefCountedThreadSafe<SessionStorageNamespace>;
virtual ~SessionStorageNamespace() {}
+
+ DISALLOW_COPY_AND_ASSIGN(SessionStorageNamespace);
};
} // namespace content