blob: 01c6fe72bb733c927e06e256986119ab3592e90f [file] [log] [blame]
// 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 {
class MessageLoop;
namespace test {
namespace ios {
// Returns the time spent in running |action| plus waiting until |condition| is
// met.
// Performs |action| and then spins run loop and runs the |message_loop| until
// |condition| block returns true.
// |action| may be nil if no action needs to be performed before the wait loop.
// |message_loop| can be null if there is no need to spin the message loop.
// |condition| may be nil if there is no condition to wait for: the run loop
// will spin until timeout is reached.
// |timeout| parameter sets the maximum wait time. If |timeout| is zero,
// a reasonable default will be used.
TimeDelta TimeUntilCondition(ProceduralBlock action,
ConditionBlock condition,
MessageLoop* message_loop,
TimeDelta timeout);
// Waits until |condition| is met. A |message_loop| to spin and a |timeout| can
// be optionally passed; if |timeout| is zero, a reasonable default will be
// used.
void WaitUntilCondition(ConditionBlock condition,
MessageLoop* message_loop,
TimeDelta timeout);
void WaitUntilCondition(ConditionBlock condition);
// Lets the run loop of the current thread process other messages
// within the given maximum delay.
void SpinRunLoopWithMaxDelay(TimeDelta max_delay);
} // namespace ios
} // namespace test
} // namespace base
#endif // BASE_TEST_IOS_WAIT_UTIL_H_