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

Unified Diff: components/scheduler/child/nestable_task_runner_for_test.cc

Issue 1151353003: [scheduler]: Avoid waking up the scheduler to end long idle periods. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@end_idle_sync_2
Patch Set: Fix Win for realz hopefully... Created 5 years, 7 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: components/scheduler/child/nestable_task_runner_for_test.cc
diff --git a/components/scheduler/child/nestable_task_runner_for_test.cc b/components/scheduler/child/nestable_task_runner_for_test.cc
index 8a7a341b82dd9e1f7b42a81e02737bb70ec515ee..5bcfde816db70f3286bea0b98629a55396cab686 100644
--- a/components/scheduler/child/nestable_task_runner_for_test.cc
+++ b/components/scheduler/child/nestable_task_runner_for_test.cc
@@ -4,6 +4,9 @@
#include "components/scheduler/child/nestable_task_runner_for_test.h"
+#include "base/bind.h"
+#include "base/bind_helpers.h"
+
namespace scheduler {
// static
@@ -14,24 +17,45 @@ scoped_refptr<NestableTaskRunnerForTest> NestableTaskRunnerForTest::Create(
NestableTaskRunnerForTest::NestableTaskRunnerForTest(
scoped_refptr<base::SingleThreadTaskRunner> task_runner)
- : task_runner_(task_runner), is_nested_(false) {
+ : task_runner_(task_runner), is_nested_(false), weak_factory_(this) {
+ weak_nestable_task_runner_ptr_ = weak_factory_.GetWeakPtr();
}
NestableTaskRunnerForTest::~NestableTaskRunnerForTest() {
}
+void NestableTaskRunnerForTest::WrapTask(
+ const base::PendingTask* wrapped_task) {
+ scoped_refptr<NestableTaskRunnerForTest> protect(this);
+ FOR_EACH_OBSERVER(base::MessageLoop::TaskObserver, task_observers_,
+ DidProcessTask(*wrapped_task));
+ wrapped_task->task.Run();
+ FOR_EACH_OBSERVER(base::MessageLoop::TaskObserver, task_observers_,
+ WillProcessTask(*wrapped_task));
+}
+
bool NestableTaskRunnerForTest::PostDelayedTask(
const tracked_objects::Location& from_here,
const base::Closure& task,
base::TimeDelta delay) {
- return task_runner_->PostDelayedTask(from_here, task, delay);
+ base::PendingTask* wrapped_task = new base::PendingTask(from_here, task);
+ return task_runner_->PostDelayedTask(
+ from_here,
+ base::Bind(&NestableTaskRunnerForTest::WrapTask,
+ weak_nestable_task_runner_ptr_, base::Owned(wrapped_task)),
+ delay);
}
bool NestableTaskRunnerForTest::PostNonNestableDelayedTask(
const tracked_objects::Location& from_here,
const base::Closure& task,
base::TimeDelta delay) {
- return task_runner_->PostNonNestableDelayedTask(from_here, task, delay);
+ base::PendingTask* wrapped_task = new base::PendingTask(from_here, task);
+ return task_runner_->PostNonNestableDelayedTask(
+ from_here,
+ base::Bind(&NestableTaskRunnerForTest::WrapTask,
+ weak_nestable_task_runner_ptr_, base::Owned(wrapped_task)),
+ delay);
}
bool NestableTaskRunnerForTest::RunsTasksOnCurrentThread() const {
@@ -48,10 +72,12 @@ void NestableTaskRunnerForTest::SetNested(bool is_nested) {
void NestableTaskRunnerForTest::AddTaskObserver(
base::MessageLoop::TaskObserver* task_observer) {
+ task_observers_.AddObserver(task_observer);
}
void NestableTaskRunnerForTest::RemoveTaskObserver(
base::MessageLoop::TaskObserver* task_observer) {
+ task_observers_.RemoveObserver(task_observer);
}
} // namespace scheduler
« no previous file with comments | « components/scheduler/child/nestable_task_runner_for_test.h ('k') | components/scheduler/child/null_idle_task_runner.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698