xref: /aosp_15_r20/external/cronet/base/test/ios/wait_util.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2014 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #ifndef BASE_TEST_IOS_WAIT_UTIL_H_
6*6777b538SAndroid Build Coastguard Worker #define BASE_TEST_IOS_WAIT_UTIL_H_
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #import <Foundation/Foundation.h>
9*6777b538SAndroid Build Coastguard Worker 
10*6777b538SAndroid Build Coastguard Worker #include "base/ios/block_types.h"
11*6777b538SAndroid Build Coastguard Worker #include "base/time/time.h"
12*6777b538SAndroid Build Coastguard Worker 
13*6777b538SAndroid Build Coastguard Worker namespace base::test::ios {
14*6777b538SAndroid Build Coastguard Worker 
15*6777b538SAndroid Build Coastguard Worker // Constant for UI wait loop.
16*6777b538SAndroid Build Coastguard Worker constexpr TimeDelta kSpinDelaySeconds = Milliseconds(10);
17*6777b538SAndroid Build Coastguard Worker 
18*6777b538SAndroid Build Coastguard Worker // Constant for timeout while waiting for UI element.
19*6777b538SAndroid Build Coastguard Worker constexpr TimeDelta kWaitForUIElementTimeout = Seconds(4);
20*6777b538SAndroid Build Coastguard Worker 
21*6777b538SAndroid Build Coastguard Worker // Constant for timeout while waiting for JavaScript completion.
22*6777b538SAndroid Build Coastguard Worker constexpr TimeDelta kWaitForJSCompletionTimeout = Seconds(6);
23*6777b538SAndroid Build Coastguard Worker 
24*6777b538SAndroid Build Coastguard Worker // Constant for timeout while waiting for a download to complete.
25*6777b538SAndroid Build Coastguard Worker constexpr TimeDelta kWaitForDownloadTimeout = Seconds(10);
26*6777b538SAndroid Build Coastguard Worker 
27*6777b538SAndroid Build Coastguard Worker // Constant for timeout while waiting for a pageload to complete.
28*6777b538SAndroid Build Coastguard Worker constexpr TimeDelta kWaitForPageLoadTimeout = Seconds(10);
29*6777b538SAndroid Build Coastguard Worker 
30*6777b538SAndroid Build Coastguard Worker // Constant for timeout while waiting for a generic action to complete.
31*6777b538SAndroid Build Coastguard Worker constexpr TimeDelta kWaitForActionTimeout = Seconds(10);
32*6777b538SAndroid Build Coastguard Worker 
33*6777b538SAndroid Build Coastguard Worker // Constant for timeout while waiting for clear browsing data. It seems this
34*6777b538SAndroid Build Coastguard Worker // can take a very long time on the bots when running simulators in parallel.
35*6777b538SAndroid Build Coastguard Worker // TODO(crbug.com/993513): Investigate why this is sometimes very slow.
36*6777b538SAndroid Build Coastguard Worker constexpr TimeDelta kWaitForClearBrowsingDataTimeout = Seconds(45);
37*6777b538SAndroid Build Coastguard Worker 
38*6777b538SAndroid Build Coastguard Worker // Constant for timeout while waiting for cookies operations to complete.
39*6777b538SAndroid Build Coastguard Worker constexpr TimeDelta kWaitForCookiesTimeout = Seconds(4);
40*6777b538SAndroid Build Coastguard Worker 
41*6777b538SAndroid Build Coastguard Worker // Constant for timeout while waiting for a file operation to complete.
42*6777b538SAndroid Build Coastguard Worker constexpr TimeDelta kWaitForFileOperationTimeout = Seconds(2);
43*6777b538SAndroid Build Coastguard Worker 
44*6777b538SAndroid Build Coastguard Worker // Returns true when condition() becomes true, otherwise returns false after
45*6777b538SAndroid Build Coastguard Worker // |timeout|. Repetitively runs the current NSRunLoop and the current
46*6777b538SAndroid Build Coastguard Worker // MessageLoop (if |run_message_loop| is true). Passing |run_message_loop| true
47*6777b538SAndroid Build Coastguard Worker // only makes sense in unit tests.
48*6777b538SAndroid Build Coastguard Worker [[nodiscard]] bool WaitUntilConditionOrTimeout(TimeDelta timeout,
49*6777b538SAndroid Build Coastguard Worker                                                bool run_message_loop,
50*6777b538SAndroid Build Coastguard Worker                                                ConditionBlock condition);
51*6777b538SAndroid Build Coastguard Worker 
52*6777b538SAndroid Build Coastguard Worker // Same as above but `run_message_loop` is false.
53*6777b538SAndroid Build Coastguard Worker [[nodiscard]] bool WaitUntilConditionOrTimeout(TimeDelta timeout,
54*6777b538SAndroid Build Coastguard Worker                                                ConditionBlock condition);
55*6777b538SAndroid Build Coastguard Worker 
56*6777b538SAndroid Build Coastguard Worker // Lets the run loop of the current thread process other messages
57*6777b538SAndroid Build Coastguard Worker // within the given maximum delay. This method may return before max_delay
58*6777b538SAndroid Build Coastguard Worker // elapsed.
59*6777b538SAndroid Build Coastguard Worker void SpinRunLoopWithMaxDelay(TimeDelta max_delay);
60*6777b538SAndroid Build Coastguard Worker 
61*6777b538SAndroid Build Coastguard Worker // Lets the run loop of the current thread process other messages
62*6777b538SAndroid Build Coastguard Worker // within the given minimum delay. This method returns after |min_delay|
63*6777b538SAndroid Build Coastguard Worker // elapsed.
64*6777b538SAndroid Build Coastguard Worker void SpinRunLoopWithMinDelay(TimeDelta min_delay);
65*6777b538SAndroid Build Coastguard Worker 
66*6777b538SAndroid Build Coastguard Worker }  // namespace base::test::ios
67*6777b538SAndroid Build Coastguard Worker 
68*6777b538SAndroid Build Coastguard Worker #endif  // BASE_TEST_IOS_WAIT_UTIL_H_
69