Backlight OCR: Correctly handles changes to the accessibility state

When the Media App (AKA Backlight) is started while ChromeVox
or Select-To-Speak are off, any accessibility trees constructed will not
be received by any accessibility service.
The same bug occurs if while viewing a PDF, the ChromeVox user
turns CV off temporarily. Upon turning it back on, the PDF
will appear as empty.
So, when the assistive software is turned on we need
to resend any trees that had already been unsuccessfully sent.
Also, during the period when accessibility is turned off, we need
to release the memory used by the OCR Service, because it could be several MB.

Also took the opportunity:
1. Rename SetPdfOcrEnabledState to ToggleIsAccessibilityState because
that's what actually happens.
2. Remove the use of private inheritance because it's disallowed by
Google's C++ style guide.
3. Make some methods that were unnecessarily public private.

AX-Relnotes: Accessibility now works if ChromeVox is turned on after Media App is launched.
Change-Id: I1f87728f0665ebdc4d08c7e0bf9e3ba7b0364fa1
Fixed: 340953051
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5675351
Reviewed-by: Ramin Halavati <rhalavati@chromium.org>
Commit-Queue: Nektarios Paisios <nektar@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1363236}
7 files changed
tree: 0690bcb440e89bbd925983c504c4261eaad90727
  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. crypto/
  16. dbus/
  17. device/
  18. docs/
  19. extensions/
  20. fuchsia_web/
  21. gin/
  22. google_apis/
  23. google_update/
  24. gpu/
  25. headless/
  26. infra/
  27. ios/
  28. ipc/
  29. media/
  30. mojo/
  31. native_client_sdk/
  32. net/
  33. pdf/
  34. ppapi/
  35. printing/
  36. remoting/
  37. rlz/
  38. sandbox/
  39. services/
  40. skia/
  41. sql/
  42. storage/
  43. styleguide/
  44. testing/
  45. third_party/
  46. tools/
  47. ui/
  48. url/
  49. webkit/
  50. .clang-format
  51. .clang-tidy
  52. .clangd
  53. .git-blame-ignore-revs
  54. .gitallowed
  55. .gitattributes
  56. .gitignore
  57. .gitmodules
  58. .gn
  59. .mailmap
  60. .rustfmt.toml
  61. .vpython3
  62. .yapfignore
  63. ATL_OWNERS
  64. AUTHORS
  65. BUILD.gn
  66. CODE_OF_CONDUCT.md
  67. codereview.settings
  68. CPPLINT.cfg
  69. CRYPTO_OWNERS
  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.