Guarding against null pointer exception when setting view structure info for content capture

Test: Manual, CTS
Bug: 189329389
Change-Id: Iaaacd59dc377079847951ab635df9bb602467390
This commit is contained in:
Mihir Patel
2021-06-22 11:35:32 -07:00
parent 3d44d6ed95
commit 987a2b4150

View File

@@ -11848,23 +11848,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);
}
}