Use XmlPullParser interface instead of XmlResourceParser
Change-Id: I00e8a82aaaf5fec1e27707bce0a82cbfd1bc9fae
This commit is contained in:
parent
afb9076503
commit
406a54f41c
3 changed files with 33 additions and 32 deletions
|
@ -18,7 +18,6 @@ package com.android.inputmethod.keyboard;
|
||||||
|
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.content.res.XmlResourceParser;
|
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
@ -34,6 +33,8 @@ import com.android.inputmethod.keyboard.internal.KeyboardParams;
|
||||||
import com.android.inputmethod.keyboard.internal.MoreKeySpecParser;
|
import com.android.inputmethod.keyboard.internal.MoreKeySpecParser;
|
||||||
import com.android.inputmethod.latin.R;
|
import com.android.inputmethod.latin.R;
|
||||||
|
|
||||||
|
import org.xmlpull.v1.XmlPullParser;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -206,7 +207,7 @@ public class Key {
|
||||||
* @param keyStyles active key styles set
|
* @param keyStyles active key styles set
|
||||||
*/
|
*/
|
||||||
public Key(Resources res, KeyboardParams params, KeyboardBuilder.Row row,
|
public Key(Resources res, KeyboardParams params, KeyboardBuilder.Row row,
|
||||||
XmlResourceParser parser, KeyStyles keyStyles) {
|
XmlPullParser parser, KeyStyles keyStyles) {
|
||||||
final float horizontalGap = isSpacer() ? 0 : params.mHorizontalGap;
|
final float horizontalGap = isSpacer() ? 0 : params.mHorizontalGap;
|
||||||
final int keyHeight = row.mRowHeight;
|
final int keyHeight = row.mRowHeight;
|
||||||
mVerticalGap = params.mVerticalGap;
|
mVerticalGap = params.mVerticalGap;
|
||||||
|
@ -536,7 +537,7 @@ public class Key {
|
||||||
|
|
||||||
public static class Spacer extends Key {
|
public static class Spacer extends Key {
|
||||||
public Spacer(Resources res, KeyboardParams params, KeyboardBuilder.Row row,
|
public Spacer(Resources res, KeyboardParams params, KeyboardBuilder.Row row,
|
||||||
XmlResourceParser parser, KeyStyles keyStyles) {
|
XmlPullParser parser, KeyStyles keyStyles) {
|
||||||
super(res, params, row, parser, keyStyles);
|
super(res, params, row, parser, keyStyles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,12 +17,13 @@
|
||||||
package com.android.inputmethod.keyboard.internal;
|
package com.android.inputmethod.keyboard.internal;
|
||||||
|
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.content.res.XmlResourceParser;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.inputmethod.keyboard.internal.KeyboardBuilder.ParseException;
|
import com.android.inputmethod.keyboard.internal.KeyboardBuilder.ParseException;
|
||||||
import com.android.inputmethod.latin.R;
|
import com.android.inputmethod.latin.R;
|
||||||
|
|
||||||
|
import org.xmlpull.v1.XmlPullParser;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
@ -210,7 +211,7 @@ public class KeyStyles {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void parseKeyStyleAttributes(TypedArray keyStyleAttr, TypedArray keyAttrs,
|
public void parseKeyStyleAttributes(TypedArray keyStyleAttr, TypedArray keyAttrs,
|
||||||
XmlResourceParser parser) {
|
XmlPullParser parser) {
|
||||||
final String styleName = keyStyleAttr.getString(R.styleable.Keyboard_KeyStyle_styleName);
|
final String styleName = keyStyleAttr.getString(R.styleable.Keyboard_KeyStyle_styleName);
|
||||||
if (DEBUG) Log.d(TAG, String.format("<%s styleName=%s />",
|
if (DEBUG) Log.d(TAG, String.format("<%s styleName=%s />",
|
||||||
KeyboardBuilder.TAG_KEY_STYLE, styleName));
|
KeyboardBuilder.TAG_KEY_STYLE, styleName));
|
||||||
|
|
|
@ -19,7 +19,6 @@ package com.android.inputmethod.keyboard.internal;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.content.res.TypedArray;
|
import android.content.res.TypedArray;
|
||||||
import android.content.res.XmlResourceParser;
|
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
|
@ -160,7 +159,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
// Will be updated by {@link Key}'s constructor.
|
// Will be updated by {@link Key}'s constructor.
|
||||||
private float mCurrentX;
|
private float mCurrentX;
|
||||||
|
|
||||||
public Row(Resources res, KeyboardParams params, XmlResourceParser parser, int y) {
|
public Row(Resources res, KeyboardParams params, XmlPullParser parser, int y) {
|
||||||
mParams = params;
|
mParams = params;
|
||||||
TypedArray keyboardAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
|
TypedArray keyboardAttr = res.obtainAttributes(Xml.asAttributeSet(parser),
|
||||||
R.styleable.Keyboard);
|
R.styleable.Keyboard);
|
||||||
|
@ -291,7 +290,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
|
|
||||||
private void parseKeyboard(int resId) throws XmlPullParserException, IOException {
|
private void parseKeyboard(int resId) throws XmlPullParserException, IOException {
|
||||||
if (DEBUG) Log.d(TAG, String.format("<%s> %s", TAG_KEYBOARD, mParams.mId));
|
if (DEBUG) Log.d(TAG, String.format("<%s> %s", TAG_KEYBOARD, mParams.mId));
|
||||||
final XmlResourceParser parser = mResources.getXml(resId);
|
final XmlPullParser parser = mResources.getXml(resId);
|
||||||
int event;
|
int event;
|
||||||
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
|
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
|
||||||
if (event == XmlPullParser.START_TAG) {
|
if (event == XmlPullParser.START_TAG) {
|
||||||
|
@ -311,7 +310,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
public static String parseKeyboardLocale(
|
public static String parseKeyboardLocale(
|
||||||
Context context, int resId) throws XmlPullParserException, IOException {
|
Context context, int resId) throws XmlPullParserException, IOException {
|
||||||
final Resources res = context.getResources();
|
final Resources res = context.getResources();
|
||||||
final XmlResourceParser parser = res.getXml(resId);
|
final XmlPullParser parser = res.getXml(resId);
|
||||||
if (parser == null) return "";
|
if (parser == null) return "";
|
||||||
int event;
|
int event;
|
||||||
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
|
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
|
||||||
|
@ -329,7 +328,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseKeyboardAttributes(XmlResourceParser parser) {
|
private void parseKeyboardAttributes(XmlPullParser parser) {
|
||||||
final int displayWidth = mDisplayMetrics.widthPixels;
|
final int displayWidth = mDisplayMetrics.widthPixels;
|
||||||
final TypedArray keyboardAttr = mContext.obtainStyledAttributes(
|
final TypedArray keyboardAttr = mContext.obtainStyledAttributes(
|
||||||
Xml.asAttributeSet(parser), R.styleable.Keyboard, R.attr.keyboardStyle,
|
Xml.asAttributeSet(parser), R.styleable.Keyboard, R.attr.keyboardStyle,
|
||||||
|
@ -392,7 +391,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseKeyboardContent(XmlResourceParser parser, boolean skip)
|
private void parseKeyboardContent(XmlPullParser parser, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
int event;
|
int event;
|
||||||
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
|
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
|
||||||
|
@ -431,7 +430,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Row parseRowAttributes(XmlResourceParser parser) {
|
private Row parseRowAttributes(XmlPullParser parser) {
|
||||||
final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser),
|
final TypedArray a = mResources.obtainAttributes(Xml.asAttributeSet(parser),
|
||||||
R.styleable.Keyboard);
|
R.styleable.Keyboard);
|
||||||
try {
|
try {
|
||||||
|
@ -445,7 +444,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseRowContent(XmlResourceParser parser, Row row, boolean skip)
|
private void parseRowContent(XmlPullParser parser, Row row, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
int event;
|
int event;
|
||||||
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
|
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
|
||||||
|
@ -484,7 +483,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseKey(XmlResourceParser parser, Row row, boolean skip)
|
private void parseKey(XmlPullParser parser, Row row, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
if (skip) {
|
if (skip) {
|
||||||
checkEndTag(TAG_KEY, parser);
|
checkEndTag(TAG_KEY, parser);
|
||||||
|
@ -498,7 +497,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseSpacer(XmlResourceParser parser, Row row, boolean skip)
|
private void parseSpacer(XmlPullParser parser, Row row, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
if (skip) {
|
if (skip) {
|
||||||
checkEndTag(TAG_SPACER, parser);
|
checkEndTag(TAG_SPACER, parser);
|
||||||
|
@ -510,17 +509,17 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseIncludeKeyboardContent(XmlResourceParser parser, boolean skip)
|
private void parseIncludeKeyboardContent(XmlPullParser parser, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
parseIncludeInternal(parser, null, skip);
|
parseIncludeInternal(parser, null, skip);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseIncludeRowContent(XmlResourceParser parser, Row row, boolean skip)
|
private void parseIncludeRowContent(XmlPullParser parser, Row row, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
parseIncludeInternal(parser, row, skip);
|
parseIncludeInternal(parser, row, skip);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseIncludeInternal(XmlResourceParser parser, Row row, boolean skip)
|
private void parseIncludeInternal(XmlPullParser parser, Row row, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
if (skip) {
|
if (skip) {
|
||||||
checkEndTag(TAG_INCLUDE, parser);
|
checkEndTag(TAG_INCLUDE, parser);
|
||||||
|
@ -540,7 +539,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseMerge(XmlResourceParser parser, Row row, boolean skip)
|
private void parseMerge(XmlPullParser parser, Row row, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
int event;
|
int event;
|
||||||
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
|
while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) {
|
||||||
|
@ -561,17 +560,17 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseSwitchKeyboardContent(XmlResourceParser parser, boolean skip)
|
private void parseSwitchKeyboardContent(XmlPullParser parser, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
parseSwitchInternal(parser, null, skip);
|
parseSwitchInternal(parser, null, skip);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseSwitchRowContent(XmlResourceParser parser, Row row, boolean skip)
|
private void parseSwitchRowContent(XmlPullParser parser, Row row, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
parseSwitchInternal(parser, row, skip);
|
parseSwitchInternal(parser, row, skip);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseSwitchInternal(XmlResourceParser parser, Row row, boolean skip)
|
private void parseSwitchInternal(XmlPullParser parser, Row row, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
if (DEBUG) Log.d(TAG, String.format("<%s> %s", TAG_SWITCH, mParams.mId));
|
if (DEBUG) Log.d(TAG, String.format("<%s> %s", TAG_SWITCH, mParams.mId));
|
||||||
boolean selected = false;
|
boolean selected = false;
|
||||||
|
@ -598,7 +597,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean parseCase(XmlResourceParser parser, Row row, boolean skip)
|
private boolean parseCase(XmlPullParser parser, Row row, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
final boolean selected = parseCaseCondition(parser);
|
final boolean selected = parseCaseCondition(parser);
|
||||||
if (row == null) {
|
if (row == null) {
|
||||||
|
@ -611,7 +610,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
return selected;
|
return selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean parseCaseCondition(XmlResourceParser parser) {
|
private boolean parseCaseCondition(XmlPullParser parser) {
|
||||||
final KeyboardId id = mParams.mId;
|
final KeyboardId id = mParams.mId;
|
||||||
if (id == null)
|
if (id == null)
|
||||||
return true;
|
return true;
|
||||||
|
@ -718,7 +717,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean parseDefault(XmlResourceParser parser, Row row, boolean skip)
|
private boolean parseDefault(XmlPullParser parser, Row row, boolean skip)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
if (DEBUG) Log.d(TAG, String.format("<%s>", TAG_DEFAULT));
|
if (DEBUG) Log.d(TAG, String.format("<%s>", TAG_DEFAULT));
|
||||||
if (row == null) {
|
if (row == null) {
|
||||||
|
@ -729,7 +728,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void parseKeyStyle(XmlResourceParser parser, boolean skip) {
|
private void parseKeyStyle(XmlPullParser parser, boolean skip) {
|
||||||
TypedArray keyStyleAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
|
TypedArray keyStyleAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
|
||||||
R.styleable.Keyboard_KeyStyle);
|
R.styleable.Keyboard_KeyStyle);
|
||||||
TypedArray keyAttrs = mResources.obtainAttributes(Xml.asAttributeSet(parser),
|
TypedArray keyAttrs = mResources.obtainAttributes(Xml.asAttributeSet(parser),
|
||||||
|
@ -746,7 +745,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void checkEndTag(String tag, XmlResourceParser parser)
|
private static void checkEndTag(String tag, XmlPullParser parser)
|
||||||
throws XmlPullParserException, IOException {
|
throws XmlPullParserException, IOException {
|
||||||
if (parser.next() == XmlPullParser.END_TAG && tag.equals(parser.getName()))
|
if (parser.next() == XmlPullParser.END_TAG && tag.equals(parser.getName()))
|
||||||
return;
|
return;
|
||||||
|
@ -839,35 +838,35 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public static class ParseException extends InflateException {
|
public static class ParseException extends InflateException {
|
||||||
public ParseException(String msg, XmlResourceParser parser) {
|
public ParseException(String msg, XmlPullParser parser) {
|
||||||
super(msg + " at line " + parser.getLineNumber());
|
super(msg + " at line " + parser.getLineNumber());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
private static class IllegalStartTag extends ParseException {
|
private static class IllegalStartTag extends ParseException {
|
||||||
public IllegalStartTag(XmlResourceParser parser, String parent) {
|
public IllegalStartTag(XmlPullParser parser, String parent) {
|
||||||
super("Illegal start tag " + parser.getName() + " in " + parent, parser);
|
super("Illegal start tag " + parser.getName() + " in " + parent, parser);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
private static class IllegalEndTag extends ParseException {
|
private static class IllegalEndTag extends ParseException {
|
||||||
public IllegalEndTag(XmlResourceParser parser, String parent) {
|
public IllegalEndTag(XmlPullParser parser, String parent) {
|
||||||
super("Illegal end tag " + parser.getName() + " in " + parent, parser);
|
super("Illegal end tag " + parser.getName() + " in " + parent, parser);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
private static class IllegalAttribute extends ParseException {
|
private static class IllegalAttribute extends ParseException {
|
||||||
public IllegalAttribute(XmlResourceParser parser, String attribute) {
|
public IllegalAttribute(XmlPullParser parser, String attribute) {
|
||||||
super("Tag " + parser.getName() + " has illegal attribute " + attribute, parser);
|
super("Tag " + parser.getName() + " has illegal attribute " + attribute, parser);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
private static class NonEmptyTag extends ParseException {
|
private static class NonEmptyTag extends ParseException {
|
||||||
public NonEmptyTag(String tag, XmlResourceParser parser) {
|
public NonEmptyTag(String tag, XmlPullParser parser) {
|
||||||
super(tag + " must be empty tag", parser);
|
super(tag + " must be empty tag", parser);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue