// Copyright 2014 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 BASE_TEST_IOS_WAIT_UTIL_H_
#define BASE_TEST_IOS_WAIT_UTIL_H_

#include "base/ios/block_types.h"
#include "base/time/time.h"

namespace base {
namespace test {
namespace ios {

// Runs |action| if non-nil. Then, until either |condition| is true or |timeout|
// expires, repetitively runs the current NSRunLoop and the current MessageLoop
// (if |run_message_loop| is true). |condition| may be nil if there is no
// condition to wait for; the NSRunLoop and current MessageLoop will be run run
// until |timeout| expires. DCHECKs if |condition| is non-nil and |timeout|
// expires before |condition| becomes true. If |timeout| is zero, a reasonable
// default is used. Returns the time spent in the function.
// DEPRECATED - Do not use in new code. http://crbug.com/784735
TimeDelta TimeUntilCondition(ProceduralBlock action,
                             ConditionBlock condition,
                             bool run_message_loop,
                             TimeDelta timeout);

// Same as TimeUntilCondition, but doesn't run an action.
// DEPRECATED - Do not use in new code. http://crbug.com/784735
void WaitUntilCondition(ConditionBlock condition,
                        bool run_message_loop,
                        TimeDelta timeout);
// DEPRECATED - Do not use in new code. http://crbug.com/784735
void WaitUntilCondition(ConditionBlock condition);

// Lets the run loop of the current thread process other messages
// within the given maximum delay. This method may return before max_delay
// elapsed.
void SpinRunLoopWithMaxDelay(TimeDelta max_delay);

// Lets the run loop of the current thread process other messages
// within the given minimum delay. This method returns after |min_delay|
// elapsed.
void SpinRunLoopWithMinDelay(TimeDelta min_delay);

}  // namespace ios
}  // namespace test
}  // namespace base

#endif  // BASE_TEST_IOS_WAIT_UTIL_H_
