OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "webkit/quota/quota_task.h" | 5 #include "webkit/quota/quota_task.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <functional> | 8 #include <functional> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 } | 49 } |
50 | 50 |
51 void QuotaTask::DeleteSoon() { | 51 void QuotaTask::DeleteSoon() { |
52 DCHECK(original_task_runner_->BelongsToCurrentThread()); | 52 DCHECK(original_task_runner_->BelongsToCurrentThread()); |
53 if (delete_scheduled_) | 53 if (delete_scheduled_) |
54 return; | 54 return; |
55 delete_scheduled_ = true; | 55 delete_scheduled_ = true; |
56 MessageLoop::current()->DeleteSoon(FROM_HERE, this); | 56 MessageLoop::current()->DeleteSoon(FROM_HERE, this); |
57 } | 57 } |
58 | 58 |
59 // QuotaThreadTask --------------------------------------------------------- | |
60 | |
61 QuotaThreadTask::QuotaThreadTask( | |
62 QuotaTaskObserver* observer, | |
63 TaskRunner* target_task_runner) | |
64 : QuotaTask(observer), | |
65 target_task_runner_(target_task_runner) { | |
66 } | |
67 | |
68 QuotaThreadTask::~QuotaThreadTask() { | |
69 } | |
70 | |
71 void QuotaThreadTask::Run() { | |
72 target_task_runner_->PostTask( | |
73 FROM_HERE, | |
74 base::Bind(&QuotaThreadTask::CallRunOnTargetThread, this)); | |
75 } | |
76 | |
77 void QuotaThreadTask::CallRunOnTargetThread() { | |
78 DCHECK(target_task_runner_->RunsTasksOnCurrentThread()); | |
79 if (RunOnTargetThreadAsync()) | |
80 original_task_runner()->PostTask( | |
81 FROM_HERE, | |
82 base::Bind(&QuotaThreadTask::CallCompleted, this)); | |
83 } | |
84 | |
85 bool QuotaThreadTask::RunOnTargetThreadAsync() { | |
86 RunOnTargetThread(); | |
87 return true; | |
88 } | |
89 | |
90 void QuotaThreadTask::RunOnTargetThread() { | |
91 } | |
92 | |
93 // QuotaTaskObserver ------------------------------------------------------- | 59 // QuotaTaskObserver ------------------------------------------------------- |
94 | 60 |
95 QuotaTaskObserver::~QuotaTaskObserver() { | 61 QuotaTaskObserver::~QuotaTaskObserver() { |
96 std::for_each(running_quota_tasks_.begin(), | 62 std::for_each(running_quota_tasks_.begin(), |
97 running_quota_tasks_.end(), | 63 running_quota_tasks_.end(), |
98 std::mem_fun(&QuotaTask::Abort)); | 64 std::mem_fun(&QuotaTask::Abort)); |
99 } | 65 } |
100 | 66 |
101 QuotaTaskObserver::QuotaTaskObserver() { | 67 QuotaTaskObserver::QuotaTaskObserver() { |
102 } | 68 } |
103 | 69 |
104 void QuotaTaskObserver::RegisterTask(QuotaTask* task) { | 70 void QuotaTaskObserver::RegisterTask(QuotaTask* task) { |
105 running_quota_tasks_.insert(task); | 71 running_quota_tasks_.insert(task); |
106 } | 72 } |
107 | 73 |
108 void QuotaTaskObserver::UnregisterTask(QuotaTask* task) { | 74 void QuotaTaskObserver::UnregisterTask(QuotaTask* task) { |
109 DCHECK(running_quota_tasks_.find(task) != running_quota_tasks_.end()); | 75 DCHECK(running_quota_tasks_.find(task) != running_quota_tasks_.end()); |
110 running_quota_tasks_.erase(task); | 76 running_quota_tasks_.erase(task); |
111 } | 77 } |
112 | 78 |
113 } // namespace quota | 79 } // namespace quota |
OLD | NEW |