summaryrefslogtreecommitdiff
path: root/core/java/android/widget/TextView.java
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2021-08-13 22:04:32 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-08-13 22:04:32 +0000
commit8737b67e6eac0d24ef82c0a9c3185b0c1d4bd0e6 (patch)
treea056a0738ca0e37da5422ae353c4f9bf0fbaab30 /core/java/android/widget/TextView.java
parentf9884c0a1203f87f644b8f93e78d4770a86f899d (diff)
parentf7fb6c535e5bac9d1344f79d5982ff115a6164ba (diff)
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
Diffstat (limited to 'core/java/android/widget/TextView.java')
-rw-r--r--core/java/android/widget/TextView.java9
1 files changed, 9 insertions, 0 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index ca6e735f86b4..f5c1bcf2de42 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -11857,6 +11857,15 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
if (text != null) {
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);
}