Skip to content

Commit b105bf5

Browse files
committed
Add a few safety checks to prevent NRE + refactoring
1 parent c8d6850 commit b105bf5

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

WordPressUtils/src/main/java/org/wordpress/android/util/helpers/WPHtmlTagHandler.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,37 +15,42 @@
1515
* Tweaked from source at http://stackoverflow.com/questions/4044509/android-how-to-use-the-html-taghandler
1616
*/
1717
public class WPHtmlTagHandler implements Html.TagHandler {
18+
19+
private static final int SPAN_INDENT_WIDTH = 15;
20+
1821
private int mListItemCount = 0;
1922
private List<String> mListParents = new ArrayList<>();
2023

2124
@Override
2225
public void handleTag(final boolean opening, final String tag, Editable output,
2326
final XMLReader xmlReader) {
24-
if (tag.equals("ul") || tag.equals("ol") || tag.equals("dd")) {
25-
if (opening) {
26-
mListParents.add(tag);
27-
} else {
28-
mListParents.remove(tag);
27+
if (tag != null) {
28+
if (tag.equals("ul") || tag.equals("ol") || tag.equals("dd")) {
29+
if (opening) {
30+
mListParents.add(tag);
31+
} else {
32+
mListParents.remove(tag);
33+
}
34+
mListItemCount = 0;
35+
} else if (tag.equals("li") && !opening) {
36+
handleListTag(output);
2937
}
30-
mListItemCount = 0;
31-
} else if (tag.equals("li") && !opening) {
32-
handleListTag(output);
3338
}
3439
}
3540

3641
private void handleListTag(Editable output) {
3742
int size = mListParents.size();
38-
if (size > 0) {
39-
if (mListParents.get(size - 1).equals("ul")) {
43+
if (size > 0 && output != null) {
44+
if ("ul".equals(mListParents.get(size - 1))) {
4045
output.append("\n");
4146
String[] split = output.toString().split("\n");
4247
int start = 0;
4348
if (split.length != 1) {
4449
int lastIndex = split.length - 1;
4550
start = output.length() - split[lastIndex].length() - 1;
4651
}
47-
output.setSpan(new BulletSpan(15 * mListParents.size()), start, output.length(), 0);
48-
} else if (mListParents.get(size - 1).equals("ol")) {
52+
output.setSpan(new BulletSpan(SPAN_INDENT_WIDTH * mListParents.size()), start, output.length(), 0);
53+
} else if ("ol".equals(mListParents.get(size - 1))) {
4954
mListItemCount++;
5055
output.append("\n");
5156
String[] split = output.toString().split("\n");
@@ -55,7 +60,7 @@ private void handleListTag(Editable output) {
5560
start = output.length() - split[lastIndex].length() - 1;
5661
}
5762
output.insert(start, mListItemCount + ". ");
58-
output.setSpan(new LeadingMarginSpan.Standard(15 * mListParents.size()), start,
63+
output.setSpan(new LeadingMarginSpan.Standard(SPAN_INDENT_WIDTH * mListParents.size()), start,
5964
output.length(), 0);
6065
}
6166
}

0 commit comments

Comments
 (0)