OLD | NEW |
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 <map> | 5 #include <map> |
6 | 6 |
| 7 #include "base/bind.h" |
7 #include "base/file_path.h" | 8 #include "base/file_path.h" |
8 #include "base/memory/scoped_callback_factory.h" | |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/message_loop_proxy.h" | 10 #include "base/message_loop_proxy.h" |
11 #include "base/utf_string_conversions.h" | 11 #include "base/utf_string_conversions.h" |
12 #include "net/base/net_errors.h" | 12 #include "net/base/net_errors.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
14 #include "webkit/database/database_quota_client.h" | 14 #include "webkit/database/database_quota_client.h" |
15 #include "webkit/database/database_tracker.h" | 15 #include "webkit/database/database_tracker.h" |
16 #include "webkit/database/database_util.h" | 16 #include "webkit/database/database_util.h" |
17 | 17 |
18 namespace webkit_database { | 18 namespace webkit_database { |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 const GURL kOriginA; | 119 const GURL kOriginA; |
120 const GURL kOriginB; | 120 const GURL kOriginB; |
121 const GURL kOriginOther; | 121 const GURL kOriginOther; |
122 | 122 |
123 DatabaseQuotaClientTest() | 123 DatabaseQuotaClientTest() |
124 : kOriginA("http://host"), | 124 : kOriginA("http://host"), |
125 kOriginB("http://host:8000"), | 125 kOriginB("http://host:8000"), |
126 kOriginOther("http://other"), | 126 kOriginOther("http://other"), |
127 usage_(0), | 127 usage_(0), |
128 mock_tracker_(new MockDatabaseTracker), | 128 mock_tracker_(new MockDatabaseTracker), |
129 callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { | 129 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
130 } | 130 } |
131 | 131 |
132 int64 GetOriginUsage( | 132 int64 GetOriginUsage( |
133 quota::QuotaClient* client, | 133 quota::QuotaClient* client, |
134 const GURL& origin, | 134 const GURL& origin, |
135 quota::StorageType type) { | 135 quota::StorageType type) { |
136 usage_ = 0; | 136 usage_ = 0; |
137 client->GetOriginUsage(origin, type, | 137 client->GetOriginUsage( |
138 callback_factory_.NewCallback( | 138 origin, type, |
139 &DatabaseQuotaClientTest::OnGetOriginUsageComplete)); | 139 base::Bind(&DatabaseQuotaClientTest::OnGetOriginUsageComplete, |
| 140 weak_factory_.GetWeakPtr())); |
140 MessageLoop::current()->RunAllPending(); | 141 MessageLoop::current()->RunAllPending(); |
141 return usage_; | 142 return usage_; |
142 } | 143 } |
143 | 144 |
144 const std::set<GURL>& GetOriginsForType( | 145 const std::set<GURL>& GetOriginsForType( |
145 quota::QuotaClient* client, | 146 quota::QuotaClient* client, |
146 quota::StorageType type) { | 147 quota::StorageType type) { |
147 origins_.clear(); | 148 origins_.clear(); |
148 client->GetOriginsForType(type, | 149 client->GetOriginsForType( |
149 callback_factory_.NewCallback( | 150 type, |
150 &DatabaseQuotaClientTest::OnGetOriginsComplete)); | 151 base::Bind(&DatabaseQuotaClientTest::OnGetOriginsComplete, |
| 152 weak_factory_.GetWeakPtr())); |
151 MessageLoop::current()->RunAllPending(); | 153 MessageLoop::current()->RunAllPending(); |
152 return origins_; | 154 return origins_; |
153 } | 155 } |
154 | 156 |
155 const std::set<GURL>& GetOriginsForHost( | 157 const std::set<GURL>& GetOriginsForHost( |
156 quota::QuotaClient* client, | 158 quota::QuotaClient* client, |
157 quota::StorageType type, | 159 quota::StorageType type, |
158 const std::string& host) { | 160 const std::string& host) { |
159 origins_.clear(); | 161 origins_.clear(); |
160 client->GetOriginsForHost(type, host, | 162 client->GetOriginsForHost( |
161 callback_factory_.NewCallback( | 163 type, host, |
162 &DatabaseQuotaClientTest::OnGetOriginsComplete)); | 164 base::Bind(&DatabaseQuotaClientTest::OnGetOriginsComplete, |
| 165 weak_factory_.GetWeakPtr())); |
163 MessageLoop::current()->RunAllPending(); | 166 MessageLoop::current()->RunAllPending(); |
164 return origins_; | 167 return origins_; |
165 } | 168 } |
166 | 169 |
167 bool DeleteOriginData( | 170 bool DeleteOriginData( |
168 quota::QuotaClient* client, | 171 quota::QuotaClient* client, |
169 quota::StorageType type, | 172 quota::StorageType type, |
170 const GURL& origin) { | 173 const GURL& origin) { |
171 delete_status_ = quota::kQuotaStatusUnknown; | 174 delete_status_ = quota::kQuotaStatusUnknown; |
172 client->DeleteOriginData(origin, type, | 175 client->DeleteOriginData( |
173 callback_factory_.NewCallback( | 176 origin, type, |
174 &DatabaseQuotaClientTest::OnDeleteOriginDataComplete)); | 177 base::Bind(&DatabaseQuotaClientTest::OnDeleteOriginDataComplete, |
| 178 weak_factory_.GetWeakPtr())); |
175 MessageLoop::current()->RunAllPending(); | 179 MessageLoop::current()->RunAllPending(); |
176 return delete_status_ == quota::kQuotaStatusOk; | 180 return delete_status_ == quota::kQuotaStatusOk; |
177 } | 181 } |
178 | 182 |
179 MockDatabaseTracker* mock_tracker() { return mock_tracker_.get(); } | 183 MockDatabaseTracker* mock_tracker() { return mock_tracker_.get(); } |
180 | 184 |
181 | 185 |
182 private: | 186 private: |
183 void OnGetOriginUsageComplete(int64 usage) { | 187 void OnGetOriginUsageComplete(int64 usage) { |
184 usage_ = usage; | 188 usage_ = usage; |
185 } | 189 } |
186 | 190 |
187 void OnGetOriginsComplete(const std::set<GURL>& origins, | 191 void OnGetOriginsComplete(const std::set<GURL>& origins, |
188 quota::StorageType type) { | 192 quota::StorageType type) { |
189 origins_ = origins; | 193 origins_ = origins; |
190 type_ = type; | 194 type_ = type; |
191 } | 195 } |
192 | 196 |
193 void OnDeleteOriginDataComplete(quota::QuotaStatusCode status) { | 197 void OnDeleteOriginDataComplete(quota::QuotaStatusCode status) { |
194 delete_status_ = status; | 198 delete_status_ = status; |
195 } | 199 } |
196 | 200 |
197 int64 usage_; | 201 int64 usage_; |
198 std::set<GURL> origins_; | 202 std::set<GURL> origins_; |
199 quota::StorageType type_; | 203 quota::StorageType type_; |
200 quota::QuotaStatusCode delete_status_; | 204 quota::QuotaStatusCode delete_status_; |
201 scoped_refptr<MockDatabaseTracker> mock_tracker_; | 205 scoped_refptr<MockDatabaseTracker> mock_tracker_; |
202 base::ScopedCallbackFactory<DatabaseQuotaClientTest> callback_factory_; | 206 base::WeakPtrFactory<DatabaseQuotaClientTest> weak_factory_; |
203 }; | 207 }; |
204 | 208 |
205 | 209 |
206 TEST_F(DatabaseQuotaClientTest, GetOriginUsage) { | 210 TEST_F(DatabaseQuotaClientTest, GetOriginUsage) { |
207 DatabaseQuotaClient client( | 211 DatabaseQuotaClient client( |
208 base::MessageLoopProxy::current(), | 212 base::MessageLoopProxy::current(), |
209 mock_tracker()); | 213 mock_tracker()); |
210 | 214 |
211 EXPECT_EQ(0, GetOriginUsage(&client, kOriginA, kTemp)); | 215 EXPECT_EQ(0, GetOriginUsage(&client, kOriginA, kTemp)); |
212 EXPECT_EQ(0, GetOriginUsage(&client, kOriginA, kPerm)); | 216 EXPECT_EQ(0, GetOriginUsage(&client, kOriginA, kPerm)); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 mock_tracker()->set_async_delete(false); | 278 mock_tracker()->set_async_delete(false); |
275 EXPECT_TRUE(DeleteOriginData(&client, kTemp, kOriginA)); | 279 EXPECT_TRUE(DeleteOriginData(&client, kTemp, kOriginA)); |
276 EXPECT_EQ(1, mock_tracker()->delete_called_count()); | 280 EXPECT_EQ(1, mock_tracker()->delete_called_count()); |
277 | 281 |
278 mock_tracker()->set_async_delete(true); | 282 mock_tracker()->set_async_delete(true); |
279 EXPECT_TRUE(DeleteOriginData(&client, kTemp, kOriginA)); | 283 EXPECT_TRUE(DeleteOriginData(&client, kTemp, kOriginA)); |
280 EXPECT_EQ(2, mock_tracker()->delete_called_count()); | 284 EXPECT_EQ(2, mock_tracker()->delete_called_count()); |
281 } | 285 } |
282 | 286 |
283 } // namespace webkit_database | 287 } // namespace webkit_database |
OLD | NEW |