Reland "[A11y] Avoid queuing up a deferred update for every attached node."

This is a reland of commit de68001bf80113d11ff879405c41070b01602902

Reverted in CL:531819. Reason for revert: bug 326386227, failing All/DumpAccessibilityTreeTest.AccessibilityTableHeadersRowRoleDynamic/blink
Fix for test: restore the code that updates roles of <th> cells when sibling cells change.

Original change's description:
> [A11y] Avoid queuing up a deferred update for every attached node.
>
> This is a performance improvement that does not affect behavior.
>
> In many cases when a node is attached, there is no need to queue up
> work for later. Only queue deferred processing when needed.
> Note that ChildrenChanged() is called in many cases where there
> was already an AXObject, but these are deduped via
> nodes_with_pending_children_changed_.
>
> Bug: 324445636
> Change-Id: I93ca7da709bfcee37545edb395c209fcc594e443
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5311098
> Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
> Commit-Queue: Aaron Leventhal <aleventhal@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1263666}

Fixed: 324445636,326386227
Change-Id: I010c8abe71e8e103e762b15188c7262695047e93
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5317851
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: Aaron Leventhal <aleventhal@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1264243}
2 files changed
tree: 110f5a4a41a2d448a0c28a7b5200448e3cd1fd4d
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. codelabs/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. media/
  31. mojo/
  32. native_client_sdk/
  33. net/
  34. pdf/
  35. ppapi/
  36. printing/
  37. remoting/
  38. rlz/
  39. sandbox/
  40. services/
  41. skia/
  42. sql/
  43. storage/
  44. styleguide/
  45. testing/
  46. third_party/
  47. tools/
  48. ui/
  49. url/
  50. webkit/
  51. .clang-format
  52. .clang-tidy
  53. .clangd
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitallowed
  57. .gitattributes
  58. .gitignore
  59. .gitmodules
  60. .gn
  61. .mailmap
  62. .rustfmt.toml
  63. .vpython3
  64. .yapfignore
  65. ATL_OWNERS
  66. AUTHORS
  67. BUILD.gn
  68. CODE_OF_CONDUCT.md
  69. codereview.settings
  70. DEPS
  71. DIR_METADATA
  72. LICENSE
  73. LICENSE.chromium_os
  74. OWNERS
  75. PRESUBMIT.py
  76. PRESUBMIT_test.py
  77. PRESUBMIT_test_mocks.py
  78. README.md
  79. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure.

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.