Summary: | AX: AXIsolatedObject::initializeAttributeData should compute AXAncestorFlags if they are unexpectedly uninitialized | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Tyler Wilcock <tyler_w> | ||||||
Component: | Accessibility | Assignee: | Tyler Wilcock <tyler_w> | ||||||
Status: | RESOLVED FIXED | ||||||||
Severity: | Normal | CC: | aboxhall, andresg_22, apinheiro, cfleizach, dmazzoni, ews-watchlist, jcraig, jdiggs, samuel_white, webkit-bug-importer | ||||||
Priority: | P2 | Keywords: | InRadar | ||||||
Version: | WebKit Nightly Build | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
Attachments: |
|
Description
Tyler Wilcock
2022-01-13 10:01:10 PST
Created attachment 449077 [details]
Patch
(In reply to Tyler Wilcock from comment #2) > Created attachment 449077 [details] > Patch --- a/Source/WebCore/accessibility/AccessibilityObject.cpp +++ a/Source/WebCore/accessibility/AccessibilityObject.cpp +OptionSet<AXAncestorFlag> AccessibilityObject::computeAncestorFlagsWithTraversal() const +{ + OptionSet<AXAncestorFlag> computedFlags; + computedFlags.set(AXAncestorFlag::FlagsInitialized, true); Shouldn't we check that it hasn't been initialized yet? At least an ASSERT to catch it on debug? + Accessibility::enumerateAncestors<AXCoreObject>(*this, false, [&] (const AXCoreObject& ancestor) { + if (is<AccessibilityObject>(ancestor)) + computedFlags.add(downcast<AccessibilityObject>(ancestor).computeAncestorFlags()); Can't we use AccessibilityObject as template parameter? Or let the compiler infer the parameter? In either case, I don't think you would need is<> and the downcast. Created attachment 449120 [details]
Patch
Good points. Fixed both issues with the latest patch. Committed r288027 (246053@main): <https://commits.webkit.org/246053@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 449120 [details]. |