WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
234059
Decouple AXObjectCache handleChildrenChanged and postNotification.
https://bugs.webkit.org/show_bug.cgi?id=234059
Summary
Decouple AXObjectCache handleChildrenChanged and postNotification.
Andres Gonzalez
Reported
2021-12-08 18:42:05 PST
Decouple AXObjectCache handleChildrenChanged and postNotification.
Attachments
Patch
(6.17 KB, patch)
2021-12-08 19:05 PST
,
Andres Gonzalez
no flags
Details
Formatted Diff
Diff
Patch
(6.39 KB, patch)
2021-12-09 18:08 PST
,
Andres Gonzalez
no flags
Details
Formatted Diff
Diff
Patch
(14.72 KB, patch)
2021-12-13 17:48 PST
,
Andres Gonzalez
no flags
Details
Formatted Diff
Diff
Patch
(5.56 KB, patch)
2021-12-15 19:10 PST
,
Andres Gonzalez
no flags
Details
Formatted Diff
Diff
Patch
(8.10 KB, patch)
2022-02-09 11:30 PST
,
Andres Gonzalez
no flags
Details
Formatted Diff
Diff
Patch
(8.08 KB, patch)
2022-02-11 06:56 PST
,
Andres Gonzalez
no flags
Details
Formatted Diff
Diff
Patch
(8.09 KB, patch)
2022-02-13 13:22 PST
,
Andres Gonzalez
no flags
Details
Formatted Diff
Diff
Show Obsolete
(6)
View All
Add attachment
proposed patch, testcase, etc.
Radar WebKit Bug Importer
Comment 1
2021-12-08 18:42:44 PST
<
rdar://problem/86247404
>
Andres Gonzalez
Comment 2
2021-12-08 19:05:31 PST
Created
attachment 446484
[details]
Patch
chris fleizach
Comment 3
2021-12-09 11:27:08 PST
Comment on
attachment 446484
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=446484&action=review
> Source/WebCore/ChangeLog:12 > + notification (postNotification), which causes a doble deferral of these
doble > double
> Source/WebCore/ChangeLog:16 > + added or removed, before properties in the rsulting objects may be
rsulting > resulting
> Source/WebCore/ChangeLog:17 > + updated. This patch fixes this problem by making handleChildrenchanged
handleChildrenchanged > handleChildrenChanged
> Source/WebCore/accessibility/AXObjectCache.cpp:995 > + childrenChanged(parent->parentObject());
question here - if we're going up the parent chain telling things we need to update, do we need to process this subtree any further? if a parent has changed won't it recreate the entire subtree?
> Source/WebCore/accessibility/AXObjectCache.cpp:1801 > + handleChildrenChanged(*get(element->parentNode()));
we probably want to defer this along with the modal change or maybe deferModalChange should also implicitly handle children changed on the paren
Andres Gonzalez
Comment 4
2021-12-09 18:08:17 PST
Created
attachment 446647
[details]
Patch
Andres Gonzalez
Comment 5
2021-12-09 18:14:05 PST
(In reply to chris fleizach from
comment #3
)
> Comment on
attachment 446484
[details]
> Patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=446484&action=review
> > > Source/WebCore/ChangeLog:12 > > + notification (postNotification), which causes a doble deferral of these > > doble > double
Fixed.
> > > Source/WebCore/ChangeLog:16 > > + added or removed, before properties in the rsulting objects may be > > rsulting > resulting
Fixed.
> > > Source/WebCore/ChangeLog:17 > > + updated. This patch fixes this problem by making handleChildrenchanged > > handleChildrenchanged > handleChildrenChanged
Fixed.
> > > Source/WebCore/accessibility/AXObjectCache.cpp:995 > > + childrenChanged(parent->parentObject()); > > question here - if we're going up the parent chain telling things we need to > update, do we need to process this subtree any further? if a parent has > changed won't it recreate the entire subtree?
You're right. I thought we might need to go up the entire chain checking whether isIgnored had change, but it doesn't seem to be necessary, at least for the test cases we have.
> > > Source/WebCore/accessibility/AXObjectCache.cpp:1801 > > + handleChildrenChanged(*get(element->parentNode())); > > we probably want to defer this along with the modal change > or maybe deferModalChange should also implicitly handle children changed on > the paren
Done. thanks!
Andres Gonzalez
Comment 6
2021-12-13 17:48:48 PST
Created
attachment 447090
[details]
Patch
Andres Gonzalez
Comment 7
2021-12-15 19:10:16 PST
Created
attachment 447314
[details]
Patch
Andres Gonzalez
Comment 8
2022-02-09 11:30:06 PST
Created
attachment 451417
[details]
Patch
Tyler Wilcock
Comment 9
2022-02-09 11:54:55 PST
Comment on
attachment 451417
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=451417&action=review
> Source/WebCore/accessibility/AXObjectCache.cpp:1049 > + postPlatformNotification(&object, AXChildrenChanged);
Do we still need to post this notification since we now immediately handle this children changed event by calling AXObjectCache::childrenChanged and AXObjectCache::updateIsolatedTree?
Andres Gonzalez
Comment 10
2022-02-09 12:25:22 PST
(In reply to Tyler Wilcock from
comment #9
)
> Comment on
attachment 451417
[details]
> Patch > > View in context: >
https://bugs.webkit.org/attachment.cgi?id=451417&action=review
> > > Source/WebCore/accessibility/AXObjectCache.cpp:1049 > > + postPlatformNotification(&object, AXChildrenChanged); > > Do we still need to post this notification since we now immediately handle > this children changed event by calling AXObjectCache::childrenChanged and > AXObjectCache::updateIsolatedTree?
The naming isn't great here, but postPlatformNotification actually just fires the platform notification, as opposed to postNotification which is the one that causes changes in the state of the live tree and consequently in the isolated tree. That's why I see this as a decoupling between the handling the notification which means updating the trees state, and once that is done, notifying clients that something changed, which is postPlatformNotification.
Tyler Wilcock
Comment 11
2022-02-09 12:28:02 PST
(In reply to Andres Gonzalez from
comment #10
)
> (In reply to Tyler Wilcock from
comment #9
) > > Comment on
attachment 451417
[details]
> > Patch > > > > View in context: > >
https://bugs.webkit.org/attachment.cgi?id=451417&action=review
> > > > > Source/WebCore/accessibility/AXObjectCache.cpp:1049 > > > + postPlatformNotification(&object, AXChildrenChanged); > > > > Do we still need to post this notification since we now immediately handle > > this children changed event by calling AXObjectCache::childrenChanged and > > AXObjectCache::updateIsolatedTree? > > The naming isn't great here, but postPlatformNotification actually just > fires the platform notification, as opposed to postNotification which is the > one that causes changes in the state of the live tree and consequently in > the isolated tree. That's why I see this as a decoupling between the > handling the notification which means updating the trees state, and once > that is done, notifying clients that something changed, which is > postPlatformNotification.
Ahh, got it. Nice, yeah this seems like a good change.
chris fleizach
Comment 12
2022-02-10 17:16:08 PST
Comment on
attachment 451417
[details]
Patch looks good assuming tests pass now
Tyler Wilcock
Comment 13
2022-02-10 19:50:16 PST
I think somebody clicked the "Retry failed tests" button, but that won't include the latest changes from trunk that speed up the test. A new patch might have to be uploaded.
Andres Gonzalez
Comment 14
2022-02-11 06:56:23 PST
Created
attachment 451687
[details]
Patch
Andres Gonzalez
Comment 15
2022-02-13 13:22:09 PST
Created
attachment 451840
[details]
Patch
EWS
Comment 16
2022-02-13 19:50:11 PST
Committed
r289723
(
247208@main
): <
https://commits.webkit.org/247208@main
> All reviewed patches have been landed. Closing bug and clearing flags on
attachment 451840
[details]
.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug