Skip to content

Commit d6b21d1

Browse files
Internal Commit Uploaded
PiperOrigin-RevId: 465432740
1 parent a56af86 commit d6b21d1

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

CommonLib/Additions/NSObject+GREYCommon.m

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ - (NSString *)grey_description {
6969
[description appendFormat:@"; isAccessible=%@", self.isAccessibilityElement ? @"Y" : @"N"];
7070
}
7171

72+
// IsAccessibilityElement.
73+
if ([self respondsToSelector:@selector(accessibilityViewIsModal)]) {
74+
[description appendFormat:@"; accessibilityViewIsModal=%@", self.accessibilityViewIsModal ? @"Y" : @"N"];
75+
}
76+
7277
// AccessibilityIdentifier from UIAccessibilityIdentification.
7378
if ([self respondsToSelector:@selector(accessibilityIdentifier)]) {
7479
NSString *value = [self performSelector:@selector(accessibilityIdentifier)];
@@ -188,6 +193,27 @@ - (NSString *)grey_description {
188193
return description;
189194
}
190195

196+
- (id)viewCoveringByViewIsModal {
197+
if (![self respondsToSelector:@selector(superview)]) {
198+
return nil;
199+
}
200+
id superview = [(id)self superview];
201+
if (![superview respondsToSelector:@selector(subviews)]) {
202+
return nil;
203+
}
204+
NSArray<id> *subviews = (NSArray<id> *)[(id)superview subviews];
205+
for (id subview in subviews) {
206+
if (subview == self || ![subview respondsToSelector:@selector(accessibilityViewIsModal)]) {
207+
continue;
208+
}
209+
BOOL isModal = [(id)subview accessibilityViewIsModal];
210+
if (isModal) {
211+
return subview;
212+
}
213+
}
214+
return [(id)superview viewCoveringByViewIsModal];
215+
}
216+
191217
- (NSString *)grey_shortDescription {
192218
NSMutableString *description = [[NSMutableString alloc] init];
193219

@@ -201,6 +227,21 @@ - (NSString *)grey_shortDescription {
201227
[description appendString:axIdentifierDescription];
202228
}
203229

230+
if ([self respondsToSelector:@selector(accessibilityViewIsModal)]) {
231+
NSString *accessibilityViewIsModal = (BOOL)[self performSelector:@selector(accessibilityViewIsModal)] ? @"Y" : @"N";
232+
NSString *axViewIsModalDescription =
233+
[self grey_formattedDescriptionOrEmptyStringForValue:accessibilityViewIsModal
234+
withPrefix:@"; AX.viewIsModal="];
235+
[description appendString:axViewIsModalDescription];
236+
}
237+
238+
id coveringView = [self viewCoveringByViewIsModal];
239+
NSString *coveringViewDesc = (coveringView == nil) ? @"nil" : [NSString stringWithFormat:@"%@ %p", NSStringFromClass([coveringView class]), coveringView];
240+
NSString *coveringViewDescription =
241+
[self grey_formattedDescriptionOrEmptyStringForValue:coveringViewDesc
242+
withPrefix:@"; AX.coveredBy="];
243+
[description appendString:coveringViewDescription];
244+
204245
if ([self respondsToSelector:@selector(accessibilityLabel)]) {
205246
NSString *axLabelDescription =
206247
[self grey_formattedDescriptionOrEmptyStringForValue:self.accessibilityLabel

0 commit comments

Comments
 (0)