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

Unified Diff: chrome/browser/history/download_database.cc

Issue 10665049: Make DownloadHistory observe manager, items (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 5 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: chrome/browser/history/download_database.cc
diff --git a/chrome/browser/history/download_database.cc b/chrome/browser/history/download_database.cc
index 5039e186765eb606500d8cd6f5e8715703a1a14f..eee42913330b2551419a476c6fd58d3b2ea4a088 100644
--- a/chrome/browser/history/download_database.cc
+++ b/chrome/browser/history/download_database.cc
@@ -76,15 +76,6 @@ DownloadDatabase::DownloadDatabase()
DownloadDatabase::~DownloadDatabase() {
}
-void DownloadDatabase::CheckThread() {
- if (owning_thread_set_) {
- DCHECK(owning_thread_ == base::PlatformThread::CurrentId());
- } else {
- owning_thread_ = base::PlatformThread::CurrentId();
- owning_thread_set_ = true;
- }
-}
-
bool DownloadDatabase::EnsureColumnExists(
const std::string& name, const std::string& type) {
std::string add_col = "ALTER TABLE downloads ADD COLUMN " + name + " " + type;
@@ -93,7 +84,6 @@ bool DownloadDatabase::EnsureColumnExists(
}
bool DownloadDatabase::InitDownloadTable() {
- CheckThread();
GetMetaTable().GetValue(kNextDownloadId, &next_id_);
if (GetDB().DoesTableExist("downloads")) {
return EnsureColumnExists("end_time", "INTEGER NOT NULL DEFAULT 0") &&
@@ -104,13 +94,11 @@ bool DownloadDatabase::InitDownloadTable() {
}
bool DownloadDatabase::DropDownloadTable() {
- CheckThread();
return GetDB().Execute("DROP TABLE downloads");
}
void DownloadDatabase::QueryDownloads(
std::vector<DownloadPersistentStoreInfo>* results) {
- CheckThread();
results->clear();
if (next_db_handle_ < 1)
next_db_handle_ = 1;
@@ -145,7 +133,6 @@ void DownloadDatabase::QueryDownloads(
}
bool DownloadDatabase::UpdateDownload(const DownloadPersistentStoreInfo& data) {
- CheckThread();
DCHECK(data.db_handle > 0);
sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
"UPDATE downloads "
@@ -161,7 +148,6 @@ bool DownloadDatabase::UpdateDownload(const DownloadPersistentStoreInfo& data) {
bool DownloadDatabase::UpdateDownloadPath(const FilePath& path,
DownloadID db_handle) {
- CheckThread();
DCHECK(db_handle > 0);
sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
"UPDATE downloads SET full_path=? WHERE id=?"));
@@ -172,7 +158,6 @@ bool DownloadDatabase::UpdateDownloadPath(const FilePath& path,
}
bool DownloadDatabase::CleanUpInProgressEntries() {
- CheckThread();
sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
"UPDATE downloads SET state=? WHERE state=?"));
statement.BindInt(0, DownloadItem::CANCELLED);
@@ -183,7 +168,6 @@ bool DownloadDatabase::CleanUpInProgressEntries() {
int64 DownloadDatabase::CreateDownload(
const DownloadPersistentStoreInfo& info) {
- CheckThread();
if (next_db_handle_ == 0) {
// This is unlikely. All current known tests and users already call
@@ -220,61 +204,18 @@ int64 DownloadDatabase::CreateDownload(
return 0;
}
-void DownloadDatabase::RemoveDownload(DownloadID db_handle) {
- CheckThread();
-
- sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
- "DELETE FROM downloads WHERE id=?"));
- statement.BindInt64(0, db_handle);
-
- statement.Run();
-}
-
-bool DownloadDatabase::RemoveDownloadsBetween(base::Time delete_begin,
- base::Time delete_end) {
- CheckThread();
- time_t start_time = delete_begin.ToTimeT();
- time_t end_time = delete_end.ToTimeT();
-
- int num_downloads_deleted = -1;
- {
- sql::Statement count(GetDB().GetCachedStatement(SQL_FROM_HERE,
- "SELECT count(*) FROM downloads WHERE start_time >= ? "
- "AND start_time < ? AND (State = ? OR State = ? OR State = ?)"));
- count.BindInt64(0, start_time);
- count.BindInt64(
- 1,
- end_time ? end_time : std::numeric_limits<int64>::max());
- count.BindInt(2, DownloadItem::COMPLETE);
- count.BindInt(3, DownloadItem::CANCELLED);
- count.BindInt(4, DownloadItem::INTERRUPTED);
- if (count.Step())
- num_downloads_deleted = count.ColumnInt(0);
- }
-
-
- bool success = false;
+void DownloadDatabase::RemoveDownloads(const std::set<DownloadID>& handles) {
base::TimeTicks started_removing = base::TimeTicks::Now();
- {
- // This does not use an index. We currently aren't likely to have enough
- // downloads where an index by time will give us a lot of benefit.
+ for (std::set<DownloadID>::const_iterator it = handles.begin();
+ it != handles.end(); ++it) {
sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE,
- "DELETE FROM downloads WHERE start_time >= ? AND start_time < ? "
- "AND (State = ? OR State = ? OR State = ?)"));
- statement.BindInt64(0, start_time);
- statement.BindInt64(
- 1,
- end_time ? end_time : std::numeric_limits<int64>::max());
- statement.BindInt(2, DownloadItem::COMPLETE);
- statement.BindInt(3, DownloadItem::CANCELLED);
- statement.BindInt(4, DownloadItem::INTERRUPTED);
-
- success = statement.Run();
+ "DELETE FROM downloads WHERE id=?"));
+ statement.BindInt64(0, *it);
+ statement.Run();
}
-
- base::TimeTicks finished_removing = base::TimeTicks::Now();
-
+ int num_downloads_deleted = handles.size(); // TODO(benjhayden) measure
if (num_downloads_deleted >= 0) {
+ base::TimeTicks finished_removing = base::TimeTicks::Now();
UMA_HISTOGRAM_COUNTS("Download.DatabaseRemoveDownloadsCount",
num_downloads_deleted);
base::TimeDelta micros = (1000 * (finished_removing - started_removing));
@@ -284,8 +225,6 @@ bool DownloadDatabase::RemoveDownloadsBetween(base::Time delete_begin,
(1000 * micros) / num_downloads_deleted);
}
}
-
- return success;
}
} // namespace history

Powered by Google App Engine
This is Rietveld 408576698