summaryrefslogtreecommitdiff
path: root/core/java/android/widget/TextView.java
diff options
context:
space:
mode:
authorMihir Patel <mkpatel@google.com>2021-07-02 18:57:35 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-07-02 18:57:35 +0000
commitf52e4d13e2eaa567727ca720941eff0d88cefab0 (patch)
treece77157d4f806fea86124bc120e1fc6f89c8ae56 /core/java/android/widget/TextView.java
parent05be91f738299470aefaccb9ccb3e0a75ab0f19d (diff)
parentd27d3a5d90fe3d34761dc07cb150d50c36f69bcd (diff)
Merge "Guarding against null pointer exception when setting view structure info for content capture" into sc-dev am: 59fe064d75 am: d27d3a5d90
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15067633 Change-Id: I8170aa9134ad2cc50c0458c9ce817cfaf1150e3b
Diffstat (limited to 'core/java/android/widget/TextView.java')
-rw-r--r--core/java/android/widget/TextView.java35
1 files changed, 20 insertions, 15 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index d8031cc48a4d..fc85f1b9a91b 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -11869,23 +11869,28 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
// Get the text and trim it to the range we are reporting.
CharSequence text = getText();
- if (expandedTopChar > 0 || expandedBottomChar < text.length()) {
- text = text.subSequence(expandedTopChar, expandedBottomChar);
- }
- if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL) {
- structure.setText(text);
- } else {
- structure.setText(text, selStart - expandedTopChar, selEnd - expandedTopChar);
-
- final int[] lineOffsets = new int[bottomLine - topLine + 1];
- final int[] lineBaselines = new int[bottomLine - topLine + 1];
- final int baselineOffset = getBaselineOffset();
- for (int i = topLine; i <= bottomLine; i++) {
- lineOffsets[i - topLine] = layout.getLineStart(i);
- lineBaselines[i - topLine] = layout.getLineBaseline(i) + baselineOffset;
+ if (text != null) {
+ if (expandedTopChar > 0 || expandedBottomChar < text.length()) {
+ text = text.subSequence(expandedTopChar, expandedBottomChar);
+ }
+
+ if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL) {
+ structure.setText(text);
+ } else {
+ structure.setText(text,
+ selStart - expandedTopChar,
+ selEnd - expandedTopChar);
+
+ final int[] lineOffsets = new int[bottomLine - topLine + 1];
+ final int[] lineBaselines = new int[bottomLine - topLine + 1];
+ final int baselineOffset = getBaselineOffset();
+ for (int i = topLine; i <= bottomLine; i++) {
+ lineOffsets[i - topLine] = layout.getLineStart(i);
+ lineBaselines[i - topLine] = layout.getLineBaseline(i) + baselineOffset;
+ }
+ structure.setTextLines(lineOffsets, lineBaselines);
}
- structure.setTextLines(lineOffsets, lineBaselines);
}
}