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

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

Issue 7031065: AppCache + Quota integration (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 6 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
« no previous file with comments | « webkit/appcache/appcache_storage_impl.cc ('k') | webkit/appcache/appcache_storage_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <stack> 5 #include <stack>
6 6
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/threading/thread.h" 8 #include "base/threading/thread.h"
9 #include "base/synchronization/waitable_event.h" 9 #include "base/synchronization/waitable_event.h"
10 #include "net/base/net_errors.h" 10 #include "net/base/net_errors.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "webkit/appcache/appcache.h" 12 #include "webkit/appcache/appcache.h"
13 #include "webkit/appcache/appcache_database.h" 13 #include "webkit/appcache/appcache_database.h"
14 #include "webkit/appcache/appcache_entry.h" 14 #include "webkit/appcache/appcache_entry.h"
15 #include "webkit/appcache/appcache_group.h" 15 #include "webkit/appcache/appcache_group.h"
16 #include "webkit/appcache/appcache_policy.h" 16 #include "webkit/appcache/appcache_policy.h"
17 #include "webkit/appcache/appcache_service.h" 17 #include "webkit/appcache/appcache_service.h"
18 #include "webkit/appcache/appcache_storage_impl.h" 18 #include "webkit/appcache/appcache_storage_impl.h"
19 #include "webkit/quota/quota_manager.h"
19 #include "webkit/tools/test_shell/simple_appcache_system.h" 20 #include "webkit/tools/test_shell/simple_appcache_system.h"
20 21
21 namespace appcache { 22 namespace appcache {
22 23
23 namespace { 24 namespace {
24 25
25 const base::Time kZeroTime; 26 const base::Time kZeroTime;
26 const GURL kManifestUrl("http://blah/manifest"); 27 const GURL kManifestUrl("http://blah/manifest");
27 const GURL kManifestUrl2("http://blah/manifest2"); 28 const GURL kManifestUrl2("http://blah/manifest2");
28 const GURL kManifestUrl3("http://blah/manifest3"); 29 const GURL kManifestUrl3("http://blah/manifest3");
29 const GURL kEntryUrl("http://blah/entry"); 30 const GURL kEntryUrl("http://blah/entry");
30 const GURL kEntryUrl2("http://blah/entry2"); 31 const GURL kEntryUrl2("http://blah/entry2");
31 const GURL kFallbackNamespace("http://blah/fallback_namespace/"); 32 const GURL kFallbackNamespace("http://blah/fallback_namespace/");
32 const GURL kFallbackNamespace2("http://blah/fallback_namespace/longer"); 33 const GURL kFallbackNamespace2("http://blah/fallback_namespace/longer");
33 const GURL kFallbackTestUrl("http://blah/fallback_namespace/longer/test"); 34 const GURL kFallbackTestUrl("http://blah/fallback_namespace/longer/test");
34 const GURL kOnlineNamespace("http://blah/online_namespace"); 35 const GURL kOnlineNamespace("http://blah/online_namespace");
35 const GURL kOnlineNamespaceWithinFallback( 36 const GURL kOnlineNamespaceWithinFallback(
36 "http://blah/fallback_namespace/online/"); 37 "http://blah/fallback_namespace/online/");
38 const GURL kOrigin(kManifestUrl.GetOrigin());
37 39
38 const int kManifestEntryIdOffset = 100; 40 const int kManifestEntryIdOffset = 100;
39 const int kFallbackEntryIdOffset = 1000; 41 const int kFallbackEntryIdOffset = 1000;
40 42
43 const GURL kDefaultEntryUrl("http://blah/makecacheandgroup_default_entry");
44 const int kDefaultEntrySize = 10;
45 const int kDefaultEntryIdOffset = 12345;
46
47 const int kMockQuota = 5000;
48
41 // For the duration of this test case, we hijack the AppCacheThread API 49 // For the duration of this test case, we hijack the AppCacheThread API
42 // calls and implement them in terms of the io and db threads created here. 50 // calls and implement them in terms of the io and db threads created here.
43 51
44 scoped_ptr<base::Thread> io_thread; 52 scoped_ptr<base::Thread> io_thread;
45 scoped_ptr<base::Thread> db_thread; 53 scoped_ptr<base::Thread> db_thread;
46 54
47 class TestThreadProvider : public SimpleAppCacheSystem::ThreadProvider { 55 class TestThreadProvider : public SimpleAppCacheSystem::ThreadProvider {
48 public: 56 public:
49 virtual bool PostTask( 57 virtual bool PostTask(
50 int id, 58 int id,
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 return can_create_return_value_; 177 return can_create_return_value_;
170 } 178 }
171 179
172 bool can_load_return_value_; 180 bool can_load_return_value_;
173 int can_create_return_value_; 181 int can_create_return_value_;
174 GURL requested_manifest_url_; 182 GURL requested_manifest_url_;
175 net::CompletionCallback* callback_; 183 net::CompletionCallback* callback_;
176 AppCacheStorageImplTest* test_; 184 AppCacheStorageImplTest* test_;
177 }; 185 };
178 186
187 class MockQuotaManager : public quota::QuotaManager {
188 public:
189 MockQuotaManager()
190 : QuotaManager(true /* is_incognito */, FilePath(),
191 io_thread->message_loop_proxy(),
192 db_thread->message_loop_proxy(),
193 NULL),
194 async_(false) {}
195
196 virtual void GetUsageAndQuota(
197 const GURL& origin, quota::StorageType type,
198 GetUsageAndQuotaCallback* callback) {
199 EXPECT_EQ(kOrigin, origin);
200 EXPECT_EQ(quota::kStorageTypeTemporary, type);
201 if (async_) {
202 MessageLoop::current()->PostTask(FROM_HERE,
203 NewRunnableMethod(this, &MockQuotaManager::CallCallbackAndDelete,
204 callback));
205 return;
206 }
207 CallCallbackAndDelete(callback);
208 }
209
210 void CallCallbackAndDelete(GetUsageAndQuotaCallback* callback) {
211 callback->Run(quota::kQuotaStatusOk, 0, kMockQuota);
212 delete callback;
213 }
214
215 bool async_;
216 };
217
218 class MockQuotaManagerProxy : public quota::QuotaManagerProxy {
219 public:
220 MockQuotaManagerProxy()
221 : QuotaManagerProxy(NULL, NULL),
222 notify_storage_accessed_count_(0),
223 notify_storage_modified_count_(0),
224 last_delta_(0),
225 mock_manager_(new MockQuotaManager) {
226 manager_ = mock_manager_;
227 }
228
229 virtual void NotifyStorageAccessed(quota::QuotaClient::ID client_id,
230 const GURL& origin,
231 quota::StorageType type) {
232 EXPECT_EQ(quota::QuotaClient::kAppcache, client_id);
233 EXPECT_EQ(quota::kStorageTypeTemporary, type);
234 ++notify_storage_accessed_count_;
235 last_origin_ = origin;
236 }
237
238 virtual void NotifyStorageModified(quota::QuotaClient::ID client_id,
239 const GURL& origin,
240 quota::StorageType type,
241 int64 delta) {
242 EXPECT_EQ(quota::QuotaClient::kAppcache, client_id);
243 EXPECT_EQ(quota::kStorageTypeTemporary, type);
244 ++notify_storage_modified_count_;
245 last_origin_ = origin;
246 last_delta_ = delta;
247 }
248
249 // Not needed for our tests.
250 virtual void RegisterClient(quota::QuotaClient* client) {}
251 virtual void NotifyOriginInUse(const GURL& origin) {}
252 virtual void NotifyOriginNoLongerInUse(const GURL& origin) {}
253
254 int notify_storage_accessed_count_;
255 int notify_storage_modified_count_;
256 GURL last_origin_;
257 int last_delta_;
258 scoped_refptr<MockQuotaManager> mock_manager_;
259 };
260
179 // Helper class run a test on our io_thread. The io_thread 261 // Helper class run a test on our io_thread. The io_thread
180 // is spun up once and reused for all tests. 262 // is spun up once and reused for all tests.
181 template <class Method> 263 template <class Method>
182 class WrapperTask : public Task { 264 class WrapperTask : public Task {
183 public: 265 public:
184 WrapperTask(AppCacheStorageImplTest* test, Method method) 266 WrapperTask(AppCacheStorageImplTest* test, Method method)
185 : test_(test), method_(method) { 267 : test_(test), method_(method) {
186 } 268 }
187 269
188 virtual void Run() { 270 virtual void Run() {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 test_finished_event_ .reset(new base::WaitableEvent(false, false)); 318 test_finished_event_ .reset(new base::WaitableEvent(false, false));
237 io_thread->message_loop()->PostTask( 319 io_thread->message_loop()->PostTask(
238 FROM_HERE, new WrapperTask<Method>(this, method)); 320 FROM_HERE, new WrapperTask<Method>(this, method));
239 test_finished_event_->Wait(); 321 test_finished_event_->Wait();
240 } 322 }
241 323
242 void SetUpTest() { 324 void SetUpTest() {
243 DCHECK(MessageLoop::current() == io_thread->message_loop()); 325 DCHECK(MessageLoop::current() == io_thread->message_loop());
244 service_.reset(new AppCacheService(NULL)); 326 service_.reset(new AppCacheService(NULL));
245 service_->Initialize(FilePath(), NULL); 327 service_->Initialize(FilePath(), NULL);
328 mock_quota_manager_proxy_ = new MockQuotaManagerProxy();
329 service_->quota_manager_proxy_ = mock_quota_manager_proxy_;
246 delegate_.reset(new MockStorageDelegate(this)); 330 delegate_.reset(new MockStorageDelegate(this));
247 } 331 }
248 332
249 void TearDownTest() { 333 void TearDownTest() {
250 DCHECK(MessageLoop::current() == io_thread->message_loop()); 334 DCHECK(MessageLoop::current() == io_thread->message_loop());
251 storage()->CancelDelegateCallbacks(delegate()); 335 storage()->CancelDelegateCallbacks(delegate());
252 group_ = NULL; 336 group_ = NULL;
253 cache_ = NULL; 337 cache_ = NULL;
254 cache2_ = NULL; 338 cache2_ = NULL;
339 mock_quota_manager_proxy_ = NULL;
255 delegate_.reset(); 340 delegate_.reset();
256 service_.reset(); 341 service_.reset();
257 FlushDbThreadTasks(); 342 FlushDbThreadTasks();
258 } 343 }
259 344
260 void TestFinished() { 345 void TestFinished() {
261 // We unwind the stack prior to finishing up to let stack 346 // We unwind the stack prior to finishing up to let stack
262 // based objects get deleted. 347 // based objects get deleted.
263 DCHECK(MessageLoop::current() == io_thread->message_loop()); 348 DCHECK(MessageLoop::current() == io_thread->message_loop());
264 MessageLoop::current()->PostTask(FROM_HERE, 349 MessageLoop::current()->PostTask(FROM_HERE,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 PushNextTask(NewRunnableMethod( 390 PushNextTask(NewRunnableMethod(
306 this, &AppCacheStorageImplTest::Verify_LoadCache_Miss)); 391 this, &AppCacheStorageImplTest::Verify_LoadCache_Miss));
307 392
308 storage()->LoadCache(111, delegate()); 393 storage()->LoadCache(111, delegate());
309 EXPECT_NE(111, delegate()->loaded_cache_id_); 394 EXPECT_NE(111, delegate()->loaded_cache_id_);
310 } 395 }
311 396
312 void Verify_LoadCache_Miss() { 397 void Verify_LoadCache_Miss() {
313 EXPECT_EQ(111, delegate()->loaded_cache_id_); 398 EXPECT_EQ(111, delegate()->loaded_cache_id_);
314 EXPECT_FALSE(delegate()->loaded_cache_); 399 EXPECT_FALSE(delegate()->loaded_cache_);
400 EXPECT_EQ(0, mock_quota_manager_proxy_->notify_storage_accessed_count_);
401 EXPECT_EQ(0, mock_quota_manager_proxy_->notify_storage_modified_count_);
315 TestFinished(); 402 TestFinished();
316 } 403 }
317 404
318 // LoadCache_NearHit ------------------------------------------------- 405 // LoadCache_NearHit -------------------------------------------------
319 406
320 void LoadCache_NearHit() { 407 void LoadCache_NearHit() {
321 // Attempt to load a cache that is currently in use 408 // Attempt to load a cache that is currently in use
322 // and does not require loading from storage. This 409 // and does not require loading from storage. This
323 // load should complete syncly. 410 // load should complete syncly.
324 411
325 // Setup some preconditions. Make an 'unstored' cache for 412 // Setup some preconditions. Make an 'unstored' cache for
326 // us to load. The ctor should put it in the working set. 413 // us to load. The ctor should put it in the working set.
327 int64 cache_id = storage()->NewCacheId(); 414 int64 cache_id = storage()->NewCacheId();
328 scoped_refptr<AppCache> cache(new AppCache(service(), cache_id)); 415 scoped_refptr<AppCache> cache(new AppCache(service(), cache_id));
329 416
330 // Conduct the test. 417 // Conduct the test.
331 storage()->LoadCache(cache_id, delegate()); 418 storage()->LoadCache(cache_id, delegate());
332 EXPECT_EQ(cache_id, delegate()->loaded_cache_id_); 419 EXPECT_EQ(cache_id, delegate()->loaded_cache_id_);
333 EXPECT_EQ(cache.get(), delegate()->loaded_cache_.get()); 420 EXPECT_EQ(cache.get(), delegate()->loaded_cache_.get());
421 EXPECT_EQ(0, mock_quota_manager_proxy_->notify_storage_accessed_count_);
422 EXPECT_EQ(0, mock_quota_manager_proxy_->notify_storage_modified_count_);
334 TestFinished(); 423 TestFinished();
335 } 424 }
336 425
337 // CreateGroup -------------------------------------------- 426 // CreateGroup --------------------------------------------
338 427
339 void CreateGroupInEmptyOrigin() { 428 void CreateGroupInEmptyOrigin() {
340 // Attempt to load a group that doesn't exist, one should 429 // Attempt to load a group that doesn't exist, one should
341 // be created for us, but not stored. 430 // be created for us, but not stored.
342 431
343 // Since the origin has no groups, the storage class will respond 432 // Since the origin has no groups, the storage class will respond
344 // syncly. 433 // syncly.
345 storage()->LoadOrCreateGroup(kManifestUrl, delegate()); 434 storage()->LoadOrCreateGroup(kManifestUrl, delegate());
346 Verify_CreateGroup(); 435 Verify_CreateGroup();
347 } 436 }
348 437
349 void CreateGroupInPopulatedOrigin() { 438 void CreateGroupInPopulatedOrigin() {
350 // Attempt to load a group that doesn't exist, one should 439 // Attempt to load a group that doesn't exist, one should
351 // be created for us, but not stored. 440 // be created for us, but not stored.
352 PushNextTask(NewRunnableMethod( 441 PushNextTask(NewRunnableMethod(
353 this, &AppCacheStorageImplTest::Verify_CreateGroup)); 442 this, &AppCacheStorageImplTest::Verify_CreateGroup));
354 443
355 // Since the origin has groups, storage class will have to 444 // Since the origin has groups, storage class will have to
356 // consult the database and completion will be async. 445 // consult the database and completion will be async.
357 storage()->origins_with_groups_.insert(kManifestUrl.GetOrigin()); 446 storage()->usage_map_[kOrigin] = kDefaultEntrySize;
358 447
359 storage()->LoadOrCreateGroup(kManifestUrl, delegate()); 448 storage()->LoadOrCreateGroup(kManifestUrl, delegate());
360 EXPECT_FALSE(delegate()->loaded_group_.get()); 449 EXPECT_FALSE(delegate()->loaded_group_.get());
361 } 450 }
362 451
363 void Verify_CreateGroup() { 452 void Verify_CreateGroup() {
364 EXPECT_EQ(kManifestUrl, delegate()->loaded_manifest_url_); 453 EXPECT_EQ(kManifestUrl, delegate()->loaded_manifest_url_);
365 EXPECT_TRUE(delegate()->loaded_group_.get()); 454 EXPECT_TRUE(delegate()->loaded_group_.get());
366 EXPECT_TRUE(delegate()->loaded_group_->HasOneRef()); 455 EXPECT_TRUE(delegate()->loaded_group_->HasOneRef());
367 EXPECT_FALSE(delegate()->loaded_group_->newest_complete_cache()); 456 EXPECT_FALSE(delegate()->loaded_group_->newest_complete_cache());
368 457
369 // Should not have been stored in the database. 458 // Should not have been stored in the database.
370 AppCacheDatabase::GroupRecord record; 459 AppCacheDatabase::GroupRecord record;
371 EXPECT_FALSE(database()->FindGroup( 460 EXPECT_FALSE(database()->FindGroup(
372 delegate()->loaded_group_->group_id(), &record)); 461 delegate()->loaded_group_->group_id(), &record));
373 462
463 EXPECT_EQ(0, mock_quota_manager_proxy_->notify_storage_accessed_count_);
464 EXPECT_EQ(0, mock_quota_manager_proxy_->notify_storage_modified_count_);
465
374 TestFinished(); 466 TestFinished();
375 } 467 }
376 468
377 // LoadGroupAndCache_FarHit -------------------------------------- 469 // LoadGroupAndCache_FarHit --------------------------------------
378 470
379 void LoadGroupAndCache_FarHit() { 471 void LoadGroupAndCache_FarHit() {
380 // Attempt to load a cache that is not currently in use 472 // Attempt to load a cache that is not currently in use
381 // and does require loading from disk. This 473 // and does require loading from disk. This
382 // load should complete asyncly. 474 // load should complete asyncly.
383 PushNextTask(NewRunnableMethod( 475 PushNextTask(NewRunnableMethod(
(...skipping 12 matching lines...) Expand all
396 void Verify_LoadCache_Far_Hit() { 488 void Verify_LoadCache_Far_Hit() {
397 EXPECT_TRUE(delegate()->loaded_cache_); 489 EXPECT_TRUE(delegate()->loaded_cache_);
398 EXPECT_TRUE(delegate()->loaded_cache_->HasOneRef()); 490 EXPECT_TRUE(delegate()->loaded_cache_->HasOneRef());
399 EXPECT_EQ(1, delegate()->loaded_cache_id_); 491 EXPECT_EQ(1, delegate()->loaded_cache_id_);
400 492
401 // The group should also have been loaded. 493 // The group should also have been loaded.
402 EXPECT_TRUE(delegate()->loaded_cache_->owning_group()); 494 EXPECT_TRUE(delegate()->loaded_cache_->owning_group());
403 EXPECT_TRUE(delegate()->loaded_cache_->owning_group()->HasOneRef()); 495 EXPECT_TRUE(delegate()->loaded_cache_->owning_group()->HasOneRef());
404 EXPECT_EQ(1, delegate()->loaded_cache_->owning_group()->group_id()); 496 EXPECT_EQ(1, delegate()->loaded_cache_->owning_group()->group_id());
405 497
498 EXPECT_EQ(1, mock_quota_manager_proxy_->notify_storage_accessed_count_);
499 EXPECT_EQ(0, mock_quota_manager_proxy_->notify_storage_modified_count_);
500
406 // Drop things from the working set. 501 // Drop things from the working set.
407 delegate()->loaded_cache_ = NULL; 502 delegate()->loaded_cache_ = NULL;
408 EXPECT_FALSE(delegate()->loaded_group_); 503 EXPECT_FALSE(delegate()->loaded_group_);
409 504
410 // Conduct the group load test, also complete asyncly. 505 // Conduct the group load test, also complete asyncly.
411 PushNextTask(NewRunnableMethod( 506 PushNextTask(NewRunnableMethod(
412 this, &AppCacheStorageImplTest::Verify_LoadGroup_Far_Hit)); 507 this, &AppCacheStorageImplTest::Verify_LoadGroup_Far_Hit));
413 508
414 storage()->LoadOrCreateGroup(kManifestUrl, delegate()); 509 storage()->LoadOrCreateGroup(kManifestUrl, delegate());
415 } 510 }
416 511
417 void Verify_LoadGroup_Far_Hit() { 512 void Verify_LoadGroup_Far_Hit() {
418 EXPECT_TRUE(delegate()->loaded_group_); 513 EXPECT_TRUE(delegate()->loaded_group_);
419 EXPECT_EQ(kManifestUrl, delegate()->loaded_manifest_url_); 514 EXPECT_EQ(kManifestUrl, delegate()->loaded_manifest_url_);
420 EXPECT_TRUE(delegate()->loaded_group_->newest_complete_cache()); 515 EXPECT_TRUE(delegate()->loaded_group_->newest_complete_cache());
421 delegate()->loaded_groups_newest_cache_ = NULL; 516 delegate()->loaded_groups_newest_cache_ = NULL;
422 EXPECT_TRUE(delegate()->loaded_group_->HasOneRef()); 517 EXPECT_TRUE(delegate()->loaded_group_->HasOneRef());
518 EXPECT_EQ(2, mock_quota_manager_proxy_->notify_storage_accessed_count_);
519 EXPECT_EQ(0, mock_quota_manager_proxy_->notify_storage_modified_count_);
423 TestFinished(); 520 TestFinished();
424 } 521 }
425 522
426 // StoreNewGroup -------------------------------------- 523 // StoreNewGroup --------------------------------------
427 524
428 void StoreNewGroup() { 525 void StoreNewGroup() {
429 // Store a group and its newest cache. Should complete asyncly. 526 // Store a group and its newest cache. Should complete asyncly.
430 PushNextTask(NewRunnableMethod( 527 PushNextTask(NewRunnableMethod(
431 this, &AppCacheStorageImplTest::Verify_StoreNewGroup)); 528 this, &AppCacheStorageImplTest::Verify_StoreNewGroup));
432 529
433 // Setup some preconditions. Create a group and newest cache that 530 // Setup some preconditions. Create a group and newest cache that
434 // appear to be "unstored". 531 // appear to be "unstored".
435 group_ = new AppCacheGroup( 532 group_ = new AppCacheGroup(
436 service(), kManifestUrl, storage()->NewGroupId()); 533 service(), kManifestUrl, storage()->NewGroupId());
437 cache_ = new AppCache(service(), storage()->NewCacheId()); 534 cache_ = new AppCache(service(), storage()->NewCacheId());
535 cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::EXPLICIT, 1,
536 kDefaultEntrySize));
438 // Hold a ref to the cache simulate the UpdateJob holding that ref, 537 // Hold a ref to the cache simulate the UpdateJob holding that ref,
439 // and hold a ref to the group to simulate the CacheHost holding that ref. 538 // and hold a ref to the group to simulate the CacheHost holding that ref.
440 539
540 // Have the quota manager retrun asyncly for this test.
541 mock_quota_manager_proxy_->mock_manager_->async_ = true;
542
441 // Conduct the store test. 543 // Conduct the store test.
442 storage()->StoreGroupAndNewestCache(group_, cache_, delegate()); 544 storage()->StoreGroupAndNewestCache(group_, cache_, delegate());
443 EXPECT_FALSE(delegate()->stored_group_success_); 545 EXPECT_FALSE(delegate()->stored_group_success_);
444 } 546 }
445 547
446 void Verify_StoreNewGroup() { 548 void Verify_StoreNewGroup() {
447 EXPECT_TRUE(delegate()->stored_group_success_); 549 EXPECT_TRUE(delegate()->stored_group_success_);
448 EXPECT_EQ(group_.get(), delegate()->stored_group_.get()); 550 EXPECT_EQ(group_.get(), delegate()->stored_group_.get());
449 EXPECT_EQ(cache_.get(), group_->newest_complete_cache()); 551 EXPECT_EQ(cache_.get(), group_->newest_complete_cache());
450 EXPECT_TRUE(cache_->is_complete()); 552 EXPECT_TRUE(cache_->is_complete());
451 553
452 // Should have been stored in the database. 554 // Should have been stored in the database.
453 AppCacheDatabase::GroupRecord group_record; 555 AppCacheDatabase::GroupRecord group_record;
454 AppCacheDatabase::CacheRecord cache_record; 556 AppCacheDatabase::CacheRecord cache_record;
455 EXPECT_TRUE(database()->FindGroup(group_->group_id(), &group_record)); 557 EXPECT_TRUE(database()->FindGroup(group_->group_id(), &group_record));
456 EXPECT_TRUE(database()->FindCache(cache_->cache_id(), &cache_record)); 558 EXPECT_TRUE(database()->FindCache(cache_->cache_id(), &cache_record));
559
560 // Verify quota bookkeeping
561 EXPECT_EQ(kDefaultEntrySize, storage()->usage_map_[kOrigin]);
562 EXPECT_EQ(1, mock_quota_manager_proxy_->notify_storage_modified_count_);
563 EXPECT_EQ(kOrigin, mock_quota_manager_proxy_->last_origin_);
564 EXPECT_EQ(kDefaultEntrySize, mock_quota_manager_proxy_->last_delta_);
565
457 TestFinished(); 566 TestFinished();
458 } 567 }
459 568
460 // StoreExistingGroup -------------------------------------- 569 // StoreExistingGroup --------------------------------------
461 570
462 void StoreExistingGroup() { 571 void StoreExistingGroup() {
463 // Store a group and its newest cache. Should complete asyncly. 572 // Store a group and its newest cache. Should complete asyncly.
464 PushNextTask(NewRunnableMethod( 573 PushNextTask(NewRunnableMethod(
465 this, &AppCacheStorageImplTest::Verify_StoreExistingGroup)); 574 this, &AppCacheStorageImplTest::Verify_StoreExistingGroup));
466 575
467 // Setup some preconditions. Create a group and old complete cache 576 // Setup some preconditions. Create a group and old complete cache
468 // that appear to be "stored" 577 // that appear to be "stored"
469 MakeCacheAndGroup(kManifestUrl, 1, 1, true); 578 MakeCacheAndGroup(kManifestUrl, 1, 1, true);
579 EXPECT_EQ(kDefaultEntrySize, storage()->usage_map_[kOrigin]);
470 580
471 // And a newest unstored complete cache. 581 // And a newest unstored complete cache.
472 cache2_ = new AppCache(service(), 2); 582 cache2_ = new AppCache(service(), 2);
583 cache2_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::MASTER, 1,
584 kDefaultEntrySize + 100));
473 585
474 // Conduct the test. 586 // Conduct the test.
475 storage()->StoreGroupAndNewestCache(group_, cache2_, delegate()); 587 storage()->StoreGroupAndNewestCache(group_, cache2_, delegate());
476 EXPECT_FALSE(delegate()->stored_group_success_); 588 EXPECT_FALSE(delegate()->stored_group_success_);
477 } 589 }
478 590
479 void Verify_StoreExistingGroup() { 591 void Verify_StoreExistingGroup() {
480 EXPECT_TRUE(delegate()->stored_group_success_); 592 EXPECT_TRUE(delegate()->stored_group_success_);
481 EXPECT_EQ(group_.get(), delegate()->stored_group_.get()); 593 EXPECT_EQ(group_.get(), delegate()->stored_group_.get());
482 EXPECT_EQ(cache2_.get(), group_->newest_complete_cache()); 594 EXPECT_EQ(cache2_.get(), group_->newest_complete_cache());
483 EXPECT_TRUE(cache2_->is_complete()); 595 EXPECT_TRUE(cache2_->is_complete());
484 596
485 // The new cache should have been stored in the database. 597 // The new cache should have been stored in the database.
486 AppCacheDatabase::GroupRecord group_record; 598 AppCacheDatabase::GroupRecord group_record;
487 AppCacheDatabase::CacheRecord cache_record; 599 AppCacheDatabase::CacheRecord cache_record;
488 EXPECT_TRUE(database()->FindGroup(1, &group_record)); 600 EXPECT_TRUE(database()->FindGroup(1, &group_record));
489 EXPECT_TRUE(database()->FindCache(2, &cache_record)); 601 EXPECT_TRUE(database()->FindCache(2, &cache_record));
490 602
491 // The old cache should have been deleted 603 // The old cache should have been deleted
492 EXPECT_FALSE(database()->FindCache(1, &cache_record)); 604 EXPECT_FALSE(database()->FindCache(1, &cache_record));
605
606 // Verify quota bookkeeping
607 EXPECT_EQ(kDefaultEntrySize + 100, storage()->usage_map_[kOrigin]);
608 EXPECT_EQ(1, mock_quota_manager_proxy_->notify_storage_modified_count_);
609 EXPECT_EQ(kOrigin, mock_quota_manager_proxy_->last_origin_);
610 EXPECT_EQ(100, mock_quota_manager_proxy_->last_delta_);
611
493 TestFinished(); 612 TestFinished();
494 } 613 }
495 614
496 // StoreExistingGroupExistingCache ------------------------------- 615 // StoreExistingGroupExistingCache -------------------------------
497 616
498 void StoreExistingGroupExistingCache() { 617 void StoreExistingGroupExistingCache() {
499 // Store a group with updates to its existing newest complete cache. 618 // Store a group with updates to its existing newest complete cache.
500 // Setup some preconditions. Create a group and a complete cache that 619 // Setup some preconditions. Create a group and a complete cache that
501 // appear to be "stored". 620 // appear to be "stored".
502 621
503 // Setup some preconditions. Create a group and old complete cache 622 // Setup some preconditions. Create a group and old complete cache
504 // that appear to be "stored" 623 // that appear to be "stored"
505 MakeCacheAndGroup(kManifestUrl, 1, 1, true); 624 MakeCacheAndGroup(kManifestUrl, 1, 1, true);
625 EXPECT_EQ(kDefaultEntrySize, storage()->usage_map_[kOrigin]);
506 626
507 // Change the cache. 627 // Change the cache.
508 base::Time now = base::Time::Now(); 628 base::Time now = base::Time::Now();
509 cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::MASTER, 1, 100)); 629 cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::MASTER, 1, 100));
510 cache_->set_update_time(now); 630 cache_->set_update_time(now);
511 631
512 PushNextTask(NewRunnableMethod( 632 PushNextTask(NewRunnableMethod(
513 this, &AppCacheStorageImplTest::Verify_StoreExistingGroupExistingCache, 633 this, &AppCacheStorageImplTest::Verify_StoreExistingGroupExistingCache,
514 now)); 634 now));
515 635
516 // Conduct the test. 636 // Conduct the test.
517 EXPECT_EQ(cache_, group_->newest_complete_cache()); 637 EXPECT_EQ(cache_, group_->newest_complete_cache());
518 storage()->StoreGroupAndNewestCache(group_, cache_, delegate()); 638 storage()->StoreGroupAndNewestCache(group_, cache_, delegate());
519 EXPECT_FALSE(delegate()->stored_group_success_); 639 EXPECT_FALSE(delegate()->stored_group_success_);
520 } 640 }
521 641
522 void Verify_StoreExistingGroupExistingCache( 642 void Verify_StoreExistingGroupExistingCache(
523 base::Time expected_update_time) { 643 base::Time expected_update_time) {
524 EXPECT_TRUE(delegate()->stored_group_success_); 644 EXPECT_TRUE(delegate()->stored_group_success_);
525 EXPECT_EQ(cache_, group_->newest_complete_cache()); 645 EXPECT_EQ(cache_, group_->newest_complete_cache());
526 646
527 AppCacheDatabase::CacheRecord cache_record; 647 AppCacheDatabase::CacheRecord cache_record;
528 EXPECT_TRUE(database()->FindCache(1, &cache_record)); 648 EXPECT_TRUE(database()->FindCache(1, &cache_record));
529 EXPECT_EQ(1, cache_record.cache_id); 649 EXPECT_EQ(1, cache_record.cache_id);
530 EXPECT_EQ(1, cache_record.group_id); 650 EXPECT_EQ(1, cache_record.group_id);
531 EXPECT_FALSE(cache_record.online_wildcard); 651 EXPECT_FALSE(cache_record.online_wildcard);
532 EXPECT_TRUE(expected_update_time == cache_record.update_time); 652 EXPECT_TRUE(expected_update_time == cache_record.update_time);
533 EXPECT_EQ(100, cache_record.cache_size); 653 EXPECT_EQ(100 + kDefaultEntrySize, cache_record.cache_size);
534 654
535 std::vector<AppCacheDatabase::EntryRecord> entry_records; 655 std::vector<AppCacheDatabase::EntryRecord> entry_records;
536 EXPECT_TRUE(database()->FindEntriesForCache(1, &entry_records)); 656 EXPECT_TRUE(database()->FindEntriesForCache(1, &entry_records));
537 EXPECT_EQ(1U, entry_records.size()); 657 EXPECT_EQ(2U, entry_records.size());
658 if (entry_records[0].url == kDefaultEntryUrl)
659 entry_records.erase(entry_records.begin());
538 EXPECT_EQ(1 , entry_records[0].cache_id); 660 EXPECT_EQ(1 , entry_records[0].cache_id);
539 EXPECT_EQ(kEntryUrl, entry_records[0].url); 661 EXPECT_EQ(kEntryUrl, entry_records[0].url);
540 EXPECT_EQ(AppCacheEntry::MASTER, entry_records[0].flags); 662 EXPECT_EQ(AppCacheEntry::MASTER, entry_records[0].flags);
541 EXPECT_EQ(1, entry_records[0].response_id); 663 EXPECT_EQ(1, entry_records[0].response_id);
542 EXPECT_EQ(100, entry_records[0].response_size); 664 EXPECT_EQ(100, entry_records[0].response_size);
543 665
666 // Verify quota bookkeeping
667 EXPECT_EQ(100 + kDefaultEntrySize, storage()->usage_map_[kOrigin]);
668 EXPECT_EQ(1, mock_quota_manager_proxy_->notify_storage_modified_count_);
669 EXPECT_EQ(kOrigin, mock_quota_manager_proxy_->last_origin_);
670 EXPECT_EQ(100, mock_quota_manager_proxy_->last_delta_);
671
544 TestFinished(); 672 TestFinished();
545 } 673 }
546 674
547 // FailStoreGroup -------------------------------------- 675 // FailStoreGroup --------------------------------------
548 676
549 void FailStoreGroup() { 677 void FailStoreGroup() {
550 // Store a group and its newest cache. Should complete asyncly. 678 // Store a group and its newest cache. Should complete asyncly.
551 PushNextTask(NewRunnableMethod( 679 PushNextTask(NewRunnableMethod(
552 this, &AppCacheStorageImplTest::Verify_FailStoreGroup)); 680 this, &AppCacheStorageImplTest::Verify_FailStoreGroup));
553 681
(...skipping 16 matching lines...) Expand all
570 void Verify_FailStoreGroup() { 698 void Verify_FailStoreGroup() {
571 EXPECT_FALSE(delegate()->stored_group_success_); 699 EXPECT_FALSE(delegate()->stored_group_success_);
572 EXPECT_TRUE(delegate()->would_exceed_quota_); 700 EXPECT_TRUE(delegate()->would_exceed_quota_);
573 701
574 // Should not have been stored in the database. 702 // Should not have been stored in the database.
575 AppCacheDatabase::GroupRecord group_record; 703 AppCacheDatabase::GroupRecord group_record;
576 AppCacheDatabase::CacheRecord cache_record; 704 AppCacheDatabase::CacheRecord cache_record;
577 EXPECT_FALSE(database()->FindGroup(group_->group_id(), &group_record)); 705 EXPECT_FALSE(database()->FindGroup(group_->group_id(), &group_record));
578 EXPECT_FALSE(database()->FindCache(cache_->cache_id(), &cache_record)); 706 EXPECT_FALSE(database()->FindCache(cache_->cache_id(), &cache_record));
579 707
708 EXPECT_EQ(0, mock_quota_manager_proxy_->notify_storage_accessed_count_);
709 EXPECT_EQ(0, mock_quota_manager_proxy_->notify_storage_modified_count_);
710
580 TestFinished(); 711 TestFinished();
581 } 712 }
582 713
583 // MakeGroupObsolete ------------------------------- 714 // MakeGroupObsolete -------------------------------
584 715
585 void MakeGroupObsolete() { 716 void MakeGroupObsolete() {
586 // Make a group obsolete, should complete asyncly. 717 // Make a group obsolete, should complete asyncly.
587 PushNextTask(NewRunnableMethod( 718 PushNextTask(NewRunnableMethod(
588 this, &AppCacheStorageImplTest::Verify_MakeGroupObsolete)); 719 this, &AppCacheStorageImplTest::Verify_MakeGroupObsolete));
589 720
590 // Setup some preconditions. Create a group and newest cache that 721 // Setup some preconditions. Create a group and newest cache that
591 // appears to be "stored" and "currently in use". 722 // appears to be "stored" and "currently in use".
592 MakeCacheAndGroup(kManifestUrl, 1, 1, true); 723 MakeCacheAndGroup(kManifestUrl, 1, 1, true);
593 EXPECT_FALSE(storage()->origins_with_groups_.empty()); 724 EXPECT_EQ(kDefaultEntrySize, storage()->usage_map_[kOrigin]);
594 725
595 // Also insert some related records. 726 // Also insert some related records.
596 AppCacheDatabase::EntryRecord entry_record; 727 AppCacheDatabase::EntryRecord entry_record;
597 entry_record.cache_id = 1; 728 entry_record.cache_id = 1;
598 entry_record.flags = AppCacheEntry::FALLBACK; 729 entry_record.flags = AppCacheEntry::FALLBACK;
599 entry_record.response_id = 1; 730 entry_record.response_id = 1;
600 entry_record.url = kEntryUrl; 731 entry_record.url = kEntryUrl;
601 EXPECT_TRUE(database()->InsertEntry(&entry_record)); 732 EXPECT_TRUE(database()->InsertEntry(&entry_record));
602 733
603 AppCacheDatabase::FallbackNameSpaceRecord fallback_namespace_record; 734 AppCacheDatabase::FallbackNameSpaceRecord fallback_namespace_record;
(...skipping 11 matching lines...) Expand all
615 746
616 // Conduct the test. 747 // Conduct the test.
617 storage()->MakeGroupObsolete(group_, delegate()); 748 storage()->MakeGroupObsolete(group_, delegate());
618 EXPECT_FALSE(group_->is_obsolete()); 749 EXPECT_FALSE(group_->is_obsolete());
619 } 750 }
620 751
621 void Verify_MakeGroupObsolete() { 752 void Verify_MakeGroupObsolete() {
622 EXPECT_TRUE(delegate()->obsoleted_success_); 753 EXPECT_TRUE(delegate()->obsoleted_success_);
623 EXPECT_EQ(group_.get(), delegate()->obsoleted_group_.get()); 754 EXPECT_EQ(group_.get(), delegate()->obsoleted_group_.get());
624 EXPECT_TRUE(group_->is_obsolete()); 755 EXPECT_TRUE(group_->is_obsolete());
625 EXPECT_TRUE(storage()->origins_with_groups_.empty()); 756 EXPECT_TRUE(storage()->usage_map_.empty());
626 757
627 // The cache and group have been deleted from the database. 758 // The cache and group have been deleted from the database.
628 AppCacheDatabase::GroupRecord group_record; 759 AppCacheDatabase::GroupRecord group_record;
629 AppCacheDatabase::CacheRecord cache_record; 760 AppCacheDatabase::CacheRecord cache_record;
630 EXPECT_FALSE(database()->FindGroup(1, &group_record)); 761 EXPECT_FALSE(database()->FindGroup(1, &group_record));
631 EXPECT_FALSE(database()->FindCache(1, &cache_record)); 762 EXPECT_FALSE(database()->FindCache(1, &cache_record));
632 763
633 // The related records should have been deleted too. 764 // The related records should have been deleted too.
634 std::vector<AppCacheDatabase::EntryRecord> entry_records; 765 std::vector<AppCacheDatabase::EntryRecord> entry_records;
635 database()->FindEntriesForCache(1, &entry_records); 766 database()->FindEntriesForCache(1, &entry_records);
636 EXPECT_TRUE(entry_records.empty()); 767 EXPECT_TRUE(entry_records.empty());
637 std::vector<AppCacheDatabase::FallbackNameSpaceRecord> fallback_records; 768 std::vector<AppCacheDatabase::FallbackNameSpaceRecord> fallback_records;
638 database()->FindFallbackNameSpacesForCache(1, &fallback_records); 769 database()->FindFallbackNameSpacesForCache(1, &fallback_records);
639 EXPECT_TRUE(fallback_records.empty()); 770 EXPECT_TRUE(fallback_records.empty());
640 std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelist_records; 771 std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelist_records;
641 database()->FindOnlineWhiteListForCache(1, &whitelist_records); 772 database()->FindOnlineWhiteListForCache(1, &whitelist_records);
642 EXPECT_TRUE(whitelist_records.empty()); 773 EXPECT_TRUE(whitelist_records.empty());
643 774
775 // Verify quota bookkeeping
776 EXPECT_TRUE(storage()->usage_map_.empty());
777 EXPECT_EQ(1, mock_quota_manager_proxy_->notify_storage_modified_count_);
778 EXPECT_EQ(kOrigin, mock_quota_manager_proxy_->last_origin_);
779 EXPECT_EQ(-kDefaultEntrySize, mock_quota_manager_proxy_->last_delta_);
780
644 TestFinished(); 781 TestFinished();
645 } 782 }
646 783
647 // MarkEntryAsForeign ------------------------------- 784 // MarkEntryAsForeign -------------------------------
648 785
649 void MarkEntryAsForeign() { 786 void MarkEntryAsForeign() {
650 // Setup some preconditions. Create a cache with an entry 787 // Setup some preconditions. Create a cache with an entry
651 // in storage and in the working set. 788 // in storage and in the working set.
652 MakeCacheAndGroup(kManifestUrl, 1, 1, true); 789 MakeCacheAndGroup(kManifestUrl, 1, 1, true);
653 cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::EXPLICIT)); 790 cache_->AddEntry(kEntryUrl, AppCacheEntry(AppCacheEntry::EXPLICIT));
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 cache_->fallback_namespaces_.push_back( 966 cache_->fallback_namespaces_.push_back(
830 FallbackNamespace(kFallbackNamespace2, kEntryUrl2)); 967 FallbackNamespace(kFallbackNamespace2, kEntryUrl2));
831 cache_->fallback_namespaces_.push_back( 968 cache_->fallback_namespaces_.push_back(
832 FallbackNamespace(kFallbackNamespace, kEntryUrl)); 969 FallbackNamespace(kFallbackNamespace, kEntryUrl));
833 AppCacheDatabase::CacheRecord cache_record; 970 AppCacheDatabase::CacheRecord cache_record;
834 std::vector<AppCacheDatabase::EntryRecord> entries; 971 std::vector<AppCacheDatabase::EntryRecord> entries;
835 std::vector<AppCacheDatabase::FallbackNameSpaceRecord> fallbacks; 972 std::vector<AppCacheDatabase::FallbackNameSpaceRecord> fallbacks;
836 std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelists; 973 std::vector<AppCacheDatabase::OnlineWhiteListRecord> whitelists;
837 cache_->ToDatabaseRecords(group_, 974 cache_->ToDatabaseRecords(group_,
838 &cache_record, &entries, &fallbacks, &whitelists); 975 &cache_record, &entries, &fallbacks, &whitelists);
839 EXPECT_TRUE(database()->InsertEntryRecords(entries)); 976
977 std::vector<AppCacheDatabase::EntryRecord>::const_iterator iter =
978 entries.begin();
979 while (iter != entries.end()) {
980 // MakeCacheAndGroup has inserted the default entry record already
981 if (iter->url != kDefaultEntryUrl)
982 EXPECT_TRUE(database()->InsertEntry(&(*iter)));
983 ++iter;
984 }
985
840 EXPECT_TRUE(database()->InsertFallbackNameSpaceRecords(fallbacks)); 986 EXPECT_TRUE(database()->InsertFallbackNameSpaceRecords(fallbacks));
841 EXPECT_TRUE(database()->InsertOnlineWhiteListRecords(whitelists)); 987 EXPECT_TRUE(database()->InsertOnlineWhiteListRecords(whitelists));
842 if (drop_from_working_set) { 988 if (drop_from_working_set) {
843 EXPECT_TRUE(cache_->HasOneRef()); 989 EXPECT_TRUE(cache_->HasOneRef());
844 cache_ = NULL; 990 cache_ = NULL;
845 EXPECT_TRUE(group_->HasOneRef()); 991 EXPECT_TRUE(group_->HasOneRef());
846 group_ = NULL; 992 group_ = NULL;
847 } 993 }
848 994
849 // Conduct the test. The test url is in both fallback namespace urls, 995 // Conduct the test. The test url is in both fallback namespace urls,
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
1118 return storage()->database_; 1264 return storage()->database_;
1119 } 1265 }
1120 1266
1121 MockStorageDelegate* delegate() { 1267 MockStorageDelegate* delegate() {
1122 return delegate_.get(); 1268 return delegate_.get();
1123 } 1269 }
1124 1270
1125 void MakeCacheAndGroup( 1271 void MakeCacheAndGroup(
1126 const GURL& manifest_url, int64 group_id, int64 cache_id, 1272 const GURL& manifest_url, int64 group_id, int64 cache_id,
1127 bool add_to_database) { 1273 bool add_to_database) {
1274 AppCacheEntry default_entry(
1275 AppCacheEntry::EXPLICIT, cache_id + kDefaultEntryIdOffset,
1276 kDefaultEntrySize);
1128 group_ = new AppCacheGroup(service(), manifest_url, group_id); 1277 group_ = new AppCacheGroup(service(), manifest_url, group_id);
1129 cache_ = new AppCache(service(), cache_id); 1278 cache_ = new AppCache(service(), cache_id);
1279 cache_->AddEntry(kDefaultEntryUrl, default_entry);
1130 cache_->set_complete(true); 1280 cache_->set_complete(true);
1131 group_->AddCache(cache_); 1281 group_->AddCache(cache_);
1132 if (add_to_database) { 1282 if (add_to_database) {
1133 AppCacheDatabase::GroupRecord group_record; 1283 AppCacheDatabase::GroupRecord group_record;
1134 group_record.group_id = group_id; 1284 group_record.group_id = group_id;
1135 group_record.manifest_url = manifest_url; 1285 group_record.manifest_url = manifest_url;
1136 group_record.origin = manifest_url.GetOrigin(); 1286 group_record.origin = manifest_url.GetOrigin();
1137 EXPECT_TRUE(database()->InsertGroup(&group_record)); 1287 EXPECT_TRUE(database()->InsertGroup(&group_record));
1138 AppCacheDatabase::CacheRecord cache_record; 1288 AppCacheDatabase::CacheRecord cache_record;
1139 cache_record.cache_id = cache_id; 1289 cache_record.cache_id = cache_id;
1140 cache_record.group_id = group_id; 1290 cache_record.group_id = group_id;
1141 cache_record.online_wildcard = false; 1291 cache_record.online_wildcard = false;
1142 cache_record.update_time = kZeroTime; 1292 cache_record.update_time = kZeroTime;
1293 cache_record.cache_size = kDefaultEntrySize;
1143 EXPECT_TRUE(database()->InsertCache(&cache_record)); 1294 EXPECT_TRUE(database()->InsertCache(&cache_record));
1144 storage()->origins_with_groups_.insert(manifest_url.GetOrigin()); 1295 AppCacheDatabase::EntryRecord entry_record;
1296 entry_record.cache_id = cache_id;
1297 entry_record.url = kDefaultEntryUrl;
1298 entry_record.flags = default_entry.types();
1299 entry_record.response_id = default_entry.response_id();
1300 entry_record.response_size = default_entry.response_size();
1301 EXPECT_TRUE(database()->InsertEntry(&entry_record));
1302
1303 storage()->usage_map_[manifest_url.GetOrigin()] =
1304 default_entry.response_size();
1145 } 1305 }
1146 } 1306 }
1147 1307
1148 // Data members -------------------------------------------------- 1308 // Data members --------------------------------------------------
1149 1309
1150 scoped_ptr<base::WaitableEvent> test_finished_event_; 1310 scoped_ptr<base::WaitableEvent> test_finished_event_;
1151 std::stack<Task*> task_stack_; 1311 std::stack<Task*> task_stack_;
1152 MockAppCachePolicy policy_; 1312 MockAppCachePolicy policy_;
1153 scoped_ptr<AppCacheService> service_; 1313 scoped_ptr<AppCacheService> service_;
1154 scoped_ptr<MockStorageDelegate> delegate_; 1314 scoped_ptr<MockStorageDelegate> delegate_;
1315 scoped_refptr<MockQuotaManagerProxy> mock_quota_manager_proxy_;
1155 scoped_refptr<AppCacheGroup> group_; 1316 scoped_refptr<AppCacheGroup> group_;
1156 scoped_refptr<AppCache> cache_; 1317 scoped_refptr<AppCache> cache_;
1157 scoped_refptr<AppCache> cache2_; 1318 scoped_refptr<AppCache> cache2_;
1158 }; 1319 };
1159 1320
1160 1321
1161 TEST_F(AppCacheStorageImplTest, LoadCache_Miss) { 1322 TEST_F(AppCacheStorageImplTest, LoadCache_Miss) {
1162 RunTestOnIOThread(&AppCacheStorageImplTest::LoadCache_Miss); 1323 RunTestOnIOThread(&AppCacheStorageImplTest::LoadCache_Miss);
1163 } 1324 }
1164 1325
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1251 &AppCacheStorageImplTest::FindMainResponseExclusionsInWorkingSet); 1412 &AppCacheStorageImplTest::FindMainResponseExclusionsInWorkingSet);
1252 } 1413 }
1253 1414
1254 // That's all folks! 1415 // That's all folks!
1255 1416
1256 } // namespace appcache 1417 } // namespace appcache
1257 1418
1258 // AppCacheStorageImplTest is expected to always live longer than the 1419 // AppCacheStorageImplTest is expected to always live longer than the
1259 // runnable methods. This lets us call NewRunnableMethod on its instances. 1420 // runnable methods. This lets us call NewRunnableMethod on its instances.
1260 DISABLE_RUNNABLE_METHOD_REFCOUNT(appcache::AppCacheStorageImplTest); 1421 DISABLE_RUNNABLE_METHOD_REFCOUNT(appcache::AppCacheStorageImplTest);
OLDNEW
« no previous file with comments | « webkit/appcache/appcache_storage_impl.cc ('k') | webkit/appcache/appcache_storage_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698