[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdenonbeta/kdom
From:       Frans Englich <frans.englich () telia ! com>
Date:       2005-05-12 18:30:10
Message-ID: 1115922610.512480.29387.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 412817 by englich:

Implement XPath specific tests in DOM 3 Core code.


 M  +3 -0      trunk/kdenonbeta/kdom/TODO  
 M  +1 -1      trunk/kdenonbeta/kdom/impl/DOMImplementationImpl.cc  
 M  +14 -4     trunk/kdenonbeta/kdom/impl/DocumentImpl.cc  
 M  +1 -1      trunk/kdenonbeta/kdom/impl/Makefile.am  
 M  +4 -0      trunk/kdenonbeta/kdom/impl/NamedNodeMapImpl.cc  
 M  +4 -0      trunk/kdenonbeta/kdom/impl/NodeImpl.cc  


--- trunk/kdenonbeta/kdom/TODO #412816:412817
@@ -86,6 +86,9 @@
 	is their own products, but for KDOM et al. should be created the product "kdom" with the
 	components "general", "xinclude", "catalog", and "kxmllint", possibly more.
 
+- What DOMImplementation::hasFeature() returns must be checked to only return what really is
+	standard comformant.
+
 Portability
 -----------
 
--- trunk/kdenonbeta/kdom/impl/DOMImplementationImpl.cc #412816:412817
@@ -81,7 +81,7 @@
 		upFeature == "MOUSEEVENTS" || upFeature == "MUTATIONEVENTS" ||
 		upFeature == "LS-ASYNC" || upFeature == "LS") &&
 	   (version == "1.0" || version == "2.0" || version == "3.0" ||
-	    version.isEmpty()))
+	    version.isEmpty()) || (feature == "XPATH" && version == "3.0"))
 		return true;
 
 	return false;
--- trunk/kdenonbeta/kdom/impl/DocumentImpl.cc #412816:412817
@@ -26,7 +26,7 @@
 
 #include "Ecma.h"
 #include "Attr.h"
-#include "kdom/Helper.h"
+#include "Helper.h"
 #include "TextImpl.h"
 #include "AttrImpl.h"
 #include "Namespace.h"
@@ -39,13 +39,14 @@
 #include "DocumentImpl.h"
 #include "DOMStringImpl.h"
 #include "XMLElementImpl.h"
+#include "XPathNamespace.h"
 #include "StyleSheetImpl.h"
 #include "TagNodeListImpl.h"
 #include "KDOMCacheHelper.h"
 #include "NamedNodeMapImpl.h"
 #include "CDATASectionImpl.h"
 #include "NodeIteratorImpl.h"
-#include "kdom/css/impl/CSSStyleSelector.h"
+#include "CSSStyleSelector.h"
 #include "DOMConfiguration.h"
 #include "DocumentTypeImpl.h"
 #include "CSSStyleSheetImpl.h"
@@ -385,7 +386,7 @@
 	if(!importedNode)
 		throw new DOMExceptionImpl(NOT_FOUND_ERR);
 
-	bool oldMode = implementation()->parsingMode();
+	const bool oldMode = implementation()->parsingMode();
 	implementation()->setParsingMode(true);
 
 	if(importedNode->nodeType() == ATTRIBUTE_NODE)
@@ -442,7 +443,10 @@
 		result = createCDATASection(importedCD->nodeValue());
 		deep = false;
 	}
-	else
+	else 
+	/* This includes XPathNamespace::XPATH_NAMESPACE_NODE, see:
+	 * http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226/xpath.html#XPathNamespace
+	 */
 		throw new DOMExceptionImpl(NOT_SUPPORTED_ERR);
 
 	if(deep)
@@ -717,6 +721,12 @@
 	if(nType == ENTITY_NODE || nType == NOTATION_NODE)
 		return 0;
 
+	/* According to DOM XPath 26 February 2004; see:
+	 * http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226/xpath.html#XPathNamespace
+	 */
+	if(nType == XPathNamespace::XPATH_NAMESPACE_NODE)
+		throw new DOMExceptionImpl(NOT_SUPPORTED_ERR);
+
 	if(source->parentNode())
 		source->parentNode()->removeChild(source);
 	else if(nType == ATTRIBUTE_NODE)
--- trunk/kdenonbeta/kdom/impl/Makefile.am #412816:412817
@@ -5,7 +5,7 @@
 	 -I$(top_srcdir)/kdom/views -I$(top_srcdir)/kdom/ecma \
 	 -I$(top_srcdir)/kdom/data -I$(top_srcdir)/kdom/css/impl \
 	 -I$(top_srcdir)/kdom/ls -I$(top_srcdir)/kdom/ls/impl \
-	 -I$(top_srcdir)/kdom/traversal/impl \
+	 -I$(top_srcdir)/kdom/traversal/impl -I$(top_srcdir)/kdom/xpath \
 	 -I$(top_srcdir)/kdom/events/impl -I$(top_srcdir)/kdom/cache \
 	 $(all_includes)
 
--- trunk/kdenonbeta/kdom/impl/NamedNodeMapImpl.cc #412816:412817
@@ -21,6 +21,7 @@
 */
 
 #include "DocumentImpl.h"
+#include "XPathNamespace.h"
 #include "NamedNodeMapImpl.h"
 #include "DOMImplementationImpl.h"
 
@@ -106,6 +107,9 @@
 	if(!arg)
 		throw new DOMExceptionImpl(NOT_FOUND_ERR);
 		
+	if(arg->nodeType() == XPathNamespace::XPATH_NAMESPACE_NODE)
+		throw new DOMExceptionImpl(HIERARCHY_REQUEST_ERR);
+
 	if(!isReadOnly())
 	{
 		addNode(arg);
--- trunk/kdenonbeta/kdom/impl/NodeImpl.cc #412816:412817
@@ -20,6 +20,7 @@
     Boston, MA 02111-1307, USA.
 */
 
+#include "XPathNamespace.h"
 #include "DOMExceptionImpl.h"
 #include "DOMImplementationImpl.h"
 #include "DocumentImpl.h"
@@ -683,6 +684,9 @@
 		if(!childAllowed(current, newChild))
 			throw new DOMExceptionImpl(HIERARCHY_REQUEST_ERR);
 	}
+
+	if(newChild->nodeType() == XPathNamespace::XPATH_NAMESPACE_NODE)
+		throw new DOMExceptionImpl(HIERARCHY_REQUEST_ERR);
 }
 
 void NodeBaseImpl::checkDocumentAddChild(NodeImpl *current, NodeImpl *newChild)
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic