Chromium Code Reviews
[email protected] (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(679)

Side by Side Diff: webkit/appcache/appcache_service_unittest.cc

Issue 14520026: webkit: Use base::MessageLoop. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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 <string> 5 #include <string>
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/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/pickle.h" 10 #include "base/pickle.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 return; 60 return;
61 } 61 }
62 DCHECK(buf_len >= data_size_); 62 DCHECK(buf_len >= data_size_);
63 memcpy(buf->data(), data_, data_size_); 63 memcpy(buf->data(), data_, data_size_);
64 ScheduleUserCallback(data_size_); 64 ScheduleUserCallback(data_size_);
65 data_size_ = 0; 65 data_size_ = 0;
66 } 66 }
67 67
68 private: 68 private:
69 void ScheduleUserCallback(int result) { 69 void ScheduleUserCallback(int result) {
70 MessageLoop::current()->PostTask( 70 base::MessageLoop::current()->PostTask(
71 FROM_HERE, 71 FROM_HERE,
72 base::Bind(&MockResponseReader::InvokeUserCompletionCallback, 72 base::Bind(&MockResponseReader::InvokeUserCompletionCallback,
73 weak_factory_.GetWeakPtr(), result)); 73 weak_factory_.GetWeakPtr(),
brettw 2013/04/30 21:56:47 "
xhwang 2013/05/06 16:33:12 Done.
xhwang 2013/05/06 16:33:12 Done.
74 result));
74 } 75 }
75 76
76 scoped_ptr<net::HttpResponseInfo> info_; 77 scoped_ptr<net::HttpResponseInfo> info_;
77 int info_size_; 78 int info_size_;
78 const char* data_; 79 const char* data_;
79 int data_size_; 80 int data_size_;
80 }; 81 };
81 82
82 } // namespace 83 } // namespace
83 84
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 172
172 const GURL kOrigin; 173 const GURL kOrigin;
173 const GURL kManifestUrl; 174 const GURL kManifestUrl;
174 175
175 scoped_ptr<AppCacheService> service_; 176 scoped_ptr<AppCacheService> service_;
176 int delete_result_; 177 int delete_result_;
177 int delete_completion_count_; 178 int delete_completion_count_;
178 net::CompletionCallback deletion_callback_; 179 net::CompletionCallback deletion_callback_;
179 180
180 private: 181 private:
181 MessageLoop message_loop_; 182 base::MessageLoop message_loop_;
182 }; 183 };
183 184
184 TEST_F(AppCacheServiceTest, DeleteAppCachesForOrigin) { 185 TEST_F(AppCacheServiceTest, DeleteAppCachesForOrigin) {
185 // Without giving mock storage simiulated info, should fail. 186 // Without giving mock storage simiulated info, should fail.
186 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); 187 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_);
187 EXPECT_EQ(0, delete_completion_count_); 188 EXPECT_EQ(0, delete_completion_count_);
188 MessageLoop::current()->RunUntilIdle(); 189 base::MessageLoop::current()->RunUntilIdle();
189 EXPECT_EQ(1, delete_completion_count_); 190 EXPECT_EQ(1, delete_completion_count_);
190 EXPECT_EQ(net::ERR_FAILED, delete_result_); 191 EXPECT_EQ(net::ERR_FAILED, delete_result_);
191 delete_completion_count_ = 0; 192 delete_completion_count_ = 0;
192 193
193 // Should succeed given an empty info collection. 194 // Should succeed given an empty info collection.
194 mock_storage()->SimulateGetAllInfo(new AppCacheInfoCollection); 195 mock_storage()->SimulateGetAllInfo(new AppCacheInfoCollection);
195 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); 196 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_);
196 EXPECT_EQ(0, delete_completion_count_); 197 EXPECT_EQ(0, delete_completion_count_);
197 MessageLoop::current()->RunUntilIdle(); 198 base::MessageLoop::current()->RunUntilIdle();
198 EXPECT_EQ(1, delete_completion_count_); 199 EXPECT_EQ(1, delete_completion_count_);
199 EXPECT_EQ(net::OK, delete_result_); 200 EXPECT_EQ(net::OK, delete_result_);
200 delete_completion_count_ = 0; 201 delete_completion_count_ = 0;
201 202
202 scoped_refptr<AppCacheInfoCollection> info(new AppCacheInfoCollection); 203 scoped_refptr<AppCacheInfoCollection> info(new AppCacheInfoCollection);
203 204
204 // Should succeed given a non-empty info collection. 205 // Should succeed given a non-empty info collection.
205 AppCacheInfo mock_manifest_1; 206 AppCacheInfo mock_manifest_1;
206 AppCacheInfo mock_manifest_2; 207 AppCacheInfo mock_manifest_2;
207 AppCacheInfo mock_manifest_3; 208 AppCacheInfo mock_manifest_3;
208 mock_manifest_1.manifest_url = kOrigin.Resolve("manifest1"); 209 mock_manifest_1.manifest_url = kOrigin.Resolve("manifest1");
209 mock_manifest_2.manifest_url = kOrigin.Resolve("manifest2"); 210 mock_manifest_2.manifest_url = kOrigin.Resolve("manifest2");
210 mock_manifest_3.manifest_url = kOrigin.Resolve("manifest3"); 211 mock_manifest_3.manifest_url = kOrigin.Resolve("manifest3");
211 AppCacheInfoVector info_vector; 212 AppCacheInfoVector info_vector;
212 info_vector.push_back(mock_manifest_1); 213 info_vector.push_back(mock_manifest_1);
213 info_vector.push_back(mock_manifest_2); 214 info_vector.push_back(mock_manifest_2);
214 info_vector.push_back(mock_manifest_3); 215 info_vector.push_back(mock_manifest_3);
215 info->infos_by_origin[kOrigin] = info_vector; 216 info->infos_by_origin[kOrigin] = info_vector;
216 mock_storage()->SimulateGetAllInfo(info); 217 mock_storage()->SimulateGetAllInfo(info);
217 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); 218 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_);
218 EXPECT_EQ(0, delete_completion_count_); 219 EXPECT_EQ(0, delete_completion_count_);
219 MessageLoop::current()->RunUntilIdle(); 220 base::MessageLoop::current()->RunUntilIdle();
220 EXPECT_EQ(1, delete_completion_count_); 221 EXPECT_EQ(1, delete_completion_count_);
221 EXPECT_EQ(net::OK, delete_result_); 222 EXPECT_EQ(net::OK, delete_result_);
222 delete_completion_count_ = 0; 223 delete_completion_count_ = 0;
223 224
224 // Should fail if storage fails to delete. 225 // Should fail if storage fails to delete.
225 info->infos_by_origin[kOrigin] = info_vector; 226 info->infos_by_origin[kOrigin] = info_vector;
226 mock_storage()->SimulateGetAllInfo(info); 227 mock_storage()->SimulateGetAllInfo(info);
227 mock_storage()->SimulateMakeGroupObsoleteFailure(); 228 mock_storage()->SimulateMakeGroupObsoleteFailure();
228 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); 229 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_);
229 EXPECT_EQ(0, delete_completion_count_); 230 EXPECT_EQ(0, delete_completion_count_);
230 MessageLoop::current()->RunUntilIdle(); 231 base::MessageLoop::current()->RunUntilIdle();
231 EXPECT_EQ(1, delete_completion_count_); 232 EXPECT_EQ(1, delete_completion_count_);
232 EXPECT_EQ(net::ERR_FAILED, delete_result_); 233 EXPECT_EQ(net::ERR_FAILED, delete_result_);
233 delete_completion_count_ = 0; 234 delete_completion_count_ = 0;
234 235
235 // Should complete with abort error if the service is deleted 236 // Should complete with abort error if the service is deleted
236 // prior to a delete completion. 237 // prior to a delete completion.
237 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_); 238 service_->DeleteAppCachesForOrigin(kOrigin, deletion_callback_);
238 EXPECT_EQ(0, delete_completion_count_); 239 EXPECT_EQ(0, delete_completion_count_);
239 service_.reset(); // kill it 240 service_.reset(); // kill it
240 EXPECT_EQ(1, delete_completion_count_); 241 EXPECT_EQ(1, delete_completion_count_);
241 EXPECT_EQ(net::ERR_ABORTED, delete_result_); 242 EXPECT_EQ(net::ERR_ABORTED, delete_result_);
242 delete_completion_count_ = 0; 243 delete_completion_count_ = 0;
243 244
244 // Let any tasks lingering from the sudden deletion run and verify 245 // Let any tasks lingering from the sudden deletion run and verify
245 // no other completion calls occur. 246 // no other completion calls occur.
246 MessageLoop::current()->RunUntilIdle(); 247 base::MessageLoop::current()->RunUntilIdle();
247 EXPECT_EQ(0, delete_completion_count_); 248 EXPECT_EQ(0, delete_completion_count_);
248 } 249 }
249 250
250 TEST_F(AppCacheServiceTest, CheckAppCacheResponse) { 251 TEST_F(AppCacheServiceTest, CheckAppCacheResponse) {
251 // Check a non-existing manifest. 252 // Check a non-existing manifest.
252 EXPECT_FALSE(IsGroupStored(kManifestUrl)); 253 EXPECT_FALSE(IsGroupStored(kManifestUrl));
253 service_->CheckAppCacheResponse(kManifestUrl, 1, 1); 254 service_->CheckAppCacheResponse(kManifestUrl, 1, 1);
254 MessageLoop::current()->RunUntilIdle(); 255 base::MessageLoop::current()->RunUntilIdle();
255 EXPECT_EQ(0, CountPendingHelpers()); 256 EXPECT_EQ(0, CountPendingHelpers());
256 EXPECT_FALSE(IsGroupStored(kManifestUrl)); 257 EXPECT_FALSE(IsGroupStored(kManifestUrl));
257 ResetStorage(); 258 ResetStorage();
258 259
259 // Check a response that looks good. 260 // Check a response that looks good.
260 // Nothing should be deleted. 261 // Nothing should be deleted.
261 SetupMockGroup(); 262 SetupMockGroup();
262 EXPECT_TRUE(IsGroupStored(kManifestUrl)); 263 EXPECT_TRUE(IsGroupStored(kManifestUrl));
263 SetupMockReader(true, true, true); 264 SetupMockReader(true, true, true);
264 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId); 265 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId);
265 MessageLoop::current()->RunUntilIdle(); 266 base::MessageLoop::current()->RunUntilIdle();
266 EXPECT_EQ(0, CountPendingHelpers()); 267 EXPECT_EQ(0, CountPendingHelpers());
267 EXPECT_TRUE(IsGroupStored(kManifestUrl)); 268 EXPECT_TRUE(IsGroupStored(kManifestUrl));
268 ResetStorage(); 269 ResetStorage();
269 270
270 // Check a response for which there is no cache entry. 271 // Check a response for which there is no cache entry.
271 // The group should get deleted. 272 // The group should get deleted.
272 SetupMockGroup(); 273 SetupMockGroup();
273 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, 274 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId,
274 kMissingResponseId); 275 kMissingResponseId);
275 MessageLoop::current()->RunUntilIdle(); 276 base::MessageLoop::current()->RunUntilIdle();
276 EXPECT_EQ(0, CountPendingHelpers()); 277 EXPECT_EQ(0, CountPendingHelpers());
277 EXPECT_FALSE(IsGroupStored(kManifestUrl)); 278 EXPECT_FALSE(IsGroupStored(kManifestUrl));
278 ResetStorage(); 279 ResetStorage();
279 280
280 // Check a response for which there is no manifest entry in a newer version 281 // Check a response for which there is no manifest entry in a newer version
281 // of the cache. Nothing should get deleted in this case. 282 // of the cache. Nothing should get deleted in this case.
282 SetupMockGroup(); 283 SetupMockGroup();
283 service_->CheckAppCacheResponse(kManifestUrl, kMissingCacheId, 284 service_->CheckAppCacheResponse(kManifestUrl, kMissingCacheId,
284 kMissingResponseId); 285 kMissingResponseId);
285 MessageLoop::current()->RunUntilIdle(); 286 base::MessageLoop::current()->RunUntilIdle();
286 EXPECT_EQ(0, CountPendingHelpers()); 287 EXPECT_EQ(0, CountPendingHelpers());
287 EXPECT_TRUE(IsGroupStored(kManifestUrl)); 288 EXPECT_TRUE(IsGroupStored(kManifestUrl));
288 ResetStorage(); 289 ResetStorage();
289 290
290 // Check a response with bad headers. 291 // Check a response with bad headers.
291 SetupMockGroup(); 292 SetupMockGroup();
292 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId); 293 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId);
293 SetupMockReader(false, true, true); 294 SetupMockReader(false, true, true);
294 MessageLoop::current()->RunUntilIdle(); 295 base::MessageLoop::current()->RunUntilIdle();
295 EXPECT_EQ(0, CountPendingHelpers()); 296 EXPECT_EQ(0, CountPendingHelpers());
296 EXPECT_FALSE(IsGroupStored(kManifestUrl)); 297 EXPECT_FALSE(IsGroupStored(kManifestUrl));
297 ResetStorage(); 298 ResetStorage();
298 299
299 // Check a response with bad data. 300 // Check a response with bad data.
300 SetupMockGroup(); 301 SetupMockGroup();
301 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId); 302 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId);
302 SetupMockReader(true, false, true); 303 SetupMockReader(true, false, true);
303 MessageLoop::current()->RunUntilIdle(); 304 base::MessageLoop::current()->RunUntilIdle();
304 EXPECT_EQ(0, CountPendingHelpers()); 305 EXPECT_EQ(0, CountPendingHelpers());
305 EXPECT_FALSE(IsGroupStored(kManifestUrl)); 306 EXPECT_FALSE(IsGroupStored(kManifestUrl));
306 ResetStorage(); 307 ResetStorage();
307 308
308 // Check a response with truncated data. 309 // Check a response with truncated data.
309 SetupMockGroup(); 310 SetupMockGroup();
310 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId); 311 service_->CheckAppCacheResponse(kManifestUrl, kMockCacheId, kMockResponseId);
311 SetupMockReader(true, true, false); 312 SetupMockReader(true, true, false);
312 MessageLoop::current()->RunUntilIdle(); 313 base::MessageLoop::current()->RunUntilIdle();
313 EXPECT_EQ(0, CountPendingHelpers()); 314 EXPECT_EQ(0, CountPendingHelpers());
314 EXPECT_FALSE(IsGroupStored(kManifestUrl)); 315 EXPECT_FALSE(IsGroupStored(kManifestUrl));
315 ResetStorage(); 316 ResetStorage();
316 317
317 service_.reset(); // Clean up. 318 service_.reset(); // Clean up.
318 MessageLoop::current()->RunUntilIdle(); 319 base::MessageLoop::current()->RunUntilIdle();
319 } 320 }
320 321
321 } // namespace appcache 322 } // namespace appcache
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698