• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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 "content/test/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 "content/browser/appcache/appcache.h"
11 #include "content/browser/appcache/appcache_entry.h"
12 #include "content/browser/appcache/appcache_group.h"
13 #include "content/browser/appcache/appcache_service_impl.h"
14 #include "testing/gtest/include/gtest/gtest.h"
15 
16 namespace content {
17 
AppCacheTestHelper()18 AppCacheTestHelper::AppCacheTestHelper()
19     : group_id_(0),
20       appcache_id_(0),
21       response_id_(0),
22       origins_(NULL) {}
23 
~AppCacheTestHelper()24 AppCacheTestHelper::~AppCacheTestHelper() {}
25 
OnGroupAndNewestCacheStored(AppCacheGroup *,AppCache *,bool success,bool)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 
AddGroupAndCache(AppCacheServiceImpl * appcache_service,const GURL & manifest_url)35 void AppCacheTestHelper::AddGroupAndCache(AppCacheServiceImpl*
36     appcache_service, 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(
42       appcache_service->storage(), ++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 
GetOriginsWithCaches(AppCacheServiceImpl * appcache_service,std::set<GURL> * origins)55 void AppCacheTestHelper::GetOriginsWithCaches(AppCacheServiceImpl*
56     appcache_service, 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 
OnGotAppCacheInfo(int rv)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 content
81