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

Side by Side Diff: webkit/quota/mock_storage_client.cc

Issue 8070001: Use base::Callback in Quota related code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: choke lint Created 9 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 | Annotate | Revision Log
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 "webkit/quota/mock_storage_client.h" 5 #include "webkit/quota/mock_storage_client.h"
6 6
7 #include "base/atomic_sequence_num.h" 7 #include "base/atomic_sequence_num.h"
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/memory/singleton.h" 10 #include "base/memory/singleton.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 : quota_manager_proxy_(quota_manager_proxy), 48 : quota_manager_proxy_(quota_manager_proxy),
49 id_(MockStorageClientIDSequencer::GetInstance()->NextMockID()), 49 id_(MockStorageClientIDSequencer::GetInstance()->NextMockID()),
50 mock_time_counter_(0), 50 mock_time_counter_(0),
51 runnable_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { 51 runnable_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
52 for (size_t i = 0; i < mock_data_size; ++i) { 52 for (size_t i = 0; i < mock_data_size; ++i) {
53 origin_data_[make_pair(GURL(mock_data[i].origin), mock_data[i].type)] = 53 origin_data_[make_pair(GURL(mock_data[i].origin), mock_data[i].type)] =
54 mock_data[i].usage; 54 mock_data[i].usage;
55 } 55 }
56 } 56 }
57 57
58 MockStorageClient::~MockStorageClient() { 58 MockStorageClient::~MockStorageClient() {}
59 STLDeleteContainerPointers(usage_callbacks_.begin(), usage_callbacks_.end());
60 STLDeleteContainerPointers(
61 origins_callbacks_.begin(), origins_callbacks_.end());
62 STLDeleteContainerPointers(
63 deletion_callbacks_.begin(), deletion_callbacks_.end());
64 }
65 59
66 void MockStorageClient::AddOriginAndNotify( 60 void MockStorageClient::AddOriginAndNotify(
67 const GURL& origin_url, StorageType type, int64 size) { 61 const GURL& origin_url, StorageType type, int64 size) {
68 DCHECK(origin_data_.find(make_pair(origin_url, type)) == origin_data_.end()); 62 DCHECK(origin_data_.find(make_pair(origin_url, type)) == origin_data_.end());
69 DCHECK_GE(size, 0); 63 DCHECK_GE(size, 0);
70 origin_data_[make_pair(origin_url, type)] = size; 64 origin_data_[make_pair(origin_url, type)] = size;
71 quota_manager_proxy_->quota_manager()->NotifyStorageModifiedInternal( 65 quota_manager_proxy_->quota_manager()->NotifyStorageModifiedInternal(
72 id(), origin_url, type, size, IncrementMockTime()); 66 id(), origin_url, type, size, IncrementMockTime());
73 } 67 }
74 68
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 QuotaClient::ID MockStorageClient::id() const { 100 QuotaClient::ID MockStorageClient::id() const {
107 return id_; 101 return id_;
108 } 102 }
109 103
110 void MockStorageClient::OnQuotaManagerDestroyed() { 104 void MockStorageClient::OnQuotaManagerDestroyed() {
111 delete this; 105 delete this;
112 } 106 }
113 107
114 void MockStorageClient::GetOriginUsage(const GURL& origin_url, 108 void MockStorageClient::GetOriginUsage(const GURL& origin_url,
115 StorageType type, 109 StorageType type,
116 GetUsageCallback* callback) { 110 GetUsageCallback callback) {
awong 2011/09/29 18:05:15 const &.
tzik 2011/10/11 04:53:57 Done.
117 usage_callbacks_.insert(callback);
118 base::MessageLoopProxy::current()->PostTask( 111 base::MessageLoopProxy::current()->PostTask(
119 FROM_HERE, runnable_factory_.NewRunnableMethod( 112 FROM_HERE, runnable_factory_.NewRunnableMethod(
awong 2011/09/29 18:05:15 weak_ptr + base::Bind? Or is that for another pas
tzik 2011/10/11 04:53:57 Yes, I'll do it later.
120 &MockStorageClient::RunGetOriginUsage, 113 &MockStorageClient::RunGetOriginUsage,
121 origin_url, type, callback)); 114 origin_url, type, callback));
122 } 115 }
123 116
124 void MockStorageClient::GetOriginsForType( 117 void MockStorageClient::GetOriginsForType(
125 StorageType type, GetOriginsCallback* callback) { 118 StorageType type, GetOriginsCallback callback) {
awong 2011/09/29 18:05:15 const &.
tzik 2011/10/11 04:53:57 Done.
126 origins_callbacks_.insert(callback);
127 base::MessageLoopProxy::current()->PostTask( 119 base::MessageLoopProxy::current()->PostTask(
128 FROM_HERE, runnable_factory_.NewRunnableMethod( 120 FROM_HERE, runnable_factory_.NewRunnableMethod(
129 &MockStorageClient::RunGetOriginsForType, 121 &MockStorageClient::RunGetOriginsForType,
130 type, callback)); 122 type, callback));
131 } 123 }
132 124
133 void MockStorageClient::GetOriginsForHost( 125 void MockStorageClient::GetOriginsForHost(
134 StorageType type, const std::string& host, 126 StorageType type, const std::string& host,
135 GetOriginsCallback* callback) { 127 GetOriginsCallback callback) {
awong 2011/09/29 18:05:15 const &.
tzik 2011/10/11 04:53:57 Done.
136 origins_callbacks_.insert(callback);
137 base::MessageLoopProxy::current()->PostTask( 128 base::MessageLoopProxy::current()->PostTask(
138 FROM_HERE, runnable_factory_.NewRunnableMethod( 129 FROM_HERE, runnable_factory_.NewRunnableMethod(
139 &MockStorageClient::RunGetOriginsForHost, 130 &MockStorageClient::RunGetOriginsForHost,
140 type, host, callback)); 131 type, host, callback));
141 } 132 }
142 133
143 void MockStorageClient::DeleteOriginData( 134 void MockStorageClient::DeleteOriginData(
144 const GURL& origin, StorageType type, 135 const GURL& origin, StorageType type,
145 DeletionCallback* callback) { 136 DeletionCallback callback) {
146 deletion_callbacks_.insert(callback);
147 base::MessageLoopProxy::current()->PostTask( 137 base::MessageLoopProxy::current()->PostTask(
148 FROM_HERE, runnable_factory_.NewRunnableMethod( 138 FROM_HERE, runnable_factory_.NewRunnableMethod(
149 &MockStorageClient::RunDeleteOriginData, 139 &MockStorageClient::RunDeleteOriginData,
150 origin, type, callback)); 140 origin, type, callback));
151 } 141 }
152 142
153 void MockStorageClient::RunGetOriginUsage( 143 void MockStorageClient::RunGetOriginUsage(
154 const GURL& origin_url, StorageType type, GetUsageCallback* callback_ptr) { 144 const GURL& origin_url, StorageType type, GetUsageCallback callback) {
awong 2011/09/29 18:05:15 const &.
tzik 2011/10/11 04:53:57 Done.
155 usage_callbacks_.erase(callback_ptr);
156 scoped_ptr<GetUsageCallback> callback(callback_ptr);
157 OriginDataMap::iterator find = origin_data_.find(make_pair(origin_url, type)); 145 OriginDataMap::iterator find = origin_data_.find(make_pair(origin_url, type));
158 if (find == origin_data_.end()) { 146 if (find == origin_data_.end()) {
159 callback->Run(0); 147 callback.Run(0);
160 } else { 148 } else {
161 callback->Run(find->second); 149 callback.Run(find->second);
162 } 150 }
163 } 151 }
164 152
165 void MockStorageClient::RunGetOriginsForType( 153 void MockStorageClient::RunGetOriginsForType(
166 StorageType type, GetOriginsCallback* callback_ptr) { 154 StorageType type, GetOriginsCallback callback) {
awong 2011/09/29 18:05:15 const &.
tzik 2011/10/11 04:53:57 Done.
167 scoped_ptr<GetOriginsCallback> callback(callback_ptr);
168 origins_callbacks_.erase(callback_ptr);
169 std::set<GURL> origins; 155 std::set<GURL> origins;
170 for (OriginDataMap::iterator iter = origin_data_.begin(); 156 for (OriginDataMap::iterator iter = origin_data_.begin();
171 iter != origin_data_.end(); ++iter) { 157 iter != origin_data_.end(); ++iter) {
172 if (type == iter->first.second) 158 if (type == iter->first.second)
173 origins.insert(iter->first.first); 159 origins.insert(iter->first.first);
174 } 160 }
175 callback->Run(origins, type); 161 callback.Run(origins, type);
176 } 162 }
177 163
178 void MockStorageClient::RunGetOriginsForHost( 164 void MockStorageClient::RunGetOriginsForHost(
179 StorageType type, const std::string& host, 165 StorageType type, const std::string& host,
180 GetOriginsCallback* callback_ptr) { 166 GetOriginsCallback callback) {
awong 2011/09/29 18:05:15 const &.
tzik 2011/10/11 04:53:57 Done.
181 scoped_ptr<GetOriginsCallback> callback(callback_ptr);
182 origins_callbacks_.erase(callback_ptr);
183 std::set<GURL> origins; 167 std::set<GURL> origins;
184 for (OriginDataMap::iterator iter = origin_data_.begin(); 168 for (OriginDataMap::iterator iter = origin_data_.begin();
185 iter != origin_data_.end(); ++iter) { 169 iter != origin_data_.end(); ++iter) {
186 std::string host_or_spec = net::GetHostOrSpecFromURL(iter->first.first); 170 std::string host_or_spec = net::GetHostOrSpecFromURL(iter->first.first);
187 if (type == iter->first.second && host == host_or_spec) 171 if (type == iter->first.second && host == host_or_spec)
188 origins.insert(iter->first.first); 172 origins.insert(iter->first.first);
189 } 173 }
190 callback->Run(origins, type); 174 callback.Run(origins, type);
191 } 175 }
192 176
193 void MockStorageClient::RunDeleteOriginData( 177 void MockStorageClient::RunDeleteOriginData(
194 const GURL& origin_url, 178 const GURL& origin_url,
195 StorageType type, 179 StorageType type,
196 DeletionCallback* callback_ptr) { 180 DeletionCallback callback) {
awong 2011/09/29 18:05:15 const &.
tzik 2011/10/11 04:53:57 Done.
197 scoped_ptr<DeletionCallback> callback(callback_ptr);
198 ErrorOriginSet::iterator itr_error = 181 ErrorOriginSet::iterator itr_error =
199 error_origins_.find(make_pair(origin_url, type)); 182 error_origins_.find(make_pair(origin_url, type));
200 if (itr_error != error_origins_.end()) { 183 if (itr_error != error_origins_.end()) {
201 deletion_callbacks_.erase(callback_ptr); 184 callback.Run(kQuotaErrorInvalidModification);
202 callback->Run(kQuotaErrorInvalidModification);
203 return; 185 return;
204 } 186 }
205 187
206 OriginDataMap::iterator itr = 188 OriginDataMap::iterator itr =
207 origin_data_.find(make_pair(origin_url, type)); 189 origin_data_.find(make_pair(origin_url, type));
208 if (itr != origin_data_.end()) { 190 if (itr != origin_data_.end()) {
209 int64 delta = itr->second; 191 int64 delta = itr->second;
210 quota_manager_proxy_-> 192 quota_manager_proxy_->
211 NotifyStorageModified(id(), origin_url, type, -delta); 193 NotifyStorageModified(id(), origin_url, type, -delta);
212 origin_data_.erase(itr); 194 origin_data_.erase(itr);
213 } 195 }
214 196
215 deletion_callbacks_.erase(callback_ptr); 197 callback.Run(kQuotaStatusOk);
216 callback->Run(kQuotaStatusOk);
217 } 198 }
218 199
219 } // namespace quota 200 } // namespace quota
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698