Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(342)

Unified Diff: ios/web/public/test/earl_grey/web_view_actions.mm

Issue 2321613002: Add helper that taps on elements in the webview. (Closed)
Patch Set: Addressed comments. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/web/public/test/earl_grey/web_view_actions.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 ec9df6b30ff32ac3003c42d15c22de15b048cd71..a8b13fb38ddf449dc932551f43a8140b134c96ad 100644
--- a/ios/web/public/test/earl_grey/web_view_actions.mm
+++ b/ios/web/public/test/earl_grey/web_view_actions.mm
@@ -105,6 +105,24 @@ void RemoveVerifierForElementWithId(web::WebState* web_state,
CallbackPrefixForElementId(element_id));
}
+// Returns a no element found error.
+id<GREYAction> webViewElementNotFound(const std::string& element_id) {
+ NSString* description = [NSString
+ stringWithFormat:@"Couldn't locate a bounding rect for element_id %s; "
+ @"either it isn't there or it has no area.",
+ element_id.c_str()];
+ GREYPerformBlock throw_error =
+ ^BOOL(id /* element */, __strong NSError** error) {
+ NSDictionary* user_info = @{NSLocalizedDescriptionKey : description};
+ *error = [NSError errorWithDomain:kGREYInteractionErrorDomain
+ code:kGREYInteractionActionFailedErrorCode
+ userInfo:user_info];
+ return NO;
+ };
+ return [GREYActionBlock actionWithName:@"Locate element bounds"
+ performBlock:throw_error];
+}
+
} // namespace
namespace web {
@@ -128,7 +146,7 @@ id<GREYAction> webViewVerifiedActionOnElement(WebState* state,
base::ScopedClosureRunner cleanup(
base::Bind(&RemoveVerifierForElementWithId, state, element_id));
- // Inject the vefifier.
+ // Inject the verifier.
bool verifier_added =
AddVerifierToElementWithId(state, element_id, &verified);
if (!verifier_added) {
@@ -179,37 +197,25 @@ id<GREYAction> webViewLongPressElementForContextMenu(
const std::string& element_id,
bool triggers_context_menu) {
CGRect rect = web::test::GetBoundingRectOfElementWithId(state, element_id);
- // Check if |rect| is empty; if it is, return an action that just throws an
- // error.
if (CGRectIsEmpty(rect)) {
- NSString* description = [NSString
- stringWithFormat:@"Couldn't locate a bounding rect for element_id %s; "
- @"either it isn't there or it has no area.",
- element_id.c_str()];
- GREYPerformBlock throw_error = ^BOOL(id /* element */,
- __strong NSError** error) {
- NSDictionary* user_info = @{NSLocalizedDescriptionKey : description};
- *error = [NSError errorWithDomain:kGREYInteractionErrorDomain
- code:kGREYInteractionActionFailedErrorCode
- userInfo:user_info];
- return NO;
- };
- return [GREYActionBlock actionWithName:@"Locate element bounds"
- performBlock:throw_error];
+ return webViewElementNotFound(element_id);
}
-
- // If there's a usable rect, long-press in the center.
CGPoint point = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect));
-
id<GREYAction> longpress =
grey_longPressAtPointWithDuration(point, kContextMenuLongPressDuration);
- id<GREYAction> action = longpress;
-
- if (!triggers_context_menu) {
- action = webViewVerifiedActionOnElement(state, longpress, element_id);
+ if (triggers_context_menu) {
+ return longpress;
}
+ return webViewVerifiedActionOnElement(state, longpress, element_id);
+}
- return action;
+id<GREYAction> webViewTapElement(WebState* state,
+ const std::string& element_id) {
+ CGRect rect = web::test::GetBoundingRectOfElementWithId(state, element_id);
+ CGPoint point = CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect));
+ return CGRectIsEmpty(rect) ? webViewElementNotFound(element_id)
+ : webViewVerifiedActionOnElement(
+ state, grey_tapAtPoint(point), element_id);
}
} // namespace web
« no previous file with comments | « ios/web/public/test/earl_grey/web_view_actions.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698