[go: nahoru, domu]

Used some methods from AXRoleProperties in AXObject

Throughout the browser process, characteristics of accessible objects are determined
by code in ui/accessibility/ax_role_properties.cc.
This patch uses some of this code in Blink and deletes
the Blink specific code from AXObject.
This makes the code more consistent between the browser and renderer,
as well as remove code duplication.

Issues identified and fixed:
1. IsClickable on the browser didn't include activatable objects,
such as text fields, meter elements and spin buttons.

For UI Automation, I carefully looked at
the list of roles that support the Invoke pattern at
https://docs.microsoft.com/en-us/windows/win32/winauto/uiauto-controlpatternmapping
I made sure that all activatable controls didn't accidentally get the Invoke pattern.

2. Virtual methods that were updated were also moved
to the cc file, per the C++ Style Guide
which says that virtual methods should not be inlined.
3. Methods in AXObject that determine the subclass type should be in their own block
in the header file, but many were not, so I moved them there.

I observed that layout tables are always included
in Blink, which is inconsistent from the browser's behavior.
However, I left any changes in this area for a future patch.

R=dmazzoni@chromium.org, aleventhal@chromium.org

Relnotes: N/A.
Change-Id: I19db307b258feb959ff68bcad40b7a7d1c39b9d5
Bug: 882660
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2167429
Commit-Queue: Nektarios Paisios <nektar@chromium.org>
Reviewed-by: Dominic Mazzoni <dmazzoni@chromium.org>
Auto-Submit: Nektarios Paisios <nektar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#765785}
24 files changed
tree: 1c24c23121428f3bd65494541a980ed5d7e1ab76
  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. cloud_print/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. jingle/
  31. media/
  32. mojo/
  33. native_client_sdk/
  34. net/
  35. pdf/
  36. ppapi/
  37. printing/
  38. remoting/
  39. rlz/
  40. sandbox/
  41. services/
  42. skia/
  43. sql/
  44. storage/
  45. styleguide/
  46. testing/
  47. third_party/
  48. tools/
  49. ui/
  50. url/
  51. weblayer/
  52. .clang-format
  53. .clang-tidy
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitattributes
  57. .gitignore
  58. .gn
  59. .vpython
  60. .vpython3
  61. .yapfignore
  62. AUTHORS
  63. BUILD.gn
  64. CODE_OF_CONDUCT.md
  65. codereview.settings
  66. DEPS
  67. ENG_REVIEW_OWNERS
  68. LICENSE
  69. LICENSE.chromium_os
  70. OWNERS
  71. PRESUBMIT.py
  72. PRESUBMIT_test.py
  73. PRESUBMIT_test_mocks.py
  74. README.md
  75. 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.

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.