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

Side by Side Diff: content/browser/dom_storage/dom_storage_context_impl_unittest.cc

Issue 22297005: Move webkit/{browser,common}/dom_storage into content/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 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 "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/message_loop.h" 8 #include "base/message_loop/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"
11 #include "base/threading/sequenced_worker_pool.h" 11 #include "base/threading/sequenced_worker_pool.h"
12 #include "base/time/time.h" 12 #include "base/time/time.h"
13 #include "content/browser/dom_storage/dom_storage_area.h"
14 #include "content/browser/dom_storage/dom_storage_context_impl.h"
15 #include "content/browser/dom_storage/dom_storage_namespace.h"
16 #include "content/browser/dom_storage/dom_storage_task_runner.h"
17 #include "content/public/browser/dom_storage_context.h"
13 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
14 #include "webkit/browser/dom_storage/dom_storage_area.h"
15 #include "webkit/browser/dom_storage/dom_storage_context.h"
16 #include "webkit/browser/dom_storage/dom_storage_namespace.h"
17 #include "webkit/browser/dom_storage/dom_storage_task_runner.h"
18 #include "webkit/browser/quota/mock_special_storage_policy.h" 19 #include "webkit/browser/quota/mock_special_storage_policy.h"
19 #include "webkit/common/dom_storage/dom_storage_types.h"
20 20
21 namespace dom_storage { 21 namespace content {
22 22
23 class DomStorageContextTest : public testing::Test { 23 class DOMStorageContextImplTest : public testing::Test {
24 public: 24 public:
25 DomStorageContextTest() 25 DOMStorageContextImplTest()
26 : kOrigin(GURL("http://dom_storage/")), 26 : kOrigin(GURL("http://dom_storage/")),
27 kKey(ASCIIToUTF16("key")), 27 kKey(ASCIIToUTF16("key")),
28 kValue(ASCIIToUTF16("value")), 28 kValue(ASCIIToUTF16("value")),
29 kDontIncludeFileInfo(false), 29 kDontIncludeFileInfo(false),
30 kDoIncludeFileInfo(true) { 30 kDoIncludeFileInfo(true) {
31 } 31 }
32 32
33 const GURL kOrigin; 33 const GURL kOrigin;
34 const base::string16 kKey; 34 const base::string16 kKey;
35 const base::string16 kValue; 35 const base::string16 kValue;
36 const bool kDontIncludeFileInfo; 36 const bool kDontIncludeFileInfo;
37 const bool kDoIncludeFileInfo; 37 const bool kDoIncludeFileInfo;
38 38
39 virtual void SetUp() { 39 virtual void SetUp() {
40 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 40 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
41 storage_policy_ = new quota::MockSpecialStoragePolicy; 41 storage_policy_ = new quota::MockSpecialStoragePolicy;
42 task_runner_ = 42 task_runner_ =
43 new MockDomStorageTaskRunner(base::MessageLoopProxy::current().get()); 43 new MockDOMStorageTaskRunner(base::MessageLoopProxy::current().get());
44 context_ = new DomStorageContext(temp_dir_.path(), 44 context_ = new DOMStorageContextImpl(temp_dir_.path(),
45 base::FilePath(), 45 base::FilePath(),
46 storage_policy_.get(), 46 storage_policy_.get(),
47 task_runner_.get()); 47 task_runner_.get());
48 } 48 }
49 49
50 virtual void TearDown() { 50 virtual void TearDown() {
51 base::MessageLoop::current()->RunUntilIdle(); 51 base::MessageLoop::current()->RunUntilIdle();
52 } 52 }
53 53
54 void VerifySingleOriginRemains(const GURL& origin) { 54 void VerifySingleOriginRemains(const GURL& origin) {
55 // Use a new instance to examine the contexts of temp_dir_. 55 // Use a new instance to examine the contexts of temp_dir_.
56 scoped_refptr<DomStorageContext> context = 56 scoped_refptr<DOMStorageContextImpl> context =
57 new DomStorageContext(temp_dir_.path(), base::FilePath(), NULL, NULL); 57 new DOMStorageContextImpl(temp_dir_.path(), base::FilePath(), NULL, NULL );
58 std::vector<LocalStorageUsageInfo> infos; 58 std::vector<LocalStorageUsageInfo> infos;
59 context->GetLocalStorageUsage(&infos, kDontIncludeFileInfo); 59 context->GetLocalStorageUsage(&infos, kDontIncludeFileInfo);
60 ASSERT_EQ(1u, infos.size()); 60 ASSERT_EQ(1u, infos.size());
61 EXPECT_EQ(origin, infos[0].origin); 61 EXPECT_EQ(origin, infos[0].origin);
62 } 62 }
63 63
64 protected: 64 protected:
65 base::MessageLoop message_loop_; 65 base::MessageLoop message_loop_;
66 base::ScopedTempDir temp_dir_; 66 base::ScopedTempDir temp_dir_;
67 scoped_refptr<quota::MockSpecialStoragePolicy> storage_policy_; 67 scoped_refptr<quota::MockSpecialStoragePolicy> storage_policy_;
68 scoped_refptr<MockDomStorageTaskRunner> task_runner_; 68 scoped_refptr<MockDOMStorageTaskRunner> task_runner_;
69 scoped_refptr<DomStorageContext> context_; 69 scoped_refptr<DOMStorageContextImpl> context_;
70 DISALLOW_COPY_AND_ASSIGN(DomStorageContextTest); 70 DISALLOW_COPY_AND_ASSIGN(DOMStorageContextImplTest);
71 }; 71 };
72 72
73 TEST_F(DomStorageContextTest, Basics) { 73 TEST_F(DOMStorageContextImplTest, Basics) {
74 // This test doesn't do much, checks that the constructor 74 // This test doesn't do much, checks that the constructor
75 // initializes members properly and that invoking methods 75 // initializes members properly and that invoking methods
76 // on a newly created object w/o any data on disk do no harm. 76 // on a newly created object w/o any data on disk do no harm.
77 EXPECT_EQ(temp_dir_.path(), context_->localstorage_directory()); 77 EXPECT_EQ(temp_dir_.path(), context_->localstorage_directory());
78 EXPECT_EQ(base::FilePath(), context_->sessionstorage_directory()); 78 EXPECT_EQ(base::FilePath(), context_->sessionstorage_directory());
79 EXPECT_EQ(storage_policy_.get(), context_->special_storage_policy_.get()); 79 EXPECT_EQ(storage_policy_.get(), context_->special_storage_policy_.get());
80 context_->PurgeMemory(); 80 context_->PurgeMemory();
81 context_->DeleteLocalStorage(GURL("http://chromium.org/")); 81 context_->DeleteLocalStorage(GURL("http://chromium.org/"));
82 const int kFirstSessionStorageNamespaceId = 1; 82 const int kFirstSessionStorageNamespaceId = 1;
83 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)); 83 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId));
84 EXPECT_FALSE(context_->GetStorageNamespace(kFirstSessionStorageNamespaceId)); 84 EXPECT_FALSE(context_->GetStorageNamespace(kFirstSessionStorageNamespaceId));
85 EXPECT_EQ(kFirstSessionStorageNamespaceId, context_->AllocateSessionId()); 85 EXPECT_EQ(kFirstSessionStorageNamespaceId, context_->AllocateSessionId());
86 std::vector<LocalStorageUsageInfo> infos; 86 std::vector<LocalStorageUsageInfo> infos;
87 context_->GetLocalStorageUsage(&infos, kDontIncludeFileInfo); 87 context_->GetLocalStorageUsage(&infos, kDontIncludeFileInfo);
88 EXPECT_TRUE(infos.empty()); 88 EXPECT_TRUE(infos.empty());
89 context_->Shutdown(); 89 context_->Shutdown();
90 } 90 }
91 91
92 TEST_F(DomStorageContextTest, UsageInfo) { 92 TEST_F(DOMStorageContextImplTest, 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 base::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 DOMStorageContextImpl(temp_dir_.path(), base::FilePath(),
112 NULL, NULL);
112 context_->GetLocalStorageUsage(&infos, kDontIncludeFileInfo); 113 context_->GetLocalStorageUsage(&infos, kDontIncludeFileInfo);
113 EXPECT_EQ(1u, infos.size()); 114 EXPECT_EQ(1u, infos.size());
114 EXPECT_EQ(kOrigin, infos[0].origin); 115 EXPECT_EQ(kOrigin, infos[0].origin);
115 EXPECT_EQ(0u, infos[0].data_size); 116 EXPECT_EQ(0u, infos[0].data_size);
116 EXPECT_EQ(base::Time(), infos[0].last_modified); 117 EXPECT_EQ(base::Time(), infos[0].last_modified);
117 infos.clear(); 118 infos.clear();
118 context_->GetLocalStorageUsage(&infos, kDoIncludeFileInfo); 119 context_->GetLocalStorageUsage(&infos, kDoIncludeFileInfo);
119 EXPECT_EQ(1u, infos.size()); 120 EXPECT_EQ(1u, infos.size());
120 EXPECT_EQ(kOrigin, infos[0].origin); 121 EXPECT_EQ(kOrigin, infos[0].origin);
121 EXPECT_NE(0u, infos[0].data_size); 122 EXPECT_NE(0u, infos[0].data_size);
122 EXPECT_NE(base::Time(), infos[0].last_modified); 123 EXPECT_NE(base::Time(), infos[0].last_modified);
123 } 124 }
124 125
125 TEST_F(DomStorageContextTest, SessionOnly) { 126 TEST_F(DOMStorageContextImplTest, SessionOnly) {
126 const GURL kSessionOnlyOrigin("http://www.sessiononly.com/"); 127 const GURL kSessionOnlyOrigin("http://www.sessiononly.com/");
127 storage_policy_->AddSessionOnly(kSessionOnlyOrigin); 128 storage_policy_->AddSessionOnly(kSessionOnlyOrigin);
128 129
129 // Store data for a normal and a session-only origin and then 130 // Store data for a normal and a session-only origin and then
130 // invoke Shutdown() which should delete data for session-only 131 // invoke Shutdown() which should delete data for session-only
131 // origins. 132 // origins.
132 base::NullableString16 old_value; 133 base::NullableString16 old_value;
133 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)-> 134 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)->
134 OpenStorageArea(kOrigin)->SetItem(kKey, kValue, &old_value)); 135 OpenStorageArea(kOrigin)->SetItem(kKey, kValue, &old_value));
135 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)-> 136 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)->
136 OpenStorageArea(kSessionOnlyOrigin)->SetItem(kKey, kValue, &old_value)); 137 OpenStorageArea(kSessionOnlyOrigin)->SetItem(kKey, kValue, &old_value));
137 context_->Shutdown(); 138 context_->Shutdown();
138 context_ = NULL; 139 context_ = NULL;
139 base::MessageLoop::current()->RunUntilIdle(); 140 base::MessageLoop::current()->RunUntilIdle();
140 141
141 // Verify that the session-only origin data is gone. 142 // Verify that the session-only origin data is gone.
142 VerifySingleOriginRemains(kOrigin); 143 VerifySingleOriginRemains(kOrigin);
143 } 144 }
144 145
145 TEST_F(DomStorageContextTest, SetForceKeepSessionState) { 146 TEST_F(DOMStorageContextImplTest, SetForceKeepSessionState) {
146 const GURL kSessionOnlyOrigin("http://www.sessiononly.com/"); 147 const GURL kSessionOnlyOrigin("http://www.sessiononly.com/");
147 storage_policy_->AddSessionOnly(kSessionOnlyOrigin); 148 storage_policy_->AddSessionOnly(kSessionOnlyOrigin);
148 149
149 // Store data for a session-only origin, setup to save session data, then 150 // Store data for a session-only origin, setup to save session data, then
150 // shutdown. 151 // shutdown.
151 base::NullableString16 old_value; 152 base::NullableString16 old_value;
152 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)-> 153 EXPECT_TRUE(context_->GetStorageNamespace(kLocalStorageNamespaceId)->
153 OpenStorageArea(kSessionOnlyOrigin)->SetItem(kKey, kValue, &old_value)); 154 OpenStorageArea(kSessionOnlyOrigin)->SetItem(kKey, kValue, &old_value));
154 context_->SetForceKeepSessionState(); // Should override clear behavior. 155 context_->SetForceKeepSessionState(); // Should override clear behavior.
155 context_->Shutdown(); 156 context_->Shutdown();
156 context_ = NULL; 157 context_ = NULL;
157 base::MessageLoop::current()->RunUntilIdle(); 158 base::MessageLoop::current()->RunUntilIdle();
158 159
159 VerifySingleOriginRemains(kSessionOnlyOrigin); 160 VerifySingleOriginRemains(kSessionOnlyOrigin);
160 } 161 }
161 162
162 TEST_F(DomStorageContextTest, PersistentIds) { 163 TEST_F(DOMStorageContextImplTest, PersistentIds) {
163 const int kFirstSessionStorageNamespaceId = 1; 164 const int kFirstSessionStorageNamespaceId = 1;
164 const std::string kPersistentId = "persistent"; 165 const std::string kPersistentId = "persistent";
165 context_->CreateSessionNamespace(kFirstSessionStorageNamespaceId, 166 context_->CreateSessionNamespace(kFirstSessionStorageNamespaceId,
166 kPersistentId); 167 kPersistentId);
167 DomStorageNamespace* dom_namespace = 168 DOMStorageNamespace* dom_namespace =
168 context_->GetStorageNamespace(kFirstSessionStorageNamespaceId); 169 context_->GetStorageNamespace(kFirstSessionStorageNamespaceId);
169 ASSERT_TRUE(dom_namespace); 170 ASSERT_TRUE(dom_namespace);
170 EXPECT_EQ(kPersistentId, dom_namespace->persistent_namespace_id()); 171 EXPECT_EQ(kPersistentId, dom_namespace->persistent_namespace_id());
171 // Verify that the areas inherit the persistent ID. 172 // Verify that the areas inherit the persistent ID.
172 DomStorageArea* area = dom_namespace->OpenStorageArea(kOrigin); 173 DOMStorageArea* area = dom_namespace->OpenStorageArea(kOrigin);
173 EXPECT_EQ(kPersistentId, area->persistent_namespace_id_); 174 EXPECT_EQ(kPersistentId, area->persistent_namespace_id_);
174 175
175 // Verify that the persistent IDs are handled correctly when cloning. 176 // Verify that the persistent IDs are handled correctly when cloning.
176 const int kClonedSessionStorageNamespaceId = 2; 177 const int kClonedSessionStorageNamespaceId = 2;
177 const std::string kClonedPersistentId = "cloned"; 178 const std::string kClonedPersistentId = "cloned";
178 context_->CloneSessionNamespace(kFirstSessionStorageNamespaceId, 179 context_->CloneSessionNamespace(kFirstSessionStorageNamespaceId,
179 kClonedSessionStorageNamespaceId, 180 kClonedSessionStorageNamespaceId,
180 kClonedPersistentId); 181 kClonedPersistentId);
181 DomStorageNamespace* cloned_dom_namespace = 182 DOMStorageNamespace* cloned_dom_namespace =
182 context_->GetStorageNamespace(kClonedSessionStorageNamespaceId); 183 context_->GetStorageNamespace(kClonedSessionStorageNamespaceId);
183 ASSERT_TRUE(dom_namespace); 184 ASSERT_TRUE(dom_namespace);
184 EXPECT_EQ(kClonedPersistentId, 185 EXPECT_EQ(kClonedPersistentId,
185 cloned_dom_namespace->persistent_namespace_id()); 186 cloned_dom_namespace->persistent_namespace_id());
186 // Verify that the areas inherit the persistent ID. 187 // Verify that the areas inherit the persistent ID.
187 DomStorageArea* cloned_area = cloned_dom_namespace->OpenStorageArea(kOrigin); 188 DOMStorageArea* cloned_area = cloned_dom_namespace->OpenStorageArea(kOrigin);
188 EXPECT_EQ(kClonedPersistentId, cloned_area->persistent_namespace_id_); 189 EXPECT_EQ(kClonedPersistentId, cloned_area->persistent_namespace_id_);
189 } 190 }
190 191
191 TEST_F(DomStorageContextTest, DeleteSessionStorage) { 192 TEST_F(DOMStorageContextImplTest, DeleteSessionStorage) {
192 // Create a DomStorageContext which will save sessionStorage on disk. 193 // Create a DOMStorageContextImpl which will save sessionStorage on disk.
193 context_ = new DomStorageContext(temp_dir_.path(), 194 context_ = new DOMStorageContextImpl(temp_dir_.path(),
194 temp_dir_.path(), 195 temp_dir_.path(),
195 storage_policy_.get(), 196 storage_policy_.get(),
196 task_runner_.get()); 197 task_runner_.get());
197 context_->SetSaveSessionStorageOnDisk(); 198 context_->SetSaveSessionStorageOnDisk();
198 ASSERT_EQ(temp_dir_.path(), context_->sessionstorage_directory()); 199 ASSERT_EQ(temp_dir_.path(), context_->sessionstorage_directory());
199 200
200 // Write data. 201 // Write data.
201 const int kSessionStorageNamespaceId = 1; 202 const int kSessionStorageNamespaceId = 1;
202 const std::string kPersistentId = "persistent"; 203 const std::string kPersistentId = "persistent";
203 context_->CreateSessionNamespace(kSessionStorageNamespaceId, 204 context_->CreateSessionNamespace(kSessionStorageNamespaceId,
204 kPersistentId); 205 kPersistentId);
205 DomStorageNamespace* dom_namespace = 206 DOMStorageNamespace* dom_namespace =
206 context_->GetStorageNamespace(kSessionStorageNamespaceId); 207 context_->GetStorageNamespace(kSessionStorageNamespaceId);
207 DomStorageArea* area = dom_namespace->OpenStorageArea(kOrigin); 208 DOMStorageArea* area = dom_namespace->OpenStorageArea(kOrigin);
208 const base::string16 kKey(ASCIIToUTF16("foo")); 209 const base::string16 kKey(ASCIIToUTF16("foo"));
209 const base::string16 kValue(ASCIIToUTF16("bar")); 210 const base::string16 kValue(ASCIIToUTF16("bar"));
210 base::NullableString16 old_nullable_value; 211 base::NullableString16 old_nullable_value;
211 area->SetItem(kKey, kValue, &old_nullable_value); 212 area->SetItem(kKey, kValue, &old_nullable_value);
212 dom_namespace->CloseStorageArea(area); 213 dom_namespace->CloseStorageArea(area);
213 214
214 // Destroy and recreate the DomStorageContext. 215 // Destroy and recreate the DOMStorageContextImpl.
215 context_->Shutdown(); 216 context_->Shutdown();
216 context_ = NULL; 217 context_ = NULL;
217 base::MessageLoop::current()->RunUntilIdle(); 218 base::MessageLoop::current()->RunUntilIdle();
218 context_ = new DomStorageContext( 219 context_ = new DOMStorageContextImpl(
219 temp_dir_.path(), temp_dir_.path(), 220 temp_dir_.path(), temp_dir_.path(),
220 storage_policy_.get(), task_runner_.get()); 221 storage_policy_.get(), task_runner_.get());
221 context_->SetSaveSessionStorageOnDisk(); 222 context_->SetSaveSessionStorageOnDisk();
222 223
223 // Read the data back. 224 // Read the data back.
224 context_->CreateSessionNamespace(kSessionStorageNamespaceId, 225 context_->CreateSessionNamespace(kSessionStorageNamespaceId,
225 kPersistentId); 226 kPersistentId);
226 dom_namespace = context_->GetStorageNamespace(kSessionStorageNamespaceId); 227 dom_namespace = context_->GetStorageNamespace(kSessionStorageNamespaceId);
227 area = dom_namespace->OpenStorageArea(kOrigin); 228 area = dom_namespace->OpenStorageArea(kOrigin);
228 base::NullableString16 read_value; 229 base::NullableString16 read_value;
229 read_value = area->GetItem(kKey); 230 read_value = area->GetItem(kKey);
230 EXPECT_EQ(kValue, read_value.string()); 231 EXPECT_EQ(kValue, read_value.string());
231 dom_namespace->CloseStorageArea(area); 232 dom_namespace->CloseStorageArea(area);
232 233
233 SessionStorageUsageInfo info; 234 SessionStorageUsageInfo info;
234 info.origin = kOrigin; 235 info.origin = kOrigin;
235 info.persistent_namespace_id = kPersistentId; 236 info.persistent_namespace_id = kPersistentId;
236 context_->DeleteSessionStorage(info); 237 context_->DeleteSessionStorage(info);
237 238
238 // Destroy and recreate again. 239 // Destroy and recreate again.
239 context_->Shutdown(); 240 context_->Shutdown();
240 context_ = NULL; 241 context_ = NULL;
241 base::MessageLoop::current()->RunUntilIdle(); 242 base::MessageLoop::current()->RunUntilIdle();
242 context_ = new DomStorageContext( 243 context_ = new DOMStorageContextImpl(
243 temp_dir_.path(), temp_dir_.path(), 244 temp_dir_.path(), temp_dir_.path(),
244 storage_policy_.get(), task_runner_.get()); 245 storage_policy_.get(), task_runner_.get());
245 context_->SetSaveSessionStorageOnDisk(); 246 context_->SetSaveSessionStorageOnDisk();
246 247
247 // Now there should be no data. 248 // Now there should be no data.
248 context_->CreateSessionNamespace(kSessionStorageNamespaceId, 249 context_->CreateSessionNamespace(kSessionStorageNamespaceId,
249 kPersistentId); 250 kPersistentId);
250 dom_namespace = context_->GetStorageNamespace(kSessionStorageNamespaceId); 251 dom_namespace = context_->GetStorageNamespace(kSessionStorageNamespaceId);
251 area = dom_namespace->OpenStorageArea(kOrigin); 252 area = dom_namespace->OpenStorageArea(kOrigin);
252 read_value = area->GetItem(kKey); 253 read_value = area->GetItem(kKey);
253 EXPECT_TRUE(read_value.is_null()); 254 EXPECT_TRUE(read_value.is_null());
254 dom_namespace->CloseStorageArea(area); 255 dom_namespace->CloseStorageArea(area);
255 context_->Shutdown(); 256 context_->Shutdown();
256 context_ = NULL; 257 context_ = NULL;
257 base::MessageLoop::current()->RunUntilIdle(); 258 base::MessageLoop::current()->RunUntilIdle();
258 } 259 }
259 260
260 } // namespace dom_storage 261 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698