| Index: ios/testing/earl_grey/matchers.mm
|
| diff --git a/ios/testing/earl_grey/matchers.mm b/ios/testing/earl_grey/matchers.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6138ab3e09c1f9297e869da659f65f56aaf8f3c6
|
| --- /dev/null
|
| +++ b/ios/testing/earl_grey/matchers.mm
|
| @@ -0,0 +1,31 @@
|
| +// Copyright 2016 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.
|
| +
|
| +#import "ios/testing/earl_grey/matchers.h"
|
| +
|
| +namespace testing {
|
| +
|
| +id<GREYMatcher> contextMenuItemWithText(NSString* text) {
|
| + // Both tablet and phone house context menu views inside an alert controller
|
| + // view (on tablet that view is itself inside a popover view).
|
| + id<GREYMatcher> context_menu_container =
|
| + grey_kindOfClass(NSClassFromString(@"_UIAlertControllerView"));
|
| +
|
| + return grey_allOf(grey_ancestor(context_menu_container), grey_interactable(),
|
| + grey_text(text), nil);
|
| +}
|
| +
|
| +id<GREYMatcher> elementToDismissContextMenu(NSString* cancel_text) {
|
| + UIUserInterfaceIdiom idiom = [[UIDevice currentDevice] userInterfaceIdiom];
|
| + if (idiom == UIUserInterfaceIdiomPad) {
|
| + // On iPad the context menu is dismissed by tapping on something
|
| + // that isn't the popover. UIKit conveniently labels this element.
|
| + return grey_accessibilityID(@"PopoverDismissRegion");
|
| + } else {
|
| + // On iPhone the context menu is dismissed by tapping on the "Cancel" item.
|
| + return contextMenuItemWithText(cancel_text);
|
| + }
|
| +}
|
| +
|
| +} // namespace testing
|
|
|