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
3 // found in the LICENSE file.
4
5 #include "content/browser/dom_storage/session_storage_namespace_impl.h"
6
7 #include "content/browser/dom_storage/dom_storage_context_wrapper.h"
8 #include "content/browser/dom_storage/dom_storage_session.h"
9
10 namespace content {
11
SessionStorageNamespaceImpl(DOMStorageContextWrapper * context)12 SessionStorageNamespaceImpl::SessionStorageNamespaceImpl(
13 DOMStorageContextWrapper* context)
14 : session_(new DOMStorageSession(context->context())) {
15 }
16
SessionStorageNamespaceImpl(DOMStorageContextWrapper * context,int64 namepace_id_to_clone)17 SessionStorageNamespaceImpl::SessionStorageNamespaceImpl(
18 DOMStorageContextWrapper* context, int64 namepace_id_to_clone)
19 : session_(DOMStorageSession::CloneFrom(context->context(),
20 namepace_id_to_clone)) {
21 }
22
SessionStorageNamespaceImpl(DOMStorageContextWrapper * context,const std::string & persistent_id)23 SessionStorageNamespaceImpl::SessionStorageNamespaceImpl(
24 DOMStorageContextWrapper* context, const std::string& persistent_id)
25 : session_(new DOMStorageSession(context->context(), persistent_id)) {
26 }
27
SessionStorageNamespaceImpl(SessionStorageNamespaceImpl * master_session_storage_namespace)28 SessionStorageNamespaceImpl::SessionStorageNamespaceImpl(
29 SessionStorageNamespaceImpl* master_session_storage_namespace)
30 : session_(new DOMStorageSession(
31 master_session_storage_namespace->session_.get())) {
32 }
33
34
id() const35 int64 SessionStorageNamespaceImpl::id() const {
36 return session_->namespace_id();
37 }
38
persistent_id() const39 const std::string& SessionStorageNamespaceImpl::persistent_id() const {
40 return session_->persistent_namespace_id();
41 }
42
SetShouldPersist(bool should_persist)43 void SessionStorageNamespaceImpl::SetShouldPersist(bool should_persist) {
44 session_->SetShouldPersist(should_persist);
45 }
46
should_persist() const47 bool SessionStorageNamespaceImpl::should_persist() const {
48 return session_->should_persist();
49 }
50
Clone()51 SessionStorageNamespaceImpl* SessionStorageNamespaceImpl::Clone() {
52 return new SessionStorageNamespaceImpl(session_->Clone());
53 }
54
IsFromContext(DOMStorageContextWrapper * context)55 bool SessionStorageNamespaceImpl::IsFromContext(
56 DOMStorageContextWrapper* context) {
57 return session_->IsFromContext(context->context());
58 }
59
SessionStorageNamespaceImpl(DOMStorageSession * clone)60 SessionStorageNamespaceImpl::SessionStorageNamespaceImpl(
61 DOMStorageSession* clone)
62 : session_(clone) {
63 }
64
~SessionStorageNamespaceImpl()65 SessionStorageNamespaceImpl::~SessionStorageNamespaceImpl() {
66 }
67
AddTransactionLogProcessId(int process_id)68 void SessionStorageNamespaceImpl::AddTransactionLogProcessId(int process_id) {
69 session_->AddTransactionLogProcessId(process_id);
70 }
71
RemoveTransactionLogProcessId(int process_id)72 void SessionStorageNamespaceImpl::RemoveTransactionLogProcessId(
73 int process_id) {
74 session_->RemoveTransactionLogProcessId(process_id);
75 }
76
Merge(bool actually_merge,int process_id,SessionStorageNamespace * other,const MergeResultCallback & callback)77 void SessionStorageNamespaceImpl::Merge(
78 bool actually_merge,
79 int process_id,
80 SessionStorageNamespace* other,
81 const MergeResultCallback& callback) {
82 SessionStorageNamespaceImpl* other_impl =
83 static_cast<SessionStorageNamespaceImpl*>(other);
84 session_->Merge(
85 actually_merge, process_id, other_impl->session_.get(), callback);
86 }
87
IsAliasOf(SessionStorageNamespace * other)88 bool SessionStorageNamespaceImpl::IsAliasOf(SessionStorageNamespace* other) {
89 return persistent_id() == other->persistent_id();
90 }
91
CreateAlias()92 SessionStorageNamespace* SessionStorageNamespaceImpl::CreateAlias() {
93 return new SessionStorageNamespaceImpl(this);
94 }
95
96 } // namespace content
97