| Index: ios/web/public/test/web_view_interaction_test_util.mm
|
| diff --git a/ios/web/public/test/web_view_interaction_test_util.mm b/ios/web/public/test/web_view_interaction_test_util.mm
|
| index bf7d5bbbce468c3d1ec9a85b926f79d0e89f8a28..277d4daf43d153961f2e80f1b0c29066a53ac4fb 100644
|
| --- a/ios/web/public/test/web_view_interaction_test_util.mm
|
| +++ b/ios/web/public/test/web_view_interaction_test_util.mm
|
| @@ -8,7 +8,7 @@
|
| #include "base/strings/stringprintf.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/test/ios/wait_util.h"
|
| -#include "ios/testing/earl_grey/wait_util.h"
|
| +#include "ios/testing/wait_util.h"
|
| #import "ios/web/public/web_state/crw_web_view_scroll_view_proxy.h"
|
| #import "ios/web/web_state/crw_web_view_proxy_impl.h"
|
| #import "ios/web/web_state/ui/crw_web_controller.h"
|
| @@ -36,9 +36,13 @@ std::unique_ptr<base::Value> ExecuteJavaScript(web::WebState* web_state,
|
| did_finish = true;
|
| }));
|
|
|
| - testing::WaitUntilCondition(testing::kWaitForJSCompletionTimeout, ^{
|
| - return did_finish;
|
| - });
|
| + bool completed = testing::WaitUntilConditionOrTimeout(
|
| + testing::kWaitForJSCompletionTimeout, ^{
|
| + return did_finish;
|
| + });
|
| + if (!completed) {
|
| + return nullptr;
|
| + }
|
|
|
| // As result is marked __block, this return call does a copy and not a move
|
| // (marking the variable as __block mean it is allocated in the block object
|
| @@ -72,26 +76,24 @@ CGRect GetBoundingRectOfElementWithId(web::WebState* web_state,
|
| " };"
|
| "})();";
|
|
|
| - base::DictionaryValue const* rect = nullptr;
|
| - bool found = false;
|
| - NSDate* deadline =
|
| - [NSDate dateWithTimeIntervalSinceNow:testing::kWaitForUIElementTimeout];
|
| - while (([[NSDate date] compare:deadline] != NSOrderedDescending) && !found) {
|
| - std::unique_ptr<base::Value> value =
|
| - ExecuteJavaScript(web_state, kGetBoundsScript);
|
| - base::DictionaryValue* dictionary = nullptr;
|
| - if (value && value->GetAsDictionary(&dictionary)) {
|
| - std::string error;
|
| - if (dictionary->GetString("error", &error)) {
|
| - DLOG(ERROR) << "Error getting rect: " << error << ", retrying..";
|
| - } else {
|
| - rect = dictionary->DeepCopy();
|
| - found = true;
|
| - }
|
| - }
|
| - base::test::ios::SpinRunLoopWithMaxDelay(
|
| - base::TimeDelta::FromSecondsD(testing::kSpinDelaySeconds));
|
| - }
|
| + __block base::DictionaryValue const* rect = nullptr;
|
| +
|
| + bool found =
|
| + testing::WaitUntilConditionOrTimeout(testing::kWaitForUIElementTimeout, ^{
|
| + std::unique_ptr<base::Value> value =
|
| + ExecuteJavaScript(web_state, kGetBoundsScript);
|
| + base::DictionaryValue* dictionary = nullptr;
|
| + if (value && value->GetAsDictionary(&dictionary)) {
|
| + std::string error;
|
| + if (dictionary->GetString("error", &error)) {
|
| + DLOG(ERROR) << "Error getting rect: " << error << ", retrying..";
|
| + } else {
|
| + rect = dictionary->DeepCopy();
|
| + return true;
|
| + }
|
| + }
|
| + return false;
|
| + });
|
|
|
| if (!found)
|
| return CGRectNull;
|
| @@ -145,7 +147,7 @@ bool RunActionOnWebViewElementWithId(web::WebState* web_state,
|
| element_found = [result boolValue];
|
| }];
|
|
|
| - testing::WaitUntilCondition(testing::kWaitForJSCompletionTimeout, ^{
|
| + testing::WaitUntilConditionOrTimeout(testing::kWaitForJSCompletionTimeout, ^{
|
| return did_complete;
|
| });
|
|
|
|
|