19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17c2e9651bf386a1f7bf7fc706cf5424950570470cXavier Ducrohetpackage com.android.layoutlib.bridge.android; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1919a021038f2f4683dddef651543d7298f5bd7218Xavier Ducrohet 2019a021038f2f4683dddef651543d7298f5bd7218Xavier Ducrohetimport com.android.ide.common.rendering.api.ILayoutPullParser; 2104ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohetimport com.android.layoutlib.bridge.impl.ParserFactory; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.xmlpull.v1.XmlPullParser; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport org.xmlpull.v1.XmlPullParserException; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.XmlResourceParser; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet; 287f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohetimport android.util.BridgeXmlPullAttributes; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.IOException; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.InputStream; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.Reader; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link BridgeXmlBlockParser} reimplements most of android.xml.XmlBlock.Parser. 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * It delegates to both an instance of {@link XmlPullParser} and an instance of 377f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet * XmlPullAttributes (for the {@link AttributeSet} part). 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class BridgeXmlBlockParser implements XmlResourceParser { 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4101811aa86279af1b341a4fff344d66c0ebdd63daXavier Ducrohet private final XmlPullParser mParser; 427f9f99ea11051614a7727dfb9f9578b518e76e3cXavier Ducrohet private final BridgeXmlPullAttributes mAttrib; 4301811aa86279af1b341a4fff344d66c0ebdd63daXavier Ducrohet private final BridgeContext mContext; 4401811aa86279af1b341a4fff344d66c0ebdd63daXavier Ducrohet private final boolean mPlatformFile; 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private boolean mStarted = false; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private int mEventType = START_DOCUMENT; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4902d2b5a4031c80bfe1012ce2f4f7b3695762abd9Xavier Ducrohet private boolean mPopped = true; // default to true in case it's not pushed. 5002d2b5a4031c80bfe1012ce2f4f7b3695762abd9Xavier Ducrohet 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Builds a {@link BridgeXmlBlockParser}. 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param parser The XmlPullParser to get the content from. 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param context the Context. 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param platformFile Indicates whether the the file is a platform file or not. 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public BridgeXmlBlockParser(XmlPullParser parser, BridgeContext context, boolean platformFile) { 5804ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet if (ParserFactory.LOG_PARSER) { 5904ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet System.out.println("CRTE " + parser.toString()); 6004ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet } 6104ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mParser = parser; 6355acd60be3c027c224a74290df7bedc1a80c669fXavier Ducrohet mContext = context; 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mPlatformFile = platformFile; 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mAttrib = new BridgeXmlPullAttributes(parser, context, mPlatformFile); 6655acd60be3c027c224a74290df7bedc1a80c669fXavier Ducrohet 679223b6737c56619c02125ce988bb21fc4fde264bXavier Ducrohet if (mContext != null) { 689223b6737c56619c02125ce988bb21fc4fde264bXavier Ducrohet mContext.pushParser(this); 6902d2b5a4031c80bfe1012ce2f4f7b3695762abd9Xavier Ducrohet mPopped = false; 709223b6737c56619c02125ce988bb21fc4fde264bXavier Ducrohet } 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 7255acd60be3c027c224a74290df7bedc1a80c669fXavier Ducrohet 7304ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet public XmlPullParser getParser() { 7404ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return mParser; 7504ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet } 7604ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isPlatformFile() { 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mPlatformFile; 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8119a021038f2f4683dddef651543d7298f5bd7218Xavier Ducrohet public Object getViewCookie() { 8219a021038f2f4683dddef651543d7298f5bd7218Xavier Ducrohet if (mParser instanceof ILayoutPullParser) { 8319a021038f2f4683dddef651543d7298f5bd7218Xavier Ducrohet return ((ILayoutPullParser)mParser).getViewCookie(); 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8855acd60be3c027c224a74290df7bedc1a80c669fXavier Ducrohet 8902d2b5a4031c80bfe1012ce2f4f7b3695762abd9Xavier Ducrohet public void ensurePopped() { 9002d2b5a4031c80bfe1012ce2f4f7b3695762abd9Xavier Ducrohet if (mContext != null && mPopped == false) { 9102d2b5a4031c80bfe1012ce2f4f7b3695762abd9Xavier Ducrohet mContext.popParser(); 9202d2b5a4031c80bfe1012ce2f4f7b3695762abd9Xavier Ducrohet mPopped = true; 9302d2b5a4031c80bfe1012ce2f4f7b3695762abd9Xavier Ducrohet } 9402d2b5a4031c80bfe1012ce2f4f7b3695762abd9Xavier Ducrohet } 9502d2b5a4031c80bfe1012ce2f4f7b3695762abd9Xavier Ducrohet 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // ------- XmlResourceParser implementation 9755acd60be3c027c224a74290df7bedc1a80c669fXavier Ducrohet 9846d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setFeature(String name, boolean state) 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws XmlPullParserException { 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (FEATURE_PROCESS_NAMESPACES.equals(name) && state) { 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (FEATURE_REPORT_NAMESPACE_ATTRIBUTES.equals(name) && state) { 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return; 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new XmlPullParserException("Unsupported feature: " + name); 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 11046d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getFeature(String name) { 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (FEATURE_PROCESS_NAMESPACES.equals(name)) { 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (FEATURE_REPORT_NAMESPACE_ATTRIBUTES.equals(name)) { 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return true; 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12146d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setProperty(String name, Object value) throws XmlPullParserException { 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new XmlPullParserException("setProperty() not supported"); 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 12646d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Object getProperty(String name) { 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13146d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setInput(Reader in) throws XmlPullParserException { 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mParser.setInput(in); 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 13646d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setInput(InputStream inputStream, String inputEncoding) 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws XmlPullParserException { 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mParser.setInput(inputStream, inputEncoding); 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14246d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void defineEntityReplacementText(String entityName, 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String replacementText) throws XmlPullParserException { 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new XmlPullParserException( 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project "defineEntityReplacementText() not supported"); 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 14946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getNamespacePrefix(int pos) throws XmlPullParserException { 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new XmlPullParserException("getNamespacePrefix() not supported"); 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15446d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getInputEncoding() { 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 15946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getNamespace(String prefix) { 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException("getNamespace() not supported"); 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16446d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getNamespaceCount(int depth) throws XmlPullParserException { 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new XmlPullParserException("getNamespaceCount() not supported"); 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getPositionDescription() { 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "Binary XML file line #" + getLineNumber(); 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17446d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getNamespaceUri(int pos) throws XmlPullParserException { 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new XmlPullParserException("getNamespaceUri() not supported"); 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getColumnNumber() { 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return -1; 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18446d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getDepth() { 18655acd60be3c027c224a74290df7bedc1a80c669fXavier Ducrohet return mParser.getDepth(); 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getText() { 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mParser.getText(); 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19446d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getLineNumber() { 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mParser.getLineNumber(); 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getEventType() { 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mEventType; 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20446d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isWhitespace() throws XmlPullParserException { 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Original comment: whitespace was stripped by aapt. 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mParser.isWhitespace(); 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21046d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getPrefix() { 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException("getPrefix not supported"); 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21546d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public char[] getTextCharacters(int[] holderForStartAndLength) { 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String txt = getText(); 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project char[] chars = null; 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (txt != null) { 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project holderForStartAndLength[0] = 0; 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project holderForStartAndLength[1] = txt.length(); 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project chars = new char[txt.length()]; 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project txt.getChars(0, txt.length(), chars, 0); 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return chars; 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 22846d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getNamespace() { 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mParser.getNamespace(); 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23346d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getName() { 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mParser.getName(); 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23846d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getAttributeNamespace(int index) { 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mParser.getAttributeNamespace(index); 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24346d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getAttributeName(int index) { 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mParser.getAttributeName(index); 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 24846d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getAttributePrefix(int index) { 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new RuntimeException("getAttributePrefix not supported"); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25346d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isEmptyElementTag() { 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // XXX Need to detect this. 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 25946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAttributeCount() { 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mParser.getAttributeCount(); 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26446d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getAttributeValue(int index) { 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mParser.getAttributeValue(index); 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getAttributeType(int index) { 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return "CDATA"; 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 27446d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean isAttributeDefault(int index) { 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 27946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int nextToken() throws XmlPullParserException, IOException { 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return next(); 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28446d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getAttributeValue(String namespace, String name) { 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mParser.getAttributeValue(namespace, name); 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int next() throws XmlPullParserException, IOException { 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (!mStarted) { 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mStarted = true; 29304ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet 29404ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet if (ParserFactory.LOG_PARSER) { 29504ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet System.out.println("STRT " + mParser.toString()); 29604ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet } 29704ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return START_DOCUMENT; 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 30004ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int ev = mParser.next(); 30255acd60be3c027c224a74290df7bedc1a80c669fXavier Ducrohet 30304ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet if (ParserFactory.LOG_PARSER) { 30404ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet System.out.println("NEXT " + mParser.toString() + " " + 30504ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet eventTypeToString(mEventType) + " -> " + eventTypeToString(ev)); 30604ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet } 30704ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet 30802d2b5a4031c80bfe1012ce2f4f7b3695762abd9Xavier Ducrohet if (ev == END_TAG && mParser.getDepth() == 1) { 30955acd60be3c027c224a74290df7bedc1a80c669fXavier Ducrohet // done with parser remove it from the context stack. 31002d2b5a4031c80bfe1012ce2f4f7b3695762abd9Xavier Ducrohet ensurePopped(); 31104ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet 31204ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet if (ParserFactory.LOG_PARSER) { 31304ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet System.out.println(""); 31404ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet } 3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 31604ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet 3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mEventType = ev; 3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ev; 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 32104ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet public static String eventTypeToString(int eventType) { 32204ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet switch (eventType) { 32304ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet case START_DOCUMENT: 32404ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return "START_DOC"; 32504ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet case END_DOCUMENT: 32604ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return "END_DOC"; 32704ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet case START_TAG: 32804ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return "START_TAG"; 32904ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet case END_TAG: 33004ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return "END_TAG"; 33104ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet case TEXT: 33204ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return "TEXT"; 33304ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet case CDSECT: 33404ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return "CDSECT"; 33504ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet case ENTITY_REF: 33604ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return "ENTITY_REF"; 33704ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet case IGNORABLE_WHITESPACE: 33804ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return "IGNORABLE_WHITESPACE"; 33904ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet case PROCESSING_INSTRUCTION: 34004ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return "PROCESSING_INSTRUCTION"; 34104ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet case COMMENT: 34204ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return "COMMENT"; 34304ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet case DOCDECL: 34404ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return "DOCDECL"; 34504ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet } 34604ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet 34704ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet return "????"; 34804ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet } 34904ce81113107d2bfa0b8248b13145b4cf24cb943Xavier Ducrohet 35046d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void require(int type, String namespace, String name) 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws XmlPullParserException { 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (type != getEventType() 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project || (namespace != null && !namespace.equals(getNamespace())) 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project || (name != null && !name.equals(getName()))) 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new XmlPullParserException("expected " + TYPES[type] 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + getPositionDescription()); 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 36046d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String nextText() throws XmlPullParserException, IOException { 3629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (getEventType() != START_TAG) { 3639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new XmlPullParserException(getPositionDescription() 3649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + ": parser must be on START_TAG to read next text", this, 3659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project null); 3669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int eventType = next(); 3689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (eventType == TEXT) { 3699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String result = getText(); 3709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventType = next(); 3719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (eventType != END_TAG) { 3729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new XmlPullParserException( 3739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project getPositionDescription() 3749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + ": event TEXT it must be immediately followed by END_TAG", 3759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this, null); 3769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return result; 3789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else if (eventType == END_TAG) { 3799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ""; 3809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 3819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new XmlPullParserException(getPositionDescription() 3829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + ": parser must be on START_TAG or TEXT to read text", 3839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project this, null); 3849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 38746d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 3889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int nextTag() throws XmlPullParserException, IOException { 3899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int eventType = next(); 3909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (eventType == TEXT && isWhitespace()) { // skip whitespace 3919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project eventType = next(); 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (eventType != START_TAG && eventType != END_TAG) { 3949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throw new XmlPullParserException(getPositionDescription() 3959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project + ": expected start or end tag", this, null); 3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return eventType; 3989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 3999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // AttributeSet implementation 4019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 40255acd60be3c027c224a74290df7bedc1a80c669fXavier Ducrohet 40346d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void close() { 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // pass 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 40846d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getAttributeBooleanValue(int index, boolean defaultValue) { 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeBooleanValue(index, defaultValue); 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 41346d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean getAttributeBooleanValue(String namespace, String attribute, 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project boolean defaultValue) { 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeBooleanValue(namespace, attribute, defaultValue); 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 41946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getAttributeFloatValue(int index, float defaultValue) { 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeFloatValue(index, defaultValue); 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 42446d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public float getAttributeFloatValue(String namespace, String attribute, float defaultValue) { 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeFloatValue(namespace, attribute, defaultValue); 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 42946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAttributeIntValue(int index, int defaultValue) { 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeIntValue(index, defaultValue); 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 43446d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAttributeIntValue(String namespace, String attribute, int defaultValue) { 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeIntValue(namespace, attribute, defaultValue); 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 43946d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAttributeListValue(int index, String[] options, int defaultValue) { 4419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeListValue(index, options, defaultValue); 4429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 44446d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAttributeListValue(String namespace, String attribute, 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String[] options, int defaultValue) { 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeListValue(namespace, attribute, options, defaultValue); 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 45046d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAttributeNameResource(int index) { 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeNameResource(index); 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 45546d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAttributeResourceValue(int index, int defaultValue) { 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeResourceValue(index, defaultValue); 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 46046d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAttributeResourceValue(String namespace, String attribute, int defaultValue) { 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeResourceValue(namespace, attribute, defaultValue); 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 46546d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAttributeUnsignedIntValue(int index, int defaultValue) { 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeUnsignedIntValue(index, defaultValue); 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 47046d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getAttributeUnsignedIntValue(String namespace, String attribute, int defaultValue) { 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getAttributeUnsignedIntValue(namespace, attribute, defaultValue); 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 47546d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getClassAttribute() { 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getClassAttribute(); 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 48046d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String getIdAttribute() { 4829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getIdAttribute(); 4839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 48546d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getIdAttributeResourceValue(int defaultValue) { 4879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getIdAttributeResourceValue(defaultValue); 4889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 49046d43ccfd8cef75b4315828073c094cf1efb05ffXavier Ducrohet @Override 4919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int getStyleAttribute() { 4929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return mAttrib.getStyleAttribute(); 4939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 495