1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (c) 2002 World Wide Web Consortium,
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (Massachusetts Institute of Technology, Institut National de
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Recherche en Informatique et en Automatique, Keio University). All
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Rights Reserved. This program is distributed under the W3C's Software
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Intellectual Property License. This program is distributed in the
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * hope that it will be useful, but WITHOUT ANY WARRANTY; without even
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * PURPOSE.
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See W3C License http://www.w3.org/Consortium/Legal/ for more details.
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.w3c.domts;
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.Constructor;
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.InvocationTargetException;
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.lang.reflect.Method;
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.ParserConfigurationException;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.SAXParser;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.xml.parsers.SAXParserFactory;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.DOMImplementation;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.w3c.dom.Document;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.AttributeList;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.Attributes;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.DocumentHandler;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.SAXException;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.xml.sax.helpers.DefaultHandler;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *   This class implements the generic parser and configuation
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *   class for the HTML DOM L2 implementation in Xerces-J
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class XercesHTML2DocumentBuilderFactory
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    extends DOMTestDocumentBuilderFactory {
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  private SAXParserFactory factory;
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  private Constructor htmlBuilderConstructor;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  private Method getHTMLDocumentMethod;
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  private DOMImplementation domImpl;
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  private static final Class[] NO_CLASSES = new Class[0];
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  private static final Object[] NO_OBJECTS = new Object[0];
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  /**
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project   * Creates a implementation of DOMTestDocumentBuilderFactory
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project   * using org.apache.html.dom.HTMLBuilder
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project   * @param settings array of settings, may be null.
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project   */
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  public XercesHTML2DocumentBuilderFactory(DocumentBuilderSetting[] settings) throws
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      DOMTestIncompatibleException {
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    super(settings);
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    try {
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      ClassLoader classLoader = ClassLoader.getSystemClassLoader();
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      Class htmlBuilderClass =
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          classLoader.loadClass("org.apache.html2.dom.HTMLBuilder");
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      htmlBuilderConstructor =
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          htmlBuilderClass.getConstructor(NO_CLASSES);
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      getHTMLDocumentMethod =
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          htmlBuilderClass.getMethod("getHTMLDocument", NO_CLASSES);
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      Class htmlDOMImpl =
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          classLoader.loadClass(
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          "org.apache.html2.dom.HTMLDOMImplementationImpl");
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      Method method =
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          htmlDOMImpl.getMethod("getHTMLDOMImplementation", NO_CLASSES);
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      domImpl = (DOMImplementation) method.invoke(null, NO_OBJECTS);
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      Class saxFactoryClass =
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          classLoader.loadClass(
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          "org.apache.xerces.jaxp.SAXParserFactoryImpl");
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      factory = (SAXParserFactory) saxFactoryClass.newInstance();
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    catch (InvocationTargetException ex) {
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      throw new DOMTestIncompatibleException(
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          ex.getTargetException(),
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          null);
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    catch (Exception ex) {
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      throw new DOMTestIncompatibleException(ex, null);
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    //
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    //    apply settings to selected document builder
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    //         may throw exception if incompatible
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    if (settings != null) {
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      for (int i = 0; i < settings.length; i++) {
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        //        settings[i].applySetting(factory);
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      }
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    try {
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      factory.newSAXParser();
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    catch (ParserConfigurationException ex) {
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      throw new DOMTestIncompatibleException(ex, null);
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    catch (SAXException ex) {
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      throw new DOMTestIncompatibleException(ex, null);
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  public DOMTestDocumentBuilderFactory newInstance(DocumentBuilderSetting[]
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      newSettings) throws DOMTestIncompatibleException {
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    if (newSettings == null) {
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      return this;
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    DocumentBuilderSetting[] mergedSettings = mergeSettings(newSettings);
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return new XercesHTML2DocumentBuilderFactory(mergedSettings);
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  private class HTMLHandler
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      extends DefaultHandler
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      implements AttributeList {
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private final DocumentHandler htmlBuilder;
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private final Method getHTMLDocumentMethod;
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Attributes currentAttributes;
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public HTMLHandler(
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Constructor htmlBuilderConstructor,
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Method getHTMLDocumentMethod) throws Exception {
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      htmlBuilder =
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          (DocumentHandler) htmlBuilderConstructor.newInstance(
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          new Object[0]);
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      this.getHTMLDocumentMethod = getHTMLDocumentMethod;
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void startDocument() throws SAXException {
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      htmlBuilder.startDocument();
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void endDocument() throws SAXException {
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      htmlBuilder.endDocument();
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void startElement(
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String uri,
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String localName,
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String qName,
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Attributes attributes) throws SAXException {
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      currentAttributes = attributes;
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      htmlBuilder.startElement(qName, this);
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void endElement(String uri, String localName, String qName) throws
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SAXException {
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      htmlBuilder.endElement(qName);
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void characters(char ch[], int start, int length) throws
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SAXException {
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      htmlBuilder.characters(ch, start, length);
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void ignorableWhitespace(char ch[], int start, int length) throws
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SAXException {
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      htmlBuilder.ignorableWhitespace(ch, start, length);
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void processingInstruction(String target, String data) throws
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SAXException {
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      htmlBuilder.processingInstruction(target, data);
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public Document getHTMLDocument() throws Exception {
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      return (Document) getHTMLDocumentMethod.invoke(
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          htmlBuilder,
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          NO_OBJECTS);
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public int getLength() {
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      return currentAttributes.getLength();
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String getName(int i) {
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      return currentAttributes.getQName(i);
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String getType(int i) {
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      return currentAttributes.getType(i);
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String getValue(int i) {
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      return currentAttributes.getValue(i);
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String getType(String name) {
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      return currentAttributes.getType(name);
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public String getValue(String name) {
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      return currentAttributes.getValue(name);
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  public Document load(java.net.URL url) throws DOMTestLoadException {
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    Document doc = null;
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    try {
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      SAXParser parser = factory.newSAXParser();
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      HTMLHandler handler =
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project          new HTMLHandler(htmlBuilderConstructor, getHTMLDocumentMethod);
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      parser.parse(url.toString(), handler);
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      doc = handler.getHTMLDocument();
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    catch (Exception ex) {
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project      throw new DOMTestLoadException(ex);
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return doc;
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  public DOMImplementation getDOMImplementation() {
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return domImpl;
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  public boolean hasFeature(String feature, String version) {
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return domImpl.hasFeature(feature, version);
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  public boolean isCoalescing() {
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return false;
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  public boolean isExpandEntityReferences() {
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return false;
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  public boolean isIgnoringElementContentWhitespace() {
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return false;
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  public boolean isNamespaceAware() {
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return factory.isNamespaceAware();
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  public boolean isValidating() {
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return factory.isValidating();
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  public static DocumentBuilderSetting[] getConfiguration1() {
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return new DocumentBuilderSetting[] {
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DocumentBuilderSetting.notCoalescing,
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DocumentBuilderSetting.notExpandEntityReferences,
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DocumentBuilderSetting.notIgnoringElementContentWhitespace,
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DocumentBuilderSetting.notNamespaceAware,
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DocumentBuilderSetting.notValidating};
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  public static DocumentBuilderSetting[] getConfiguration2() {
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    return new DocumentBuilderSetting[] {
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DocumentBuilderSetting.notCoalescing,
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DocumentBuilderSetting.expandEntityReferences,
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DocumentBuilderSetting.ignoringElementContentWhitespace,
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DocumentBuilderSetting.namespaceAware,
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        DocumentBuilderSetting.validating};
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project  }
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
262