Chromium Code Reviews| Index: ios/web/public/test/earl_grey/web_view_actions.mm |
| diff --git a/ios/web/public/test/earl_grey/web_view_actions.mm b/ios/web/public/test/earl_grey/web_view_actions.mm |
| index a8b13fb38ddf449dc932551f43a8140b134c96ad..6396b2ff623bccc238b254ed26bb80256b3529fa 100644 |
| --- a/ios/web/public/test/earl_grey/web_view_actions.mm |
| +++ b/ios/web/public/test/earl_grey/web_view_actions.mm |
| @@ -10,7 +10,7 @@ |
| #include "base/strings/stringprintf.h" |
| #include "base/test/ios/wait_util.h" |
| #include "base/values.h" |
| -#import "ios/testing/earl_grey/wait_util.h" |
| +#import "ios/testing/wait_util.h" |
| #import "ios/web/public/test/earl_grey/web_view_matchers.h" |
| #import "ios/web/public/test/web_view_interaction_test_util.h" |
| #import "ios/web/web_state/web_state_impl.h" |
| @@ -62,26 +62,25 @@ bool AddVerifierToElementWithId(web::WebState* web_state, |
| const std::string kAddVerifierScript = |
| base::StringPrintf(kAddInteractionVerifierScriptTemplate, |
| element_id.c_str(), kCallbackInvocation.c_str()); |
| - NSDate* deadline = |
| - [NSDate dateWithTimeIntervalSinceNow:testing::kWaitForUIElementTimeout]; |
| - bool verifier_added = false; |
| - while (([[NSDate date] compare:deadline] != NSOrderedDescending) && |
| - !verifier_added) { |
| - std::unique_ptr<base::Value> value = |
| - web::test::ExecuteJavaScript(web_state, kAddVerifierScript); |
| - if (value) { |
| - std::string error; |
| - if (value->GetAsString(&error)) { |
| - DLOG(ERROR) << "Verifier injection failed: " << error << ", retrying."; |
| - } else if (value->GetAsBoolean(&verifier_added)) { |
| - verifier_added = true; |
| - } |
| - } |
| - base::test::ios::SpinRunLoopWithMaxDelay( |
| - base::TimeDelta::FromSecondsD(testing::kSpinDelaySeconds)); |
| - } |
| - if (!verifier_added) |
| + bool success = testing::WaitUntilConditionOrTimeout( |
| + testing::kWaitForUIElementTimeout, ^bool() { |
|
Eugene But (OOO till 7-30)
2016/10/25 14:43:39
Optional nit: You don't need |bool() |
baxley
2016/10/25 18:50:05
Done.
|
| + bool verifier_added = false; |
| + std::unique_ptr<base::Value> value = |
| + web::test::ExecuteJavaScript(web_state, kAddVerifierScript); |
| + if (value) { |
| + std::string error; |
| + if (value->GetAsString(&error)) { |
| + DLOG(ERROR) << "Verifier injection failed: " << error |
| + << ", retrying."; |
| + } else if (value->GetAsBoolean(&verifier_added)) { |
| + return true; |
| + } |
| + } |
| + return false; |
| + }); |
| + |
| + if (!success) |
| return false; |
| // The callback doesn't care about any of the parameters, just whether it is |
| @@ -175,10 +174,12 @@ id<GREYAction> webViewVerifiedActionOnElement(WebState* state, |
| [NSString stringWithFormat:@"The action (%@) on element_id %s wasn't " |
| @"verified before timing out.", |
| action.name, element_id.c_str()]; |
| - testing::WaitUntilCondition(testing::kWaitForJSCompletionTimeout, |
| - verification_timeout_message, ^{ |
| - return verified; |
| - }); |
| + GREYAssert(testing::WaitUntilConditionOrTimeout( |
| + testing::kWaitForJSCompletionTimeout, |
| + ^{ |
| + return verified; |
| + }), |
| + verification_timeout_message); |
| // If |verified| is not true, the wait condition should have already exited |
| // this control flow, so sanity check that it has in fact been set to |