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

Unified Diff: chrome/browser/chromeos/file_system_provider/queue.cc

Issue 971303003: Simplify file_system_provider::Queue. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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/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
« no previous file with comments | « chrome/browser/chromeos/file_system_provider/queue.h ('k') | chrome/browser/chromeos/file_system_provider/queue_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698