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

Unified Diff: webkit/quota/quota_temporary_storage_evictor.cc

Issue 7002024: Implement QuotaTemporaryStorageEvictor. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 9 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: webkit/quota/quota_temporary_storage_evictor.cc
diff --git a/webkit/quota/quota_temporary_storage_evictor.cc b/webkit/quota/quota_temporary_storage_evictor.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3e46f3382f2edd19901f045f0b8717755565e041
--- /dev/null
+++ b/webkit/quota/quota_temporary_storage_evictor.cc
@@ -0,0 +1,79 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "webkit/quota/quota_temporary_storage_evictor.h"
+
+#include "webkit/quota/quota_client.h"
+#include "webkit/quota/quota_task.h"
+
+#include <vector>
+#include <list>
+
+namespace quota {
+
+QuotaTemporaryStorageEvictor::QuotaTemporaryStorageEvictor(
+ QuotaManager* manager,
+ QuotaDatabase* database,
+ scoped_refptr<base::MessageLoopProxy> db_message_loop)
+ : manager_(manager),
+ database_(database),
+ db_message_loop_(db_message_loop) {
+}
+
+QuotaTemporaryStorageEvictor::~QuotaTemporaryStorageEvictor() {}
+
+void QuotaTemporaryStorageEvictor::Start() {
+ scoped_refptr<EvictTask> task(
+ new EvictTask(manager_, database_, 10000, db_message_loop_));
+ task->Start();
+}
+
+class QuotaTemporaryStorageEvictor::EvictTask : public QuotaDelayedThreadTask {
+ public:
+ EvictTask(
+ QuotaManager* manager,
+ QuotaDatabase* database,
+ int64 delay_ms,
+ scoped_refptr<base::MessageLoopProxy> db_message_loop)
+ : QuotaDelayedThreadTask(manager, db_message_loop, delay_ms),
+ manager_(manager),
+ database_(database) {
+ DCHECK(database_);
+ }
+
+ protected:
+ virtual void RunOnTargetThread() OVERRIDE {
kinuko 2011/05/11 07:49:30 This method can be in the Evictor?
Dai Mikurube (NOT FULLTIME) 2011/05/11 11:23:50 Moved.
+ /*
+ // Return least recently used origins whose used_count is <=
+ // |max_used_count| up to |num_origins_limit|. If |max_used_count| is -1,
+ // it just returns LRU storages regardless of the used_count value.
+ // |num_origins_limit| must be > 0.
+ bool GetLRUOrigins(StorageType type, std::vector<GURL>* origins,
+ int max_used_count, int num_origins_limit);
+ */
+ std::vector<GURL> origins;
+ database_->GetLRUOrigins(...);
+
+ QuotaClientList clients;
+ manager_->GetClients(...);
+
+ for (std::vector<GURL>::iterator p = origins.begin();
+ p != origins.end();
+ ++p) {
+ for (QuotaClientList::iterator q = clients.begin();
+ q != clients.end();
+ ++q) {
kinuko 2011/05/11 07:49:30 Conceptually the main loop would look like that.
Dai Mikurube (NOT FULLTIME) 2011/05/11 11:23:50 Yeah, it was just a conceptual code. Changed it w
+ }
+ }
+ }
+
+ virtual void Completed() OVERRIDE {
+ }
+
+ private:
+ QuotaManager* manager_;
+ QuotaDatabase* database_;
+};
+
+} // namespace quota

Powered by Google App Engine
This is Rietveld 408576698