| 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 "webkit/database/database_quota_client.h" | 5 #include "webkit/database/database_quota_client.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/message_loop_proxy.h" | 10 #include "base/message_loop_proxy.h" |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 } | 82 } |
| 83 } | 83 } |
| 84 | 84 |
| 85 std::set<GURL> origins_; | 85 std::set<GURL> origins_; |
| 86 }; | 86 }; |
| 87 | 87 |
| 88 class DatabaseQuotaClient::GetAllOriginsTask : public GetOriginsTaskBase { | 88 class DatabaseQuotaClient::GetAllOriginsTask : public GetOriginsTaskBase { |
| 89 public: | 89 public: |
| 90 GetAllOriginsTask( | 90 GetAllOriginsTask( |
| 91 DatabaseQuotaClient* client, | 91 DatabaseQuotaClient* client, |
| 92 base::MessageLoopProxy* db_tracker_thread) | 92 base::MessageLoopProxy* db_tracker_thread, |
| 93 : GetOriginsTaskBase(client, db_tracker_thread) { | 93 quota::StorageType type) |
| 94 : GetOriginsTaskBase(client, db_tracker_thread), |
| 95 type_(type) { |
| 94 } | 96 } |
| 95 | 97 |
| 96 protected: | 98 protected: |
| 97 virtual bool ShouldAddOrigin(const GURL& origin) OVERRIDE { | 99 virtual bool ShouldAddOrigin(const GURL& origin) OVERRIDE { |
| 98 return true; | 100 return true; |
| 99 } | 101 } |
| 100 virtual void Completed() OVERRIDE { | 102 virtual void Completed() OVERRIDE { |
| 101 client_->DidGetAllOrigins(origins_); | 103 client_->DidGetAllOrigins(origins_, type_); |
| 102 } | 104 } |
| 105 |
| 106 private: |
| 107 quota::StorageType type_; |
| 103 }; | 108 }; |
| 104 | 109 |
| 105 class DatabaseQuotaClient::GetOriginsForHostTask : public GetOriginsTaskBase { | 110 class DatabaseQuotaClient::GetOriginsForHostTask : public GetOriginsTaskBase { |
| 106 public: | 111 public: |
| 107 GetOriginsForHostTask( | 112 GetOriginsForHostTask( |
| 108 DatabaseQuotaClient* client, | 113 DatabaseQuotaClient* client, |
| 109 base::MessageLoopProxy* db_tracker_thread, | 114 base::MessageLoopProxy* db_tracker_thread, |
| 110 const std::string& host) | 115 const std::string& host, |
| 116 quota::StorageType type) |
| 111 : GetOriginsTaskBase(client, db_tracker_thread), | 117 : GetOriginsTaskBase(client, db_tracker_thread), |
| 112 host_(host) { | 118 host_(host), |
| 119 type_(type) { |
| 113 } | 120 } |
| 114 | 121 |
| 115 private: | 122 private: |
| 116 virtual bool ShouldAddOrigin(const GURL& origin) OVERRIDE { | 123 virtual bool ShouldAddOrigin(const GURL& origin) OVERRIDE { |
| 117 return host_ == net::GetHostOrSpecFromURL(origin); | 124 return host_ == net::GetHostOrSpecFromURL(origin); |
| 118 } | 125 } |
| 119 virtual void Completed() OVERRIDE { | 126 virtual void Completed() OVERRIDE { |
| 120 client_->DidGetOriginsForHost(host_, origins_); | 127 client_->DidGetOriginsForHost(host_, origins_, type_); |
| 121 } | 128 } |
| 122 std::string host_; | 129 std::string host_; |
| 130 quota::StorageType type_; |
| 123 }; | 131 }; |
| 124 | 132 |
| 125 class DatabaseQuotaClient::DeleteOriginTask : public HelperTask { | 133 class DatabaseQuotaClient::DeleteOriginTask : public HelperTask { |
| 126 public: | 134 public: |
| 127 DeleteOriginTask( | 135 DeleteOriginTask( |
| 128 DatabaseQuotaClient* client, | 136 DatabaseQuotaClient* client, |
| 129 base::MessageLoopProxy* db_tracker_thread, | 137 base::MessageLoopProxy* db_tracker_thread, |
| 130 const GURL& origin_url, | 138 const GURL& origin_url, |
| 131 DeletionCallback* caller_callback) | 139 DeletionCallback* caller_callback) |
| 132 : HelperTask(client, db_tracker_thread), | 140 : HelperTask(client, db_tracker_thread), |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 | 223 |
| 216 void DatabaseQuotaClient::GetOriginsForType( | 224 void DatabaseQuotaClient::GetOriginsForType( |
| 217 quota::StorageType type, | 225 quota::StorageType type, |
| 218 GetOriginsCallback* callback_ptr) { | 226 GetOriginsCallback* callback_ptr) { |
| 219 DCHECK(callback_ptr); | 227 DCHECK(callback_ptr); |
| 220 DCHECK(db_tracker_.get()); | 228 DCHECK(db_tracker_.get()); |
| 221 scoped_ptr<GetOriginsCallback> callback(callback_ptr); | 229 scoped_ptr<GetOriginsCallback> callback(callback_ptr); |
| 222 | 230 |
| 223 // All databases are in the temp namespace for now. | 231 // All databases are in the temp namespace for now. |
| 224 if (type != quota::kStorageTypeTemporary) { | 232 if (type != quota::kStorageTypeTemporary) { |
| 225 callback->Run(std::set<GURL>()); | 233 callback->Run(std::set<GURL>(), type); |
| 226 return; | 234 return; |
| 227 } | 235 } |
| 228 | 236 |
| 229 if (origins_for_type_callbacks_.Add(callback.release())) { | 237 if (origins_for_type_callbacks_.Add(callback.release())) { |
| 230 scoped_refptr<GetAllOriginsTask> task( | 238 scoped_refptr<GetAllOriginsTask> task( |
| 231 new GetAllOriginsTask(this, db_tracker_thread_)); | 239 new GetAllOriginsTask(this, db_tracker_thread_, type)); |
| 232 task->Start(); | 240 task->Start(); |
| 233 } | 241 } |
| 234 } | 242 } |
| 235 | 243 |
| 236 void DatabaseQuotaClient::GetOriginsForHost( | 244 void DatabaseQuotaClient::GetOriginsForHost( |
| 237 quota::StorageType type, | 245 quota::StorageType type, |
| 238 const std::string& host, | 246 const std::string& host, |
| 239 GetOriginsCallback* callback_ptr) { | 247 GetOriginsCallback* callback_ptr) { |
| 240 DCHECK(callback_ptr); | 248 DCHECK(callback_ptr); |
| 241 DCHECK(db_tracker_.get()); | 249 DCHECK(db_tracker_.get()); |
| 242 scoped_ptr<GetOriginsCallback> callback(callback_ptr); | 250 scoped_ptr<GetOriginsCallback> callback(callback_ptr); |
| 243 | 251 |
| 244 // All databases are in the temp namespace for now. | 252 // All databases are in the temp namespace for now. |
| 245 if (type != quota::kStorageTypeTemporary) { | 253 if (type != quota::kStorageTypeTemporary) { |
| 246 callback->Run(std::set<GURL>()); | 254 callback->Run(std::set<GURL>(), type); |
| 247 return; | 255 return; |
| 248 } | 256 } |
| 249 | 257 |
| 250 if (origins_for_host_callbacks_.Add(host, callback.release())) { | 258 if (origins_for_host_callbacks_.Add(host, callback.release())) { |
| 251 scoped_refptr<GetOriginsForHostTask> task( | 259 scoped_refptr<GetOriginsForHostTask> task( |
| 252 new GetOriginsForHostTask(this, db_tracker_thread_, host)); | 260 new GetOriginsForHostTask(this, db_tracker_thread_, host, type)); |
| 253 task->Start(); | 261 task->Start(); |
| 254 } | 262 } |
| 255 } | 263 } |
| 256 | 264 |
| 257 void DatabaseQuotaClient::DeleteOriginData(const GURL& origin, | 265 void DatabaseQuotaClient::DeleteOriginData(const GURL& origin, |
| 258 quota::StorageType type, | 266 quota::StorageType type, |
| 259 DeletionCallback* callback_ptr) { | 267 DeletionCallback* callback_ptr) { |
| 260 DCHECK(callback_ptr); | 268 DCHECK(callback_ptr); |
| 261 DCHECK(db_tracker_.get()); | 269 DCHECK(db_tracker_.get()); |
| 262 scoped_ptr<DeletionCallback> callback(callback_ptr); | 270 scoped_ptr<DeletionCallback> callback(callback_ptr); |
| 263 | 271 |
| 264 // All databases are in the temp namespace for now, so nothing to delete. | 272 // All databases are in the temp namespace for now, so nothing to delete. |
| 265 if (type != quota::kStorageTypeTemporary) { | 273 if (type != quota::kStorageTypeTemporary) { |
| 266 callback->Run(quota::kQuotaStatusOk); | 274 callback->Run(quota::kQuotaStatusOk); |
| 267 return; | 275 return; |
| 268 } | 276 } |
| 269 | 277 |
| 270 scoped_refptr<DeleteOriginTask> task( | 278 scoped_refptr<DeleteOriginTask> task( |
| 271 new DeleteOriginTask(this, db_tracker_thread_, | 279 new DeleteOriginTask(this, db_tracker_thread_, |
| 272 origin, callback.release())); | 280 origin, callback.release())); |
| 273 task->Start(); | 281 task->Start(); |
| 274 } | 282 } |
| 275 | 283 |
| 276 void DatabaseQuotaClient::DidGetOriginUsage( | 284 void DatabaseQuotaClient::DidGetOriginUsage( |
| 277 const GURL& origin_url, int64 usage) { | 285 const GURL& origin_url, int64 usage) { |
| 278 DCHECK(usage_for_origin_callbacks_.HasCallbacks(origin_url)); | 286 DCHECK(usage_for_origin_callbacks_.HasCallbacks(origin_url)); |
| 279 usage_for_origin_callbacks_.Run(origin_url, usage); | 287 usage_for_origin_callbacks_.Run(origin_url, usage); |
| 280 } | 288 } |
| 281 | 289 |
| 282 void DatabaseQuotaClient::DidGetAllOrigins(const std::set<GURL>& origins) { | 290 void DatabaseQuotaClient::DidGetAllOrigins(const std::set<GURL>& origins, |
| 291 quota::StorageType type) { |
| 283 DCHECK(origins_for_type_callbacks_.HasCallbacks()); | 292 DCHECK(origins_for_type_callbacks_.HasCallbacks()); |
| 284 origins_for_type_callbacks_.Run(origins); | 293 origins_for_type_callbacks_.Run(origins, type); |
| 285 } | 294 } |
| 286 | 295 |
| 287 void DatabaseQuotaClient::DidGetOriginsForHost( | 296 void DatabaseQuotaClient::DidGetOriginsForHost( |
| 288 const std::string& host, const std::set<GURL>& origins) { | 297 const std::string& host, const std::set<GURL>& origins, |
| 298 quota::StorageType type) { |
| 289 DCHECK(origins_for_host_callbacks_.HasCallbacks(host)); | 299 DCHECK(origins_for_host_callbacks_.HasCallbacks(host)); |
| 290 origins_for_host_callbacks_.Run(host, origins); | 300 origins_for_host_callbacks_.Run(host, origins, type); |
| 291 } | 301 } |
| 292 | 302 |
| 293 } // namespace webkit_database | 303 } // namespace webkit_database |
| OLD | NEW |