OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "ios/testing/earl_grey/matchers.h" | 5 #import "ios/testing/earl_grey/matchers.h" |
6 | 6 |
| 7 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 8 #error "This file requires ARC support." |
| 9 #endif |
| 10 |
7 namespace testing { | 11 namespace testing { |
8 | 12 |
9 id<GREYMatcher> contextMenuItemWithText(NSString* text) { | 13 id<GREYMatcher> contextMenuItemWithText(NSString* text) { |
10 // Both tablet and phone house context menu views inside an alert controller | 14 // Both tablet and phone house context menu views inside an alert controller |
11 // view (on tablet that view is itself inside a popover view). | 15 // view (on tablet that view is itself inside a popover view). |
12 id<GREYMatcher> context_menu_container = | 16 id<GREYMatcher> context_menu_container = |
13 grey_kindOfClass(NSClassFromString(@"_UIAlertControllerView")); | 17 grey_kindOfClass(NSClassFromString(@"_UIAlertControllerView")); |
14 | 18 |
15 return grey_allOf(grey_ancestor(context_menu_container), grey_interactable(), | 19 return grey_allOf(grey_ancestor(context_menu_container), grey_interactable(), |
16 grey_text(text), nil); | 20 grey_text(text), nil); |
17 } | 21 } |
18 | 22 |
19 id<GREYMatcher> elementToDismissContextMenu(NSString* cancel_text) { | 23 id<GREYMatcher> elementToDismissContextMenu(NSString* cancel_text) { |
20 UIUserInterfaceIdiom idiom = [[UIDevice currentDevice] userInterfaceIdiom]; | 24 UIUserInterfaceIdiom idiom = [[UIDevice currentDevice] userInterfaceIdiom]; |
21 if (idiom == UIUserInterfaceIdiomPad) { | 25 if (idiom == UIUserInterfaceIdiomPad) { |
22 // On iPad the context menu is dismissed by tapping on something | 26 // On iPad the context menu is dismissed by tapping on something |
23 // that isn't the popover. UIKit conveniently labels this element. | 27 // that isn't the popover. UIKit conveniently labels this element. |
24 return grey_accessibilityID(@"PopoverDismissRegion"); | 28 return grey_accessibilityID(@"PopoverDismissRegion"); |
25 } else { | 29 } else { |
26 // On iPhone the context menu is dismissed by tapping on the "Cancel" item. | 30 // On iPhone the context menu is dismissed by tapping on the "Cancel" item. |
27 return contextMenuItemWithText(cancel_text); | 31 return contextMenuItemWithText(cancel_text); |
28 } | 32 } |
29 } | 33 } |
30 | 34 |
31 } // namespace testing | 35 } // namespace testing |
OLD | NEW |