Index: chrome/browser/chromeos/file_system_provider/queue.cc |
diff --git a/chrome/browser/chromeos/file_system_provider/queue.cc b/chrome/browser/chromeos/file_system_provider/queue.cc |
index bd32c11e13734d383d9f7351f3bd1e34c69cea4b..dca78ea4d9e7fd0b57e0d86847d261237e09aa28 100644 |
--- a/chrome/browser/chromeos/file_system_provider/queue.cc |
+++ b/chrome/browser/chromeos/file_system_provider/queue.cc |
@@ -50,37 +50,17 @@ void Queue::Enqueue(size_t token, const AbortableCallback& callback) { |
void Queue::Complete(size_t token) { |
const auto it = executed_.find(token); |
- CHECK(it != executed_.end()); |
- completed_[token] = it->second; |
+ DCHECK(it != executed_.end()); |
executed_.erase(it); |
-} |
- |
-void Queue::Remove(size_t token) { |
- const auto it = completed_.find(token); |
- if (it != completed_.end()) { |
- completed_.erase(it); |
- base::ThreadTaskRunnerHandle::Get()->PostTask( |
- FROM_HERE, |
- base::Bind(&Queue::MaybeRun, weak_ptr_factory_.GetWeakPtr())); |
- return; |
- } |
- |
- // If not completed, then it must have been aborted. |
- const auto aborted_it = aborted_.find(token); |
- CHECK(aborted_it != aborted_.end()); |
- aborted_.erase(aborted_it); |
- |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
FROM_HERE, base::Bind(&Queue::MaybeRun, weak_ptr_factory_.GetWeakPtr())); |
} |
void Queue::MaybeRun() { |
- if (executed_.size() + completed_.size() == max_in_parallel_ || |
- !pending_.size()) { |
+ if (executed_.size() == max_in_parallel_ || !pending_.size()) |
return; |
- } |
- CHECK_GT(max_in_parallel_, executed_.size() + completed_.size()); |
+ CHECK_GT(max_in_parallel_, executed_.size()); |
Task task = pending_.front(); |
pending_.pop_front(); |
@@ -95,24 +75,20 @@ void Queue::MaybeRun() { |
} |
void Queue::Abort(size_t token) { |
- // Check if it's running. |
+ // Check if it's running. If so, then abort and expect a Complete() call soon. |
const auto it = executed_.find(token); |
if (it != executed_.end()) { |
- Task task = it->second; |
- aborted_[token] = task; |
- executed_.erase(it); |
- CHECK(!task.abort_callback.is_null()); |
- task.abort_callback.Run(); |
- base::ThreadTaskRunnerHandle::Get()->PostTask( |
- FROM_HERE, |
- base::Bind(&Queue::MaybeRun, weak_ptr_factory_.GetWeakPtr())); |
+ Task& task = it->second; |
+ AbortCallback abort_callback = task.abort_callback; |
+ task.abort_callback = AbortCallback(); |
+ DCHECK(!abort_callback.is_null()); |
+ abort_callback.Run(); |
return; |
} |
// Aborting not running tasks is linear. TODO(mtomasz): Optimize if feasible. |
for (auto it = pending_.begin(); it != pending_.end(); ++it) { |
if (token == it->token) { |
- aborted_[token] = *it; |
pending_.erase(it); |
base::ThreadTaskRunnerHandle::Get()->PostTask( |
FROM_HERE, |
@@ -125,21 +101,5 @@ void Queue::Abort(size_t token) { |
NOTREACHED(); |
} |
-bool Queue::IsAborted(size_t token) { |
-#if !NDEBUG |
- bool in_queue = executed_.find(token) != executed_.end() || |
- completed_.find(token) != completed_.end() || |
- aborted_.find(token) != aborted_.end(); |
- for (auto& task : pending_) { |
- if (token == task.token) { |
- in_queue = true; |
- break; |
- } |
- } |
- DCHECK(in_queue); |
-#endif |
- return aborted_.find(token) != aborted_.end(); |
-} |
- |
} // namespace file_system_provider |
} // namespace chromeos |