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

Unified Diff: chrome/browser/sync_file_system/local/syncable_file_operation_runner.cc

Issue 2129083002: Explicitly check various sync_file_system classes live on the IO thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix tests, remove unneeded check Created 4 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/sync_file_system/local/syncable_file_operation_runner.cc
diff --git a/chrome/browser/sync_file_system/local/syncable_file_operation_runner.cc b/chrome/browser/sync_file_system/local/syncable_file_operation_runner.cc
index cee876d395bcadb70e430819f264aa51a6372d42..259024dcad6929c5743c447dea8859b08116b686 100644
--- a/chrome/browser/sync_file_system/local/syncable_file_operation_runner.cc
+++ b/chrome/browser/sync_file_system/local/syncable_file_operation_runner.cc
@@ -7,10 +7,10 @@
#include <stddef.h>
#include <algorithm>
-#include <functional>
#include "base/callback.h"
#include "base/stl_util.h"
+#include "content/public/browser/browser_thread.h"
using storage::FileSystemURL;
@@ -18,13 +18,6 @@ namespace sync_file_system {
// SyncableFileOperationRunner::Task -------------------------------------------
-// static
-void SyncableFileOperationRunner::Task::CancelAndDelete(
- SyncableFileOperationRunner::Task* task) {
- task->Cancel();
- delete task;
-}
-
bool SyncableFileOperationRunner::Task::IsRunnable(
LocalFileSyncStatus* status) const {
for (size_t i = 0; i < target_paths().size(); ++i) {
@@ -50,39 +43,41 @@ SyncableFileOperationRunner::SyncableFileOperationRunner(
: sync_status_(sync_status),
max_inflight_tasks_(max_inflight_tasks),
num_inflight_tasks_(0) {
- DCHECK(CalledOnValidThread());
+ DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
sync_status_->AddObserver(this);
}
SyncableFileOperationRunner::~SyncableFileOperationRunner() {
- DCHECK(CalledOnValidThread());
- for_each(pending_tasks_.begin(), pending_tasks_.end(),
- SyncableFileOperationRunner::Task::CancelAndDelete);
+ DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
+
+ for (auto& task : pending_tasks_)
+ task->Cancel();
+ pending_tasks_.clear();
}
void SyncableFileOperationRunner::OnSyncEnabled(const FileSystemURL& url) {
}
void SyncableFileOperationRunner::OnWriteEnabled(const FileSystemURL& url) {
- DCHECK(CalledOnValidThread());
+ DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
RunNextRunnableTask();
}
void SyncableFileOperationRunner::PostOperationTask(
std::unique_ptr<Task> task) {
- DCHECK(CalledOnValidThread());
- pending_tasks_.push_back(task.release());
+ DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
+ pending_tasks_.push_back(std::move(task));
RunNextRunnableTask();
}
void SyncableFileOperationRunner::RunNextRunnableTask() {
- DCHECK(CalledOnValidThread());
- for (std::list<Task*>::iterator iter = pending_tasks_.begin();
+ DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
+ for (auto iter = pending_tasks_.begin();
iter != pending_tasks_.end() && ShouldStartMoreTasks();) {
if ((*iter)->IsRunnable(sync_status())) {
++num_inflight_tasks_;
DCHECK_GE(num_inflight_tasks_, 1);
- std::unique_ptr<Task> task(*iter);
+ std::unique_ptr<Task> task = std::move(*iter);
pending_tasks_.erase(iter++);
task->Start(sync_status());
continue;

Powered by Google App Engine
This is Rietveld 408576698