summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuang Zhu <guangzhu@google.com>2014-10-13 18:45:35 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-10-13 18:45:35 +0000
commit61a929bd4642b9042bfb05b85340c1761ab90733 (patch)
tree341281deb67e3cd0218c42af5e063c6dac2f7132
parent328bfffbe4030217bf05c8a58f7c6621d31ceb74 (diff)
parent2b6d1da16a4e38a9704c2c67b33aadf44a85b1d2 (diff)
downloadtesting-61a929bd4642b9042bfb05b85340c1761ab90733.tar.gz
am 2b6d1da1: fix UI Automator dump tool issues
* commit '2b6d1da16a4e38a9704c2c67b33aadf44a85b1d2': fix UI Automator dump tool issues
-rw-r--r--uiautomator/library/core-src/com/android/uiautomator/core/AccessibilityNodeInfoDumper.java43
1 files changed, 20 insertions, 23 deletions
diff --git a/uiautomator/library/core-src/com/android/uiautomator/core/AccessibilityNodeInfoDumper.java b/uiautomator/library/core-src/com/android/uiautomator/core/AccessibilityNodeInfoDumper.java
index 63c51e8..59616c8 100644
--- a/uiautomator/library/core-src/com/android/uiautomator/core/AccessibilityNodeInfoDumper.java
+++ b/uiautomator/library/core-src/com/android/uiautomator/core/AccessibilityNodeInfoDumper.java
@@ -197,6 +197,11 @@ public class AccessibilityNodeInfoDumper {
for (int x = 0; x < childCount; x++) {
AccessibilityNodeInfo childNode = node.getChild(x);
+ if (childNode == null) {
+ Log.i(LOGTAG, String.format("Null child %d/%d, parent: %s",
+ x, childCount, node.toString()));
+ continue;
+ }
if (!safeCharSeqToString(childNode.getContentDescription()).isEmpty()
|| !safeCharSeqToString(childNode.getText()).isEmpty())
return true;
@@ -216,34 +221,26 @@ public class AccessibilityNodeInfoDumper {
}
private static String stripInvalidXMLChars(CharSequence cs) {
- StringBuffer ret = new StringBuffer();
+ StringBuilder ret = new StringBuilder();
char ch;
- /* http://www.w3.org/TR/xml11/#charsets
- [#x1-#x8], [#xB-#xC], [#xE-#x1F], [#x7F-#x84], [#x86-#x9F], [#xFDD0-#xFDDF],
- [#x1FFFE-#x1FFFF], [#x2FFFE-#x2FFFF], [#x3FFFE-#x3FFFF],
- [#x4FFFE-#x4FFFF], [#x5FFFE-#x5FFFF], [#x6FFFE-#x6FFFF],
- [#x7FFFE-#x7FFFF], [#x8FFFE-#x8FFFF], [#x9FFFE-#x9FFFF],
- [#xAFFFE-#xAFFFF], [#xBFFFE-#xBFFFF], [#xCFFFE-#xCFFFF],
- [#xDFFFE-#xDFFFF], [#xEFFFE-#xEFFFF], [#xFFFFE-#xFFFFF],
- [#x10FFFE-#x10FFFF].
- */
for (int i = 0; i < cs.length(); i++) {
ch = cs.charAt(i);
- if((ch >= 0x1 && ch <= 0x8) || (ch >= 0xB && ch <= 0xC) || (ch >= 0xE && ch <= 0x1F) ||
- (ch >= 0x7F && ch <= 0x84) || (ch >= 0x86 && ch <= 0x9f) ||
- (ch >= 0xFDD0 && ch <= 0xFDDF) || (ch >= 0x1FFFE && ch <= 0x1FFFF) ||
- (ch >= 0x2FFFE && ch <= 0x2FFFF) || (ch >= 0x3FFFE && ch <= 0x3FFFF) ||
- (ch >= 0x4FFFE && ch <= 0x4FFFF) || (ch >= 0x5FFFE && ch <= 0x5FFFF) ||
- (ch >= 0x6FFFE && ch <= 0x6FFFF) || (ch >= 0x7FFFE && ch <= 0x7FFFF) ||
- (ch >= 0x8FFFE && ch <= 0x8FFFF) || (ch >= 0x9FFFE && ch <= 0x9FFFF) ||
- (ch >= 0xAFFFE && ch <= 0xAFFFF) || (ch >= 0xBFFFE && ch <= 0xBFFFF) ||
- (ch >= 0xCFFFE && ch <= 0xCFFFF) || (ch >= 0xDFFFE && ch <= 0xDFFFF) ||
- (ch >= 0xEFFFE && ch <= 0xEFFFF) || (ch >= 0xFFFFE && ch <= 0xFFFFF) ||
- (ch >= 0x10FFFE && ch <= 0x10FFFF))
- ret.append(".");
- else
+ // code below from Html#withinStyle, this is a temporary workaround because XML
+ // serializer does not support surrogates
+ if (ch >= 0xD800 && ch <= 0xDFFF) {
+ if (ch < 0xDC00 && i + 1 < cs.length()) {
+ char d = cs.charAt(i + 1);
+ if (d >= 0xDC00 && d <= 0xDFFF) {
+ i++;
+ ret.append("?");
+ }
+ }
+ } else if (ch > 0x7E || ch < ' ') {
+ ret.append("?");
+ } else {
ret.append(ch);
+ }
}
return ret.toString();
}