blob: 440fe48d8dc90ddcb933b61d41ea938c91f80cdd [file] [log] [blame]
// 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_