| 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 |