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

Unified Diff: chrome/browser/in_process_webkit/dom_storage_namespace.cc

Issue 545054: Introduce all the plumbing for Session Storage. This mostly consists of crea... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 11 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: chrome/browser/in_process_webkit/dom_storage_namespace.cc
===================================================================
--- chrome/browser/in_process_webkit/dom_storage_namespace.cc (revision 36257)
+++ chrome/browser/in_process_webkit/dom_storage_namespace.cc (working copy)
@@ -19,17 +19,16 @@
/* static */
DOMStorageNamespace* DOMStorageNamespace::CreateLocalStorageNamespace(
DOMStorageContext* dom_storage_context, const FilePath& data_dir_path) {
- int64 id = dom_storage_context->kLocalStorageNamespaceId;
- DCHECK(!dom_storage_context->GetStorageNamespace(id));
+ int64 id = kLocalStorageNamespaceId;
+ DCHECK(!dom_storage_context->GetStorageNamespace(id, false));
return new DOMStorageNamespace(dom_storage_context, id,
webkit_glue::FilePathToWebString(data_dir_path), DOM_STORAGE_LOCAL);
}
/* static */
DOMStorageNamespace* DOMStorageNamespace::CreateSessionStorageNamespace(
- DOMStorageContext* dom_storage_context) {
- int64 id = dom_storage_context->AllocateStorageNamespaceId();
- DCHECK(!dom_storage_context->GetStorageNamespace(id));
+ DOMStorageContext* dom_storage_context, int64 id) {
+ DCHECK(!dom_storage_context->GetStorageNamespace(id, false));
return new DOMStorageNamespace(dom_storage_context, id, WebString(),
DOM_STORAGE_SESSION);
}
@@ -43,12 +42,11 @@
data_dir_path_(data_dir_path),
dom_storage_type_(dom_storage_type) {
DCHECK(dom_storage_context_);
- dom_storage_context_->RegisterStorageNamespace(this);
}
DOMStorageNamespace::~DOMStorageNamespace() {
- dom_storage_context_->UnregisterStorageNamespace(this);
-
+ // TODO(jorlow): If the DOMStorageContext is being destructed, there's no need
+ // to do these calls. Maybe we should add a fast path?
for (OriginToStorageAreaMap::iterator iter(origin_to_storage_area_.begin());
iter != origin_to_storage_area_.end(); ++iter) {
dom_storage_context_->UnregisterStorageArea(iter->second);
@@ -71,18 +69,19 @@
return storage_area;
}
-DOMStorageNamespace* DOMStorageNamespace::Copy() {
+DOMStorageNamespace* DOMStorageNamespace::Copy(int64 id) {
DCHECK(dom_storage_type_ == DOM_STORAGE_SESSION);
- int64 id = dom_storage_context_->AllocateStorageNamespaceId();
- DCHECK(!dom_storage_context_->GetStorageNamespace(id));
+ DCHECK(!dom_storage_context_->GetStorageNamespace(id, false));
DOMStorageNamespace* new_storage_namespace = new DOMStorageNamespace(
dom_storage_context_, id, data_dir_path_, dom_storage_type_);
- CreateWebStorageNamespaceIfNecessary();
- new_storage_namespace->storage_namespace_.reset(storage_namespace_->copy());
+ // If we haven't used the namespace yet, there's nothing to copy.
+ if (storage_namespace_.get())
+ new_storage_namespace->storage_namespace_.reset(storage_namespace_->copy());
return new_storage_namespace;
}
void DOMStorageNamespace::PurgeMemory() {
+ DCHECK(dom_storage_type_ == DOM_STORAGE_LOCAL);
for (OriginToStorageAreaMap::iterator iter(origin_to_storage_area_.begin());
iter != origin_to_storage_area_.end(); ++iter)
iter->second->PurgeMemory();
« no previous file with comments | « chrome/browser/in_process_webkit/dom_storage_namespace.h ('k') | chrome/browser/in_process_webkit/webkit_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698