| 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
|
|
|