1 // Copyright (c) 2015 GitHub, Inc.
2 // Use of this source code is governed by the MIT license that can be
3 // found in the LICENSE file.
5 #include "atom/browser/bridge_task_runner.h"
7 #include "base/message_loop/message_loop.h"
11 void BridgeTaskRunner::MessageLoopIsReady() {
12 auto message_loop = base::MessageLoop::current();
14 for (const TaskPair& task : tasks_) {
15 message_loop->task_runner()->PostDelayedTask(
16 base::get<0>(task), base::get<1>(task), base::get<2>(task));
18 for (const TaskPair& task : non_nestable_tasks_) {
19 message_loop->task_runner()->PostNonNestableDelayedTask(
20 base::get<0>(task), base::get<1>(task), base::get<2>(task));
24 bool BridgeTaskRunner::PostDelayedTask(
25 const tracked_objects::Location& from_here,
26 const base::Closure& task,
27 base::TimeDelta delay) {
28 auto message_loop = base::MessageLoop::current();
30 tasks_.push_back(std::make_tuple(from_here, task, delay));
34 return message_loop->task_runner()->PostDelayedTask(from_here, task, delay);
37 bool BridgeTaskRunner::RunsTasksOnCurrentThread() const {
38 auto message_loop = base::MessageLoop::current();
42 return message_loop->task_runner()->RunsTasksOnCurrentThread();
45 bool BridgeTaskRunner::PostNonNestableDelayedTask(
46 const tracked_objects::Location& from_here,
47 const base::Closure& task,
48 base::TimeDelta delay) {
49 auto message_loop = base::MessageLoop::current();
51 non_nestable_tasks_.push_back(std::make_tuple(from_here, task, delay));
55 return message_loop->task_runner()->PostNonNestableDelayedTask(
56 from_here, task, delay);