// Copyright 2013 The Flutter 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 "flutter/testing/post_task_sync.h"

#include "flutter/fml/synchronization/waitable_event.h"

namespace flutter {
namespace testing {

void PostTaskSync(const fml::RefPtr<fml::TaskRunner>& task_runner,
                  const std::function<void()>& function) {
  fml::AutoResetWaitableEvent latch;
  task_runner->PostTask([&] {
    function();
    latch.Signal();
  });
  latch.Wait();
}

}  // namespace testing
}  // namespace flutter
