Handle a broader range of machine configurations when creating the XMLParser for IE. Patch by: ajr Review by: me git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2607 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/xml/client/impl/XMLParserImplIE6.java b/user/src/com/google/gwt/xml/client/impl/XMLParserImplIE6.java index f95ac69..6389e68 100644 --- a/user/src/com/google/gwt/xml/client/impl/XMLParserImplIE6.java +++ b/user/src/com/google/gwt/xml/client/impl/XMLParserImplIE6.java
@@ -22,9 +22,25 @@ */ class XMLParserImplIE6 extends XMLParserImpl { + /** + * Called from JSNI to select a DOM document; this is necessary due to + * different versions of IE and Windows having different available DOM + * implementations. + */ + @SuppressWarnings("unused") + private static native JavaScriptObject selectDOMDocumentVersion() /*-{ + try { return new ActiveXObject("Msxml2.DOMDocument"); } catch (e) { } + try { return new ActiveXObject("MSXML.DOMDocument"); } catch (e) { } + try { return new ActiveXObject("MSXML3.DOMDocument"); } catch (e) { } + try { return new ActiveXObject("Microsoft.XmlDom"); } catch (e) { } + try { return new ActiveXObject("Microsoft.DOMDocument"); } catch (e) { } + + throw new Error("XMLParserImplIE6.createDocumentImpl: Could not find appropriate version of DOMDocument."); + }-*/; + @Override protected native JavaScriptObject createDocumentImpl() /*-{ - var doc = new ActiveXObject("MSXML2.DOMDocument"); + var doc = @com.google.gwt.xml.client.impl.XMLParserImplIE6::selectDOMDocumentVersion()(); doc.preserveWhiteSpace = true; doc.setProperty("SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'"); doc.setProperty("SelectionLanguage", "XPath");