// 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_