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