DOMTest.java revision 6363e0f00cc7960545161fca809733f5ad64e8d3
1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Copyright (c) 2001-2003 World Wide Web Consortium, (Massachusetts Institute 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * of Technology, Institut National de Recherche en Informatique et en 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Automatique, Keio University). All Rights Reserved. This program is 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the W3C's Software Intellectual Property License. This 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * program is distributed in the hope that it will be useful, but WITHOUT ANY 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * FOR A PARTICULAR PURPOSE. See W3C License 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.w3.org/Consortium/Legal/ for more details. 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.w3c.domts; 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.File; 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.InputStream; 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.lang.reflect.Method; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.MalformedURLException; 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.net.URL; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.w3c.dom.DOMImplementation; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.w3c.dom.Document; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This is an abstract base class for generated DOM tests 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic abstract class DOMTest /* wBM: implements EventListener */ { 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private DOMTestDocumentBuilderFactory factory; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private int mutationCount = 0; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This is the appropriate constructor for tests that make no requirements 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * on the parser configuration. 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param factory 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * must not be null 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public DOMTest(DOMTestDocumentBuilderFactory factory) { 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (factory == null) { 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException("factory"); 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.factory = factory; 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This constructor is used by tests that must create a modified document 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * factory to meet requirements on the parser configuration. setFactory 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * should be called within the test's constructor. 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public DOMTest() { 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project factory = null; 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Should only be called in the constructor of a derived type. 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void setFactory(DOMTestDocumentBuilderFactory factory) { 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project this.factory = factory; 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean hasFeature(String feature, String version) { 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return factory.hasFeature(feature, version); 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean hasSetting(DocumentBuilderSetting setting) { 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return setting.hasSetting(factory); 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected DOMTestDocumentBuilderFactory getFactory() { 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return factory; 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public DOMImplementation getImplementation() { 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return factory.getDOMImplementation(); 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private URL resolveURI(String baseURI) throws DOMTestLoadException { 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String docURI = factory.addExtension(baseURI); 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project URL resolvedURI = null; 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project resolvedURI = new URL(docURI); 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (resolvedURI.getProtocol() != null) { 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return resolvedURI; 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project catch (MalformedURLException ex) { 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // throw new DOMTestLoadException(ex); 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // build a URL for a test file in the JAR 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project resolvedURI = getClass().getResource("/" + docURI); 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (resolvedURI == null) { 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // see if it is an absolute URI 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int firstSlash = docURI.indexOf('/'); 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (firstSlash == 0 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project || (firstSlash >= 1 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project && docURI.charAt(firstSlash - 1) == ':')) { 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project resolvedURI = new URL(docURI); 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else { 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // try the files/level?/spec directory 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String filename = getClass().getPackage().getName(); 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project filename = 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "tests/" 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + filename.substring(14).replace('.', '/') 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + "/files/" 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + docURI; 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project resolvedURI = new java.io.File(filename).toURL(); 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project catch (MalformedURLException ex) { 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new DOMTestLoadException(ex); 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (resolvedURI == null) { 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new DOMTestLoadException( 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new java.io.FileNotFoundException(docURI)); 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return resolvedURI; 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getResourceURI(String href, String scheme, String contentType) throws 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project DOMTestLoadException { 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (scheme == null) { 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException("scheme"); 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ("file".equals(scheme)) { 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return resolveURI(href).toString(); 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ("http".equals(scheme)) { 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project StringBuffer httpURL = new StringBuffer( 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.getProperty("org.w3c.domts.httpbase", 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "http://localhost:8080/webdav/")); 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpURL.append(href); 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ("application/pdf".equals(contentType)) { 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpURL.append(".pdf"); 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project else { 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project httpURL.append(".xml"); 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return httpURL.toString(); 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new DOMTestLoadException(new Exception("Unrecognized URI scheme " + 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project scheme)); 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String createTempURI(String scheme) throws DOMTestLoadException { 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (scheme == null) { 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new NullPointerException("scheme"); 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ("file".equals(scheme)) { 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project File tempFile = File.createTempFile("domts", ".xml"); 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if available use JDK 1.4's File.toURI().toString() 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 1686363e0f00cc7960545161fca809733f5ad64e8d3Elliott Hughes Method method = File.class.getMethod("toURI", (Class<?>) null); 1696363e0f00cc7960545161fca809733f5ad64e8d3Elliott Hughes Object uri = method.invoke(tempFile, (Class<?>) null); 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return uri.toString(); 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project catch (NoSuchMethodException ex) { 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // File.toURL is not as robust 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project URL url = tempFile.toURL(); 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return url.toString(); 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project catch (Exception ex) { 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new DOMTestLoadException(ex); 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ("http".equals(scheme)) { 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String httpBase = System.getProperty("org.w3c.domts.httpbase", 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "http://localhost:8080/webdav/"); 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project java.lang.StringBuffer buf = new StringBuffer(httpBase); 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!httpBase.endsWith("/")) { 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.append("/"); 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.append("tmp"); 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.append( (new java.util.Random()).nextInt(Integer.MAX_VALUE)); 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project buf.append(".xml"); 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return buf.toString(); 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new DOMTestLoadException(new Exception("Unrecognized URI scheme " + 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project scheme)); 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Document load(String docURI, boolean willBeModified) throws 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project DOMTestLoadException { 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Document doc = factory.load(resolveURI(docURI)); 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // if will be modified is false and doc is an EventTarget 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * wBM: if (!willBeModified && doc instanceof EventTarget) { 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * ((EventTarget) doc).addEventListener("DOMSubtreeModified", this, 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * false); } 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return doc; 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void preload(String contentType, String docURI, boolean willBeModified) throws 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project DOMTestIncompatibleException { 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if ("text/html".equals(contentType) || 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "application/xhtml+xml".equals(contentType)) { 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (docURI.startsWith("staff") || docURI.equals("datatype_normalization")) { 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw DOMTestIncompatibleException.incompatibleLoad(docURI, contentType); 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Object createXPathEvaluator(Document doc) { 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return factory.createXPathEvaluator(doc); 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public InputStream createStream(String bytes) throws DOMTestLoadException, 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IOException { 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int byteCount = bytes.length() / 2; 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] array = new byte[byteCount]; 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < byteCount; i++) { 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project array[i] = Byte.parseByte(bytes.substring(i * 2, i * 2 + 2), 16); 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new java.io.ByteArrayInputStream(array); 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project abstract public String getTargetURI(); 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final boolean isCoalescing() { 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return factory.isCoalescing(); 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final boolean isExpandEntityReferences() { 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return factory.isExpandEntityReferences(); 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final boolean isIgnoringElementContentWhitespace() { 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return factory.isIgnoringElementContentWhitespace(); 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final boolean isNamespaceAware() { 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return factory.isNamespaceAware(); 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final boolean isValidating() { 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return factory.isValidating(); 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final boolean isSigned() { 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return true; 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final boolean isHasNullString() { 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return true; 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final String getContentType() { 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return factory.getContentType(); 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Implementation of EventListener.handleEvent 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * This method is called when a mutation is reported for a document that 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * was declared to not be modified during testing 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param evt 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * mutation event 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /* 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * wBM: public final void handleEvent(Event evt) { mutationCount++; } 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public final int getMutationCount() { 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return mutationCount; 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 290