Bug 1626036 - Cache SELECTED state in Mac. r=morgan

Differential Revision: https://phabricator.services.mozilla.com/D69133

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Eitan Isaacson 2020-04-02 16:44:33 +00:00
Родитель 9d0aad6f8b
Коммит cd6b27feeb
2 изменённых файлов: 10 добавлений и 24 удалений

Просмотреть файл

@ -245,8 +245,8 @@ static inline NSMutableArray* ConvertToNSArray(nsTArray<ProxyAccessible*>& aArra
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
}
static const uint64_t kCachedStates =
states::CHECKED | states::PRESSED | states::MIXED | states::EXPANDED | states::CURRENT;
static const uint64_t kCachedStates = states::CHECKED | states::PRESSED | states::MIXED |
states::EXPANDED | states::CURRENT | states::SELECTED;
static const uint64_t kCacheInitialized = ((uint64_t)0x1) << 63;
- (uint64_t)state {

Просмотреть файл

@ -53,28 +53,13 @@
- (id)selectedChildren {
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
NSMutableArray* selectedChildren = [[NSMutableArray alloc] init];
if (AccessibleWrap* accWrap = [self getGeckoAccessible]) {
AutoTArray<Accessible*, 10> selectedItems;
accWrap->SelectedItems(&selectedItems);
for (uint64_t i = 0; i < selectedItems.Length(); i++) {
mozAccessible* nativeChild;
selectedItems.ElementAt(i)->GetNativeInterface((void**)&nativeChild);
if (nativeChild) {
[selectedChildren addObject:nativeChild];
}
}
} else if (ProxyAccessible* proxy = [self getProxyAccessible]) {
AutoTArray<ProxyAccessible*, 10> selectedItems;
proxy->SelectedItems(&selectedItems);
for (uint64_t i = 0; i < selectedItems.Length(); i++) {
if (mozAccessible* nativeChild = GetNativeFromProxy(selectedItems.ElementAt(i))) {
[selectedChildren addObject:nativeChild];
}
}
}
return selectedChildren;
return [[self children]
filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(mozAccessible* child,
NSDictionary* bindings) {
// Return mozSelectableChildAccessibles that have are selected (truthy value).
return
[child isKindOfClass:[mozSelectableChildAccessible class]] && [[child value] boolValue];
}]];
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
}
@ -90,6 +75,7 @@
@implementation mozSelectableChildAccessible
- (id)value {
// Retuens true if item is selected.
return [NSNumber numberWithBool:[self stateWithMask:states::SELECTED] != 0];
}