OLD | NEW |
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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/file_util.h" | 6 #include "base/file_util.h" |
7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
9 #include "base/message_loop/message_loop_proxy.h" | 9 #include "base/message_loop/message_loop_proxy.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 TEST_F(DomStorageContextTest, UsageInfo) { | 92 TEST_F(DomStorageContextTest, UsageInfo) { |
93 // Should be empty initially | 93 // Should be empty initially |
94 std::vector<LocalStorageUsageInfo> infos; | 94 std::vector<LocalStorageUsageInfo> infos; |
95 context_->GetLocalStorageUsage(&infos, kDontIncludeFileInfo); | 95 context_->GetLocalStorageUsage(&infos, kDontIncludeFileInfo); |
96 EXPECT_TRUE(infos.empty()); | 96 EXPECT_TRUE(infos.empty()); |
97 context_->GetLocalStorageUsage(&infos, kDoIncludeFileInfo); | 97 context_->GetLocalStorageUsage(&infos, kDoIncludeFileInfo); |
98 EXPECT_TRUE(infos.empty()); | 98 EXPECT_TRUE(infos.empty()); |
99 | 99 |
100 // Put some data into local storage and shutdown the context | 100 // Put some data into local storage and shutdown the context |
101 // to ensure data is written to disk. | 101 // to ensure data is written to disk. |
102 NullableString16 old_value; | 102 base::NullableString16 old_value; |
103 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)-> | 103 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)-> |
104 OpenStorageArea(kOrigin)->SetItem(kKey, kValue, &old_value)); | 104 OpenStorageArea(kOrigin)->SetItem(kKey, kValue, &old_value)); |
105 context_->Shutdown(); | 105 context_->Shutdown(); |
106 context_ = NULL; | 106 context_ = NULL; |
107 base::MessageLoop::current()->RunUntilIdle(); | 107 base::MessageLoop::current()->RunUntilIdle(); |
108 | 108 |
109 // Create a new context that points to the same directory, see that | 109 // Create a new context that points to the same directory, see that |
110 // it knows about the origin that we stored data for. | 110 // it knows about the origin that we stored data for. |
111 context_ = new DomStorageContext(temp_dir_.path(), base::FilePath(), NULL, NUL
L); | 111 context_ = new DomStorageContext(temp_dir_.path(), base::FilePath(), NULL, NUL
L); |
112 context_->GetLocalStorageUsage(&infos, kDontIncludeFileInfo); | 112 context_->GetLocalStorageUsage(&infos, kDontIncludeFileInfo); |
113 EXPECT_EQ(1u, infos.size()); | 113 EXPECT_EQ(1u, infos.size()); |
114 EXPECT_EQ(kOrigin, infos[0].origin); | 114 EXPECT_EQ(kOrigin, infos[0].origin); |
115 EXPECT_EQ(0u, infos[0].data_size); | 115 EXPECT_EQ(0u, infos[0].data_size); |
116 EXPECT_EQ(base::Time(), infos[0].last_modified); | 116 EXPECT_EQ(base::Time(), infos[0].last_modified); |
117 infos.clear(); | 117 infos.clear(); |
118 context_->GetLocalStorageUsage(&infos, kDoIncludeFileInfo); | 118 context_->GetLocalStorageUsage(&infos, kDoIncludeFileInfo); |
119 EXPECT_EQ(1u, infos.size()); | 119 EXPECT_EQ(1u, infos.size()); |
120 EXPECT_EQ(kOrigin, infos[0].origin); | 120 EXPECT_EQ(kOrigin, infos[0].origin); |
121 EXPECT_NE(0u, infos[0].data_size); | 121 EXPECT_NE(0u, infos[0].data_size); |
122 EXPECT_NE(base::Time(), infos[0].last_modified); | 122 EXPECT_NE(base::Time(), infos[0].last_modified); |
123 } | 123 } |
124 | 124 |
125 TEST_F(DomStorageContextTest, SessionOnly) { | 125 TEST_F(DomStorageContextTest, SessionOnly) { |
126 const GURL kSessionOnlyOrigin("http://www.sessiononly.com/"); | 126 const GURL kSessionOnlyOrigin("http://www.sessiononly.com/"); |
127 storage_policy_->AddSessionOnly(kSessionOnlyOrigin); | 127 storage_policy_->AddSessionOnly(kSessionOnlyOrigin); |
128 | 128 |
129 // Store data for a normal and a session-only origin and then | 129 // Store data for a normal and a session-only origin and then |
130 // invoke Shutdown() which should delete data for session-only | 130 // invoke Shutdown() which should delete data for session-only |
131 // origins. | 131 // origins. |
132 NullableString16 old_value; | 132 base::NullableString16 old_value; |
133 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)-> | 133 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)-> |
134 OpenStorageArea(kOrigin)->SetItem(kKey, kValue, &old_value)); | 134 OpenStorageArea(kOrigin)->SetItem(kKey, kValue, &old_value)); |
135 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)-> | 135 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)-> |
136 OpenStorageArea(kSessionOnlyOrigin)->SetItem(kKey, kValue, &old_value)); | 136 OpenStorageArea(kSessionOnlyOrigin)->SetItem(kKey, kValue, &old_value)); |
137 context_->Shutdown(); | 137 context_->Shutdown(); |
138 context_ = NULL; | 138 context_ = NULL; |
139 base::MessageLoop::current()->RunUntilIdle(); | 139 base::MessageLoop::current()->RunUntilIdle(); |
140 | 140 |
141 // Verify that the session-only origin data is gone. | 141 // Verify that the session-only origin data is gone. |
142 VerifySingleOriginRemains(kOrigin); | 142 VerifySingleOriginRemains(kOrigin); |
143 } | 143 } |
144 | 144 |
145 TEST_F(DomStorageContextTest, SetForceKeepSessionState) { | 145 TEST_F(DomStorageContextTest, SetForceKeepSessionState) { |
146 const GURL kSessionOnlyOrigin("http://www.sessiononly.com/"); | 146 const GURL kSessionOnlyOrigin("http://www.sessiononly.com/"); |
147 storage_policy_->AddSessionOnly(kSessionOnlyOrigin); | 147 storage_policy_->AddSessionOnly(kSessionOnlyOrigin); |
148 | 148 |
149 // Store data for a session-only origin, setup to save session data, then | 149 // Store data for a session-only origin, setup to save session data, then |
150 // shutdown. | 150 // shutdown. |
151 NullableString16 old_value; | 151 base::NullableString16 old_value; |
152 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)-> | 152 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)-> |
153 OpenStorageArea(kSessionOnlyOrigin)->SetItem(kKey, kValue, &old_value)); | 153 OpenStorageArea(kSessionOnlyOrigin)->SetItem(kKey, kValue, &old_value)); |
154 context_->SetForceKeepSessionState(); // Should override clear behavior. | 154 context_->SetForceKeepSessionState(); // Should override clear behavior. |
155 context_->Shutdown(); | 155 context_->Shutdown(); |
156 context_ = NULL; | 156 context_ = NULL; |
157 base::MessageLoop::current()->RunUntilIdle(); | 157 base::MessageLoop::current()->RunUntilIdle(); |
158 | 158 |
159 VerifySingleOriginRemains(kSessionOnlyOrigin); | 159 VerifySingleOriginRemains(kSessionOnlyOrigin); |
160 } | 160 } |
161 | 161 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 // Write data. | 200 // Write data. |
201 const int kSessionStorageNamespaceId = 1; | 201 const int kSessionStorageNamespaceId = 1; |
202 const std::string kPersistentId = "persistent"; | 202 const std::string kPersistentId = "persistent"; |
203 context_->CreateSessionNamespace(kSessionStorageNamespaceId, | 203 context_->CreateSessionNamespace(kSessionStorageNamespaceId, |
204 kPersistentId); | 204 kPersistentId); |
205 DomStorageNamespace* dom_namespace = | 205 DomStorageNamespace* dom_namespace = |
206 context_->GetStorageNamespace(kSessionStorageNamespaceId); | 206 context_->GetStorageNamespace(kSessionStorageNamespaceId); |
207 DomStorageArea* area = dom_namespace->OpenStorageArea(kOrigin); | 207 DomStorageArea* area = dom_namespace->OpenStorageArea(kOrigin); |
208 const base::string16 kKey(ASCIIToUTF16("foo")); | 208 const base::string16 kKey(ASCIIToUTF16("foo")); |
209 const base::string16 kValue(ASCIIToUTF16("bar")); | 209 const base::string16 kValue(ASCIIToUTF16("bar")); |
210 NullableString16 old_nullable_value; | 210 base::NullableString16 old_nullable_value; |
211 area->SetItem(kKey, kValue, &old_nullable_value); | 211 area->SetItem(kKey, kValue, &old_nullable_value); |
212 dom_namespace->CloseStorageArea(area); | 212 dom_namespace->CloseStorageArea(area); |
213 | 213 |
214 // Destroy and recreate the DomStorageContext. | 214 // Destroy and recreate the DomStorageContext. |
215 context_->Shutdown(); | 215 context_->Shutdown(); |
216 context_ = NULL; | 216 context_ = NULL; |
217 base::MessageLoop::current()->RunUntilIdle(); | 217 base::MessageLoop::current()->RunUntilIdle(); |
218 context_ = new DomStorageContext( | 218 context_ = new DomStorageContext( |
219 temp_dir_.path(), temp_dir_.path(), | 219 temp_dir_.path(), temp_dir_.path(), |
220 storage_policy_.get(), task_runner_.get()); | 220 storage_policy_.get(), task_runner_.get()); |
221 context_->SetSaveSessionStorageOnDisk(); | 221 context_->SetSaveSessionStorageOnDisk(); |
222 | 222 |
223 // Read the data back. | 223 // Read the data back. |
224 context_->CreateSessionNamespace(kSessionStorageNamespaceId, | 224 context_->CreateSessionNamespace(kSessionStorageNamespaceId, |
225 kPersistentId); | 225 kPersistentId); |
226 dom_namespace = context_->GetStorageNamespace(kSessionStorageNamespaceId); | 226 dom_namespace = context_->GetStorageNamespace(kSessionStorageNamespaceId); |
227 area = dom_namespace->OpenStorageArea(kOrigin); | 227 area = dom_namespace->OpenStorageArea(kOrigin); |
228 NullableString16 read_value; | 228 base::NullableString16 read_value; |
229 read_value = area->GetItem(kKey); | 229 read_value = area->GetItem(kKey); |
230 EXPECT_EQ(kValue, read_value.string()); | 230 EXPECT_EQ(kValue, read_value.string()); |
231 dom_namespace->CloseStorageArea(area); | 231 dom_namespace->CloseStorageArea(area); |
232 | 232 |
233 SessionStorageUsageInfo info; | 233 SessionStorageUsageInfo info; |
234 info.origin = kOrigin; | 234 info.origin = kOrigin; |
235 info.persistent_namespace_id = kPersistentId; | 235 info.persistent_namespace_id = kPersistentId; |
236 context_->DeleteSessionStorage(info); | 236 context_->DeleteSessionStorage(info); |
237 | 237 |
238 // Destroy and recreate again. | 238 // Destroy and recreate again. |
(...skipping 12 matching lines...) Expand all Loading... |
251 area = dom_namespace->OpenStorageArea(kOrigin); | 251 area = dom_namespace->OpenStorageArea(kOrigin); |
252 read_value = area->GetItem(kKey); | 252 read_value = area->GetItem(kKey); |
253 EXPECT_TRUE(read_value.is_null()); | 253 EXPECT_TRUE(read_value.is_null()); |
254 dom_namespace->CloseStorageArea(area); | 254 dom_namespace->CloseStorageArea(area); |
255 context_->Shutdown(); | 255 context_->Shutdown(); |
256 context_ = NULL; | 256 context_ = NULL; |
257 base::MessageLoop::current()->RunUntilIdle(); | 257 base::MessageLoop::current()->RunUntilIdle(); |
258 } | 258 } |
259 | 259 |
260 } // namespace dom_storage | 260 } // namespace dom_storage |
OLD | NEW |