RESOLVED FIXED Bug 173912
Safari's Speedometer score massively regresses when accessibility is enabled
https://bugs.webkit.org/show_bug.cgi?id=173912
Summary Safari's Speedometer score massively regresses when accessibility is enabled
Ryosuke Niwa
Reported 2017-06-28 00:22:19 PDT
When the accessibility tree is turned on, we trigger a synchronous layout in HTMLTextFormControlElement::setInnerTextValue. We need to avoid that. <rdar://problem/32686777>
Attachments
WIP (21.60 KB, patch)
2017-06-28 00:24 PDT, Ryosuke Niwa
no flags
WIP (10.28 KB, patch)
2017-06-28 00:26 PDT, Ryosuke Niwa
no flags
Fixes the bug (35.27 KB, patch)
2017-06-28 16:33 PDT, Ryosuke Niwa
no flags
Addressed Chris's comment (35.29 KB, patch)
2017-06-28 16:56 PDT, Ryosuke Niwa
no flags
Patch for landing (35.59 KB, patch)
2017-06-28 17:33 PDT, Ryosuke Niwa
no flags
Patch for landing (35.59 KB, patch)
2017-06-28 17:53 PDT, Ryosuke Niwa
no flags
Another GTK+/WPE build fix (35.60 KB, patch)
2017-06-28 18:49 PDT, Ryosuke Niwa
no flags
Patch for landing (35.06 KB, patch)
2017-06-28 19:00 PDT, Ryosuke Niwa
no flags
Ryosuke Niwa
Comment 1 2017-06-28 00:24:25 PDT
Ryosuke Niwa
Comment 2 2017-06-28 00:26:19 PDT
Ryosuke Niwa
Comment 3 2017-06-28 16:33:22 PDT
Created attachment 314067 [details] Fixes the bug
chris fleizach
Comment 4 2017-06-28 16:37:00 PDT
Comment on attachment 314067 [details] Fixes the bug View in context: https://bugs.webkit.org/attachment.cgi?id=314067&action=review > Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:699 > + auto *cache = m_object->axObjectCache(); we probably shouldn't assert cache here, it is possible to have a null cache (happens when our wrapper outlives the backing object), in which can we should return a nil value
Ryosuke Niwa
Comment 5 2017-06-28 16:48:36 PDT
Comment on attachment 314067 [details] Fixes the bug View in context: https://bugs.webkit.org/attachment.cgi?id=314067&action=review >> Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:699 >> + auto *cache = m_object->axObjectCache(); > > we probably shouldn't assert cache here, it is possible to have a null cache (happens when our wrapper outlives the backing object), in which can we should return a nil value Okay. I can fix that.
Ryosuke Niwa
Comment 6 2017-06-28 16:56:36 PDT
Created attachment 314070 [details] Addressed Chris's comment
chris fleizach
Comment 7 2017-06-28 17:03:22 PDT
Comment on attachment 314070 [details] Addressed Chris's comment View in context: https://bugs.webkit.org/attachment.cgi?id=314070&action=review small suggestions. otherwise change looks ok to me > Source/WebCore/accessibility/AXObjectCache.cpp:2170 > + textMarkerData.offset = 0; these few lines should be unnecessary now that you initialize them > Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:412 > + if (position.isNotNull()) { should use early return here
Ryosuke Niwa
Comment 8 2017-06-28 17:33:48 PDT
Created attachment 314074 [details] Patch for landing
Ryosuke Niwa
Comment 9 2017-06-28 17:33:56 PDT
Thanks for the review! (In reply to chris fleizach from comment #7) > Comment on attachment 314070 [details] > Addressed Chris's comment > > View in context: > https://bugs.webkit.org/attachment.cgi?id=314070&action=review > > small suggestions. otherwise change looks ok to me > > > Source/WebCore/accessibility/AXObjectCache.cpp:2170 > > + textMarkerData.offset = 0; > > these few lines should be unnecessary now that you initialize them Removed. > > Source/WebCore/accessibility/mac/AXObjectCacheMac.mm:412 > > + if (position.isNotNull()) { > > should use early return here Fixed.
Ryosuke Niwa
Comment 10 2017-06-28 17:34:07 PDT
Comment on attachment 314074 [details] Patch for landing Wait for EWS.
Ryosuke Niwa
Comment 11 2017-06-28 17:53:28 PDT
Created attachment 314075 [details] Patch for landing
Ryosuke Niwa
Comment 12 2017-06-28 17:53:38 PDT
Comment on attachment 314075 [details] Patch for landing Wait for EWS again.
Ryosuke Niwa
Comment 13 2017-06-28 18:49:15 PDT
Created attachment 314085 [details] Another GTK+/WPE build fix
Ryosuke Niwa
Comment 14 2017-06-28 19:00:23 PDT
Created attachment 314087 [details] Patch for landing
Ryosuke Niwa
Comment 15 2017-06-28 19:54:02 PDT
Daniel Bates
Comment 16 2017-07-15 20:52:31 PDT
(In reply to Ryosuke Niwa from comment #15) > Committed r218910: <http://trac.webkit.org/changeset/218910> I am able to hit ASSERT(LayoutDisallowedScope::isLayoutAllowed()), added in this commit, whenever I have VoiceOver enabled and update the value of text field. See bug #174559.
Daniel Bates
Comment 17 2017-07-15 20:54:15 PDT
(In reply to Daniel Bates from comment #16) > (In reply to Ryosuke Niwa from comment #15) > > Committed r218910: <http://trac.webkit.org/changeset/218910> > > I am able to hit ASSERT(LayoutDisallowedScope::isLayoutAllowed()), added in > this commit, whenever I have VoiceOver enabled and update the value of text > field. See bug #174559. *whenever I have VoiceOver enabled and update the value of a text field from a mouseup event listener.
Note You need to log in before you can comment on or make changes to this bug.