summaryrefslogtreecommitdiffstats
path: root/webkit/quota/quota_database.cc
diff options
context:
space:
mode:
authordmikurube@chromium.org <dmikurube@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-16 13:42:55 +0000
committerdmikurube@chromium.org <dmikurube@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-16 13:42:55 +0000
commita254e65016def115155c5184b82445c5d9a4a483 (patch)
tree60f0b6c1562730363d19d611976770231feb48bb /webkit/quota/quota_database.cc
parent63d70dea1e453b1242a7184d02737b5e02d20d08 (diff)
downloadchromium_src-a254e65016def115155c5184b82445c5d9a4a483.zip
chromium_src-a254e65016def115155c5184b82445c5d9a4a483.tar.gz
chromium_src-a254e65016def115155c5184b82445c5d9a4a483.tar.bz2
Add GetLRUOrigin into QuotaManager.
BUG=61676 TEST=QuotaDatabaseTest.*, (no tests for QuotaManagerTest.*). Review URL: http://codereview.chromium.org/7033006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85480 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/quota/quota_database.cc')
-rw-r--r--webkit/quota/quota_database.cc50
1 files changed, 18 insertions, 32 deletions
diff --git a/webkit/quota/quota_database.cc b/webkit/quota/quota_database.cc
index 6d61853..23e4bab 100644
--- a/webkit/quota/quota_database.cc
+++ b/webkit/quota/quota_database.cc
@@ -252,46 +252,32 @@ bool QuotaDatabase::SetGlobalQuota(StorageType type, int64 quota) {
return meta_table_->SetValue(GetGlobalQuotaKey(type).c_str(), quota);
}
-bool QuotaDatabase::GetLRUOrigins(
- StorageType type, std::vector<GURL>* origins,
- int max_used_count, int num_origins_limit) {
- DCHECK(origins);
- DCHECK(num_origins_limit > 0);
+bool QuotaDatabase::GetLRUOrigin(
+ StorageType type,
+ const std::set<GURL>& exceptions,
+ GURL* origin) {
+ DCHECK(origin);
if (!LazyOpen(false))
return false;
- const char* kSqlBase =
- "SELECT origin FROM OriginLastAccessTable"
- " WHERE type = ?";
-
- const char* kSqlSuffix =
- " ORDER BY last_access_time ASC "
- " LIMIT ?";
-
- std::string sql(kSqlBase);
- sql::StatementID id = SQL_FROM_HERE;
- if (max_used_count >= 0) {
- sql += " AND used_count <= ?";
- id = SQL_FROM_HERE;
- }
- sql += kSqlSuffix;
+ const char* kSql = "SELECT origin FROM OriginLastAccessTable"
+ " WHERE type = ?"
+ " ORDER BY last_access_time ASC";
sql::Statement statement;
- if (!PrepareCachedStatement(db_.get(), id, sql.c_str(), &statement))
+ if (!PrepareCachedStatement(db_.get(), SQL_FROM_HERE, kSql, &statement))
return false;
+ statement.BindInt(0, static_cast<int>(type));
- int column = 0;
- statement.BindInt(column++, static_cast<int>(type));
- if (max_used_count >= 0)
- statement.BindInt(column++, max_used_count);
- statement.BindInt(column++, num_origins_limit);
-
- origins->clear();
- while (statement.Step())
- origins->push_back(GURL(statement.ColumnString(0)));
-
- DCHECK(origins->size() <= static_cast<size_t>(num_origins_limit));
+ while (statement.Step()) {
+ GURL url(statement.ColumnString(0));
+ if (exceptions.find(url) == exceptions.end()) {
+ *origin = url;
+ return true;
+ }
+ }
+ *origin = GURL();
return statement.Succeeded();
}