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

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

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

Powered by Google App Engine
This is Rietveld 408576698