| // Copyright 2018 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "hermes/executor.h" |
| |
| #include <utility> |
| |
| #include <base/bind.h> |
| #include <base/logging.h> |
| #include <base/message_loop/message_loop.h> |
| |
| namespace hermes { |
| |
| Executor::Executor(base::MessageLoop* message_loop) |
| : message_loop_(message_loop) { |
| CHECK(message_loop_); |
| } |
| |
| void Executor::Execute(std::function<void()> f) { |
| // TaskRunner::PostTask takes a base::Closure, not a std::function. Convert |
| // the captureless lambda into a base::BindState for use as a base::Closure. |
| base::Closure task = base::Bind([](std::function<void()> f){ f(); }, |
| std::move(f)); |
| message_loop_->task_runner()->PostTask(FROM_HERE, std::move(task)); |
| } |
| |
| } // namespace hermes |