In the accessibility code that exposes the accessibility tree to the various native platforms such as under content/browser/accessibility and ui/accessibility there are many cases when we work on text. For example we compute:
1. Positions in text, such as trying to find the next character in AXPosition::CreateNextCharacterPosition.
2. Count the number of characters in a piece of text, such as get_nCharacters in BrowserAccessibilityComWin.
3. Compare two pieces of text, such as in BrowserAccessibilityCocoa::computeTextEdit.
In all of those cases we don't support languages that use characters that are more than 16 bits because we use base::string16 and plain indices for the above computations.
We need to switch to using libICU like the rest of the codebase and use a text iterator for moving by character inside strings.
I don't believe that our automation code does any string handling but we need to investigate both the automation APIs and the ChromeVox codebase for the same issues. In the case of ChromeVox we need to figure out if the use of JavaScript on its own doesn't require any additional internationalization support.
Comment 1 by dmazz...@chromium.org
, Sep 5 2017