[Read aloud] Fix highlighting when switching locales while reading

When the voice changes while reading, we stop speaking and then we send
the tts engine the rest of the sentence starting from the beginning of
the word that was last being read. The engine then sends us word
boundaries starting from the beginning of the text (i.e. index 0). This
is fine when we on the read aloud side are keeping track of where we are
in the original sentence. However, we were resetting all that
information when switching voices across locales because the new voice
might not support word boundaries.

Instead of resetting the whole state, this CL resets only the mode so
that if a boundary is detected with the new voice, we can keep our
place in the overall sentence. If the new voice does not support word
boundaries, the word boundary indices are irrelevant and will be reset
on the next sentence.

Fixed: 406809469
Change-Id: I7d938643a07c392b33e22e9ecd21676650efdc4b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6825387
Reviewed-by: Lauren Winston <lwinston@google.com>
Auto-Submit: Kristi Saney <kristislee@google.com>
Commit-Queue: Kristi Saney <kristislee@google.com>
Cr-Commit-Position: refs/heads/main@{#1497880}
4 files changed
tree: f90d4ee9ecf5d89c976208ba8b245bfde3983ce1
  1. .gemini/
  2. .github/
  3. agents/
  4. android_webview/
  5. apps/
  6. ash/
  7. base/
  8. build/
  9. build_overrides/
  10. buildtools/
  11. cc/
  12. chrome/
  13. chromecast/
  14. chromeos/
  15. codelabs/
  16. components/
  17. content/
  18. crypto/
  19. dbus/
  20. device/
  21. docs/
  22. extensions/
  23. fuchsia_web/
  24. gin/
  25. google_apis/
  26. gpu/
  27. headless/
  28. infra/
  29. ios/
  30. ipc/
  31. media/
  32. mojo/
  33. net/
  34. pdf/
  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. .cursorignore
  54. .geminiignore
  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. CPPLINT.cfg
  71. CRYPTO_OWNERS
  72. DEPS
  73. DIR_METADATA
  74. LICENSE
  75. LICENSE.chromium_os
  76. OWNERS
  77. PRESUBMIT.py
  78. PRESUBMIT_test.py
  79. PRESUBMIT_test_mocks.py
  80. README.md
  81. SECURITY_OWNERS
  82. 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.