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

Side by Side Diff: webkit/dom_storage/dom_storage_session.cc

Issue 10572015: Session restore: Store and restore persistent IDs for sessionStorage. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "webkit/dom_storage/dom_storage_session.h" 5 #include "webkit/dom_storage/dom_storage_session.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/tracked_objects.h" 10 #include "base/tracked_objects.h"
11 #include "webkit/dom_storage/dom_storage_context.h" 11 #include "webkit/dom_storage/dom_storage_context.h"
12 #include "webkit/dom_storage/dom_storage_task_runner.h" 12 #include "webkit/dom_storage/dom_storage_task_runner.h"
13 13
14 namespace dom_storage { 14 namespace dom_storage {
15 15
16 DomStorageSession::DomStorageSession(DomStorageContext* context) 16 DomStorageSession::DomStorageSession(DomStorageContext* context)
17 : context_(context), 17 : context_(context),
18 namespace_id_(context->AllocateSessionId()), 18 namespace_id_(context->AllocateSessionId()),
19 persistent_namespace_id_(context->AllocatePersistentSessionId()) { 19 persistent_namespace_id_(context->AllocatePersistentSessionId()),
20 should_persist_(false) {
20 context->task_runner()->PostTask( 21 context->task_runner()->PostTask(
21 FROM_HERE, 22 FROM_HERE,
22 base::Bind(&DomStorageContext::CreateSessionNamespace, 23 base::Bind(&DomStorageContext::CreateSessionNamespace,
23 context_, namespace_id_, persistent_namespace_id_)); 24 context_, namespace_id_, persistent_namespace_id_));
24 } 25 }
25 26
26 DomStorageSession::DomStorageSession(DomStorageContext* context, 27 DomStorageSession::DomStorageSession(DomStorageContext* context,
27 const std::string& persistent_namespace_id) 28 const std::string& persistent_namespace_id)
28 : context_(context), 29 : context_(context),
29 namespace_id_(context->AllocateSessionId()), 30 namespace_id_(context->AllocateSessionId()),
30 persistent_namespace_id_(persistent_namespace_id) { 31 persistent_namespace_id_(persistent_namespace_id),
32 should_persist_(false) {
31 context->task_runner()->PostTask( 33 context->task_runner()->PostTask(
32 FROM_HERE, 34 FROM_HERE,
33 base::Bind(&DomStorageContext::CreateSessionNamespace, 35 base::Bind(&DomStorageContext::CreateSessionNamespace,
34 context_, namespace_id_, persistent_namespace_id_)); 36 context_, namespace_id_, persistent_namespace_id_));
35 } 37 }
36 38
39 void DomStorageSession::SetShouldPersist(bool should_persist) {
40 should_persist_ = should_persist;
41 }
42
37 DomStorageSession* DomStorageSession::Clone() { 43 DomStorageSession* DomStorageSession::Clone() {
38 return CloneFrom(context_, namespace_id_); 44 return CloneFrom(context_, namespace_id_);
39 } 45 }
40 46
41 // static 47 // static
42 DomStorageSession* DomStorageSession::CloneFrom(DomStorageContext* context, 48 DomStorageSession* DomStorageSession::CloneFrom(DomStorageContext* context,
43 int64 namepace_id_to_clone) { 49 int64 namepace_id_to_clone) {
44 int64 clone_id = context->AllocateSessionId(); 50 int64 clone_id = context->AllocateSessionId();
45 std::string persistent_clone_id = context->AllocatePersistentSessionId(); 51 std::string persistent_clone_id = context->AllocatePersistentSessionId();
46 context->task_runner()->PostTask( 52 context->task_runner()->PostTask(
47 FROM_HERE, 53 FROM_HERE,
48 base::Bind(&DomStorageContext::CloneSessionNamespace, 54 base::Bind(&DomStorageContext::CloneSessionNamespace,
49 context, namepace_id_to_clone, clone_id, persistent_clone_id)); 55 context, namepace_id_to_clone, clone_id, persistent_clone_id));
50 return new DomStorageSession(context, clone_id, persistent_clone_id); 56 return new DomStorageSession(context, clone_id, persistent_clone_id);
51 } 57 }
52 58
53 DomStorageSession::DomStorageSession(DomStorageContext* context, 59 DomStorageSession::DomStorageSession(DomStorageContext* context,
54 int64 namespace_id, 60 int64 namespace_id,
55 const std::string& persistent_namespace_id) 61 const std::string& persistent_namespace_id)
56 : context_(context), 62 : context_(context),
57 namespace_id_(namespace_id), 63 namespace_id_(namespace_id),
58 persistent_namespace_id_(persistent_namespace_id) { 64 persistent_namespace_id_(persistent_namespace_id) {
59 // This ctor is intended for use by the Clone() method. 65 // This ctor is intended for use by the Clone() method.
60 } 66 }
61 67
62 DomStorageSession::~DomStorageSession() { 68 DomStorageSession::~DomStorageSession() {
63 context_->task_runner()->PostTask( 69 context_->task_runner()->PostTask(
64 FROM_HERE, 70 FROM_HERE,
65 base::Bind(&DomStorageContext::DeleteSessionNamespace, 71 base::Bind(&DomStorageContext::DeleteSessionNamespace,
66 context_, namespace_id_)); 72 context_, namespace_id_, should_persist_));
67 } 73 }
68 74
69 } // namespace dom_storage 75 } // namespace dom_storage
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698