Merge "Fix OOB crash in ContentCapture for translated views" into sc-dev am: f7fb6c535e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15546784

Change-Id: Iaa763bccd737636ec9eb3ed95877a19226d5d43a
This commit is contained in:
TreeHugger Robot
2021-08-13 22:04:32 +00:00
committed by Automerger Merge Worker

View File

@@ -11857,6 +11857,15 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
if (text != null) { if (text != null) {
if (expandedTopChar > 0 || expandedBottomChar < text.length()) { if (expandedTopChar > 0 || expandedBottomChar < text.length()) {
// Cap the offsets to avoid an OOB exception. That can happen if the
// displayed/layout text, on which these offsets are calculated, is longer
// than the original text (such as when the view is translated by the
// platform intelligence).
// TODO(b/196433694): Figure out how to better handle the offset
// calculations for this case (so we don't unnecessarily cutoff the original
// text, for example).
expandedTopChar = Math.min(expandedTopChar, text.length());
expandedBottomChar = Math.min(expandedBottomChar, text.length());
text = text.subSequence(expandedTopChar, expandedBottomChar); text = text.subSequence(expandedTopChar, expandedBottomChar);
} }