diff options
author | dmikurube@chromium.org <dmikurube@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-16 13:42:55 +0000 |
---|---|---|
committer | dmikurube@chromium.org <dmikurube@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-16 13:42:55 +0000 |
commit | a254e65016def115155c5184b82445c5d9a4a483 (patch) | |
tree | 60f0b6c1562730363d19d611976770231feb48bb /webkit/quota/quota_database.cc | |
parent | 63d70dea1e453b1242a7184d02737b5e02d20d08 (diff) | |
download | chromium_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.cc | 50 |
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(); } |