In Blink, when a static text node changes, we fire an accessibility event that contains the new value of that node, but without information on what characters actually changed.
Because we lack this information, we have code in Windows, Mac, Android, and Chrome OS accessibility code that diffs the previous and current text of a node to determine what characters changed.
Some examples of cases where this fails:
1. Select the text "Hello", start typing a new word that also starts with an "H". It looks like we deleted the letters "ello", but we actually deleted "Hello" and inserted "H", which is subtly different.
2. Arrow through autocomplete suggestions. The first suggestion is "Thomas the Train", the second is "Train tracks". The diff makes it look like "homas the Train" was replaced with "rain tracks", but really the whole string was replaced.
3. Run a spell-checker, it replaces the word "crhome" with "chrome". Our code thinks that "rh" was replaced with "hr", but really it should say that "crhome" was replaced with "chrome".
There are many other examples.
See related bug 793365.
Comment 1 by leberly@chromium.org
, Dec 14 2017