// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_UPDATER_LAUNCHD_UTIL_H_
#define CHROME_UPDATER_LAUNCHD_UTIL_H_

#include <string>

#include "base/callback_forward.h"
#include "chrome/updater/updater_scope.h"

namespace base {
class TimeDelta;
}  // namespace base

namespace updater {

enum class LaunchctlPresence {
  kAbsent,
  kPresent,
};

// Query `launchctl list |service|` with retries, until either the
// `expectation` about the presence of `service` is met, or `timeout` is
// reached. Calls `callback` with 'true' if the expectation is met, and false
// if |timeout| is reached.  Must be called in a sequence. The callback is
// posted to the same sequence.
void PollLaunchctlList(UpdaterScope scope,
                       const std::string& service,
                       LaunchctlPresence expectation,
                       base::TimeDelta timeout,
                       base::OnceCallback<void(bool)> callback);

}  // namespace updater

#endif  // CHROME_UPDATER_LAUNCHD_UTIL_H_
