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 3 // found in the LICENSE file. 4 5 #include "webkit/browser/appcache/appcache_test_helper.h" 6 7 #include "base/bind.h" 8 #include "base/bind_helpers.h" 9 #include "base/message_loop/message_loop.h" 10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "webkit/browser/appcache/appcache.h" 12 #include "webkit/browser/appcache/appcache_entry.h" 13 #include "webkit/browser/appcache/appcache_group.h" 14 #include "webkit/browser/appcache/appcache_service.h" 15 16 namespace appcache { 17 18 AppCacheTestHelper::AppCacheTestHelper() 19 : group_id_(0), 20 appcache_id_(0), 21 response_id_(0), 22 origins_(NULL) {} 23 24 AppCacheTestHelper::~AppCacheTestHelper() {} 25 26 void AppCacheTestHelper::OnGroupAndNewestCacheStored( 27 AppCacheGroup* /*group*/, 28 AppCache* /*newest_cache*/, 29 bool success, 30 bool /*would_exceed_quota*/) { 31 ASSERT_TRUE(success); 32 base::MessageLoop::current()->Quit(); 33 } 34 35 void AppCacheTestHelper::AddGroupAndCache(AppCacheService* appcache_service, 36 const GURL& manifest_url) { 37 AppCacheGroup* appcache_group = 38 new AppCacheGroup(appcache_service->storage(), 39 manifest_url, 40 ++group_id_); 41 AppCache* appcache = new AppCache(appcache_service->storage(), 42 ++appcache_id_); 43 AppCacheEntry entry(AppCacheEntry::MANIFEST, 44 ++response_id_); 45 appcache->AddEntry(manifest_url, entry); 46 appcache->set_complete(true); 47 appcache_group->AddCache(appcache); 48 appcache_service->storage()->StoreGroupAndNewestCache(appcache_group, 49 appcache, 50 this); 51 // OnGroupAndNewestCacheStored will quit the message loop. 52 base::MessageLoop::current()->Run(); 53 } 54 55 void AppCacheTestHelper::GetOriginsWithCaches(AppCacheService* appcache_service, 56 std::set<GURL>* origins) { 57 appcache_info_ = new AppCacheInfoCollection; 58 origins_ = origins; 59 appcache_service->GetAllAppCacheInfo( 60 appcache_info_.get(), 61 base::Bind(&AppCacheTestHelper::OnGotAppCacheInfo, 62 base::Unretained(this))); 63 64 // OnGotAppCacheInfo will quit the message loop. 65 base::MessageLoop::current()->Run(); 66 } 67 68 void AppCacheTestHelper::OnGotAppCacheInfo(int rv) { 69 typedef std::map<GURL, AppCacheInfoVector> InfoByOrigin; 70 71 origins_->clear(); 72 for (InfoByOrigin::const_iterator origin = 73 appcache_info_->infos_by_origin.begin(); 74 origin != appcache_info_->infos_by_origin.end(); ++origin) { 75 origins_->insert(origin->first); 76 } 77 base::MessageLoop::current()->Quit(); 78 } 79 80 } // namespace appcache 81