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

Side by Side Diff: content/public/test/mock_storage_client.cc

Issue 2368913003: Populate storage_unittests target. (Closed)
Patch Set: Removed unnecessary include from storage/browser/blob/blob_storage_context_unittest.cc. Created 4 years, 2 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
OLDNEW
(Empty)
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/public/test/mock_storage_client.h"
6
7 #include <memory>
8
9 #include "base/bind.h"
10 #include "base/location.h"
11 #include "base/memory/singleton.h"
12 #include "base/single_thread_task_runner.h"
13 #include "base/stl_util.h"
14 #include "base/threading/thread_task_runner_handle.h"
15 #include "net/base/url_util.h"
16 #include "storage/browser/quota/quota_manager_proxy.h"
17
18 using storage::kQuotaErrorInvalidModification;
19 using storage::kQuotaStatusOk;
20
21 namespace content {
22
23 using std::make_pair;
24
25 MockStorageClient::MockStorageClient(
26 QuotaManagerProxy* quota_manager_proxy,
27 const MockOriginData* mock_data, QuotaClient::ID id, size_t mock_data_size)
28 : quota_manager_proxy_(quota_manager_proxy),
29 id_(id),
30 mock_time_counter_(0),
31 weak_factory_(this) {
32 Populate(mock_data, mock_data_size);
33 }
34
35 void MockStorageClient::Populate(
36 const MockOriginData* mock_data,
37 size_t mock_data_size) {
38 for (size_t i = 0; i < mock_data_size; ++i) {
39 origin_data_[make_pair(GURL(mock_data[i].origin), mock_data[i].type)] =
40 mock_data[i].usage;
41 }
42 }
43
44 MockStorageClient::~MockStorageClient() {}
45
46 void MockStorageClient::AddOriginAndNotify(const GURL& origin_url,
47 StorageType type,
48 int64_t size) {
49 DCHECK(origin_data_.find(make_pair(origin_url, type)) == origin_data_.end());
50 DCHECK_GE(size, 0);
51 origin_data_[make_pair(origin_url, type)] = size;
52 quota_manager_proxy_->quota_manager()->NotifyStorageModifiedInternal(
53 id(), origin_url, type, size, IncrementMockTime());
54 }
55
56 void MockStorageClient::ModifyOriginAndNotify(const GURL& origin_url,
57 StorageType type,
58 int64_t delta) {
59 OriginDataMap::iterator find = origin_data_.find(make_pair(origin_url, type));
60 DCHECK(find != origin_data_.end());
61 find->second += delta;
62 DCHECK_GE(find->second, 0);
63
64 // TODO(tzik): Check quota to prevent usage exceed
65 quota_manager_proxy_->quota_manager()->NotifyStorageModifiedInternal(
66 id(), origin_url, type, delta, IncrementMockTime());
67 }
68
69 void MockStorageClient::TouchAllOriginsAndNotify() {
70 for (OriginDataMap::const_iterator itr = origin_data_.begin();
71 itr != origin_data_.end();
72 ++itr) {
73 quota_manager_proxy_->quota_manager()->NotifyStorageModifiedInternal(
74 id(), itr->first.first, itr->first.second, 0, IncrementMockTime());
75 }
76 }
77
78 void MockStorageClient::AddOriginToErrorSet(
79 const GURL& origin_url, StorageType type) {
80 error_origins_.insert(make_pair(origin_url, type));
81 }
82
83 base::Time MockStorageClient::IncrementMockTime() {
84 ++mock_time_counter_;
85 return base::Time::FromDoubleT(mock_time_counter_ * 10.0);
86 }
87
88 QuotaClient::ID MockStorageClient::id() const {
89 return id_;
90 }
91
92 void MockStorageClient::OnQuotaManagerDestroyed() {
93 delete this;
94 }
95
96 void MockStorageClient::GetOriginUsage(const GURL& origin_url,
97 StorageType type,
98 const GetUsageCallback& callback) {
99 base::ThreadTaskRunnerHandle::Get()->PostTask(
100 FROM_HERE,
101 base::Bind(&MockStorageClient::RunGetOriginUsage,
102 weak_factory_.GetWeakPtr(), origin_url, type, callback));
103 }
104
105 void MockStorageClient::GetOriginsForType(
106 StorageType type, const GetOriginsCallback& callback) {
107 base::ThreadTaskRunnerHandle::Get()->PostTask(
108 FROM_HERE, base::Bind(&MockStorageClient::RunGetOriginsForType,
109 weak_factory_.GetWeakPtr(), type, callback));
110 }
111
112 void MockStorageClient::GetOriginsForHost(
113 StorageType type, const std::string& host,
114 const GetOriginsCallback& callback) {
115 base::ThreadTaskRunnerHandle::Get()->PostTask(
116 FROM_HERE, base::Bind(&MockStorageClient::RunGetOriginsForHost,
117 weak_factory_.GetWeakPtr(), type, host, callback));
118 }
119
120 void MockStorageClient::DeleteOriginData(
121 const GURL& origin, StorageType type,
122 const DeletionCallback& callback) {
123 base::ThreadTaskRunnerHandle::Get()->PostTask(
124 FROM_HERE,
125 base::Bind(&MockStorageClient::RunDeleteOriginData,
126 weak_factory_.GetWeakPtr(), origin, type, callback));
127 }
128
129 bool MockStorageClient::DoesSupport(storage::StorageType type) const {
130 return true;
131 }
132
133 void MockStorageClient::RunGetOriginUsage(
134 const GURL& origin_url, StorageType type,
135 const GetUsageCallback& callback) {
136 OriginDataMap::iterator find = origin_data_.find(make_pair(origin_url, type));
137 if (find == origin_data_.end()) {
138 callback.Run(0);
139 } else {
140 callback.Run(find->second);
141 }
142 }
143
144 void MockStorageClient::RunGetOriginsForType(
145 StorageType type, const GetOriginsCallback& callback) {
146 std::set<GURL> origins;
147 for (OriginDataMap::iterator iter = origin_data_.begin();
148 iter != origin_data_.end(); ++iter) {
149 if (type == iter->first.second)
150 origins.insert(iter->first.first);
151 }
152 callback.Run(origins);
153 }
154
155 void MockStorageClient::RunGetOriginsForHost(
156 StorageType type, const std::string& host,
157 const GetOriginsCallback& callback) {
158 std::set<GURL> origins;
159 for (OriginDataMap::iterator iter = origin_data_.begin();
160 iter != origin_data_.end(); ++iter) {
161 std::string host_or_spec = net::GetHostOrSpecFromURL(iter->first.first);
162 if (type == iter->first.second && host == host_or_spec)
163 origins.insert(iter->first.first);
164 }
165 callback.Run(origins);
166 }
167
168 void MockStorageClient::RunDeleteOriginData(
169 const GURL& origin_url,
170 StorageType type,
171 const DeletionCallback& callback) {
172 ErrorOriginSet::iterator itr_error =
173 error_origins_.find(make_pair(origin_url, type));
174 if (itr_error != error_origins_.end()) {
175 callback.Run(kQuotaErrorInvalidModification);
176 return;
177 }
178
179 OriginDataMap::iterator itr =
180 origin_data_.find(make_pair(origin_url, type));
181 if (itr != origin_data_.end()) {
182 int64_t delta = itr->second;
183 quota_manager_proxy_->
184 NotifyStorageModified(id(), origin_url, type, -delta);
185 origin_data_.erase(itr);
186 }
187
188 callback.Run(kQuotaStatusOk);
189 }
190
191 } // namespace content
OLDNEW
« no previous file with comments | « content/public/test/mock_storage_client.h ('k') | content/public/test/sandbox_file_system_test_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698