From bbf9418488a52e20d1363b0bd9e493738ec22820 Mon Sep 17 00:00:00 2001 From: "peterv%netscape.com" Date: Thu, 14 Mar 2002 15:13:03 +0000 Subject: [PATCH] Fix for bug 103235 (Implement DOM Level 3 XPath WD). r=sicking, sr=jst, a=dbaron. git-svn-id: svn://10.0.0.236/trunk@116555 18797224-902f-48f8-a5cc-f745e15eee43 --- .../source/xpath/XPathProcessor.cpp | 108 ------------------ .../source/xpath/XPathProcessor.h | 75 ------------ .../transformiix/source/xpath/nsNodeSet.cpp | 80 ------------- .../transformiix/source/xpath/nsNodeSet.h | 71 ------------ mozilla/xpinstall/packager/packages-mac | 1 + .../xpinstall/packager/packages-static-unix | 1 + .../xpinstall/packager/packages-static-win | 1 + mozilla/xpinstall/packager/packages-unix | 1 + mozilla/xpinstall/packager/packages-win | 1 + 9 files changed, 5 insertions(+), 334 deletions(-) delete mode 100644 mozilla/extensions/transformiix/source/xpath/XPathProcessor.cpp delete mode 100644 mozilla/extensions/transformiix/source/xpath/XPathProcessor.h delete mode 100644 mozilla/extensions/transformiix/source/xpath/nsNodeSet.cpp delete mode 100644 mozilla/extensions/transformiix/source/xpath/nsNodeSet.h diff --git a/mozilla/extensions/transformiix/source/xpath/XPathProcessor.cpp b/mozilla/extensions/transformiix/source/xpath/XPathProcessor.cpp deleted file mode 100644 index ede2ddaaa9a..00000000000 --- a/mozilla/extensions/transformiix/source/xpath/XPathProcessor.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: NPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Netscape Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Peter Van der Beken, peterv@netscape.com - * - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the NPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the NPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "XPathProcessor.h" -#include "dom.h" -#include "ProcessorState.h" -#include "Expr.h" -#include "nsNodeSet.h" -#include "nsIDOMClassInfo.h" - - -// QueryInterface implementation for XPathProcessor -NS_IMPL_ADDREF(XPathProcessor) -NS_IMPL_RELEASE(XPathProcessor) -NS_INTERFACE_MAP_BEGIN(XPathProcessor) - NS_INTERFACE_MAP_ENTRY(nsIXPathNodeSelector) - NS_INTERFACE_MAP_ENTRY(nsISupports) - NS_INTERFACE_MAP_ENTRY_EXTERNAL_DOM_CLASSINFO(XPathProcessor) -NS_INTERFACE_MAP_END - - -/* - * Creates a new XPathProcessor - */ -XPathProcessor::XPathProcessor() -{ - NS_INIT_ISUPPORTS(); -} - -/* - * Default destructor - */ -XPathProcessor::~XPathProcessor() -{ -} - -/* nsIDOMNodeList selectNodes (in nsIDOMNode aContextNode, in DOMString aPattern); */ -NS_IMETHODIMP XPathProcessor::SelectNodes(nsIDOMNode *aContextNode, - const nsAReadableString & aPattern, - nsIDOMNodeList **_retval) -{ - String pattern(PromiseFlatString(aPattern).get()); - - nsCOMPtr aOwnerDOMDocument; - aContextNode->GetOwnerDocument(getter_AddRefs(aOwnerDOMDocument)); - nsCOMPtr aOwnerDocument = do_QueryInterface(aOwnerDOMDocument); - Document* aDocument = new Document(aOwnerDOMDocument); - Node* aNode = aDocument->createWrapper(aContextNode); - - ProcessorState* aProcessorState = new ProcessorState(); - ExprParser aParser; - - Expr* aExpression = aParser.createExpr(pattern); - ExprResult* exprResult = aExpression->evaluate(aNode, aProcessorState); - nsNodeSet* resultSet; - if (exprResult->getResultType() == ExprResult::NODESET) { - resultSet = new nsNodeSet((NodeSet*)exprResult); - } - else { - // Return an empty nodeset - resultSet = new nsNodeSet(nsnull); - } - *_retval = resultSet; - NS_ADDREF(*_retval); - - delete aProcessorState; - delete exprResult; - delete aExpression; - delete aDocument; - - return NS_OK; -} diff --git a/mozilla/extensions/transformiix/source/xpath/XPathProcessor.h b/mozilla/extensions/transformiix/source/xpath/XPathProcessor.h deleted file mode 100644 index 2f34d8708f7..00000000000 --- a/mozilla/extensions/transformiix/source/xpath/XPathProcessor.h +++ /dev/null @@ -1,75 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: NPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Netscape Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Peter Van der Beken, peterv@netscape.com - * - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the NPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the NPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef XPathProcessor_h__ -#define XPathProcessor_h__ - -#include "nsIXPathNodeSelector.h" - -/* e4172588-1dd1-11b2-bf09-ec309437245a */ -#define TRANSFORMIIX_XPATH_PROCESSOR_CID \ -{ 0xe4172588, 0x1dd1, 0x11b2, {0xbf, 0x09, 0xec, 0x30, 0x94, 0x37, 0x24, 0x5a} } - -#define TRANSFORMIIX_XPATH_PROCESSOR_CONTRACTID \ -"@mozilla.org/xpath-nodeselector;1" - -/** - * A class for processing an XPath query -**/ -class XPathProcessor : public nsIXPathNodeSelector -{ -public: - /** - * Creates a new XPathProcessor - **/ - XPathProcessor(); - - /** - * Default destructor for XPathProcessor - **/ - virtual ~XPathProcessor(); - - // nsISupports interface - NS_DECL_ISUPPORTS - - // nsIXPathNodeSelector interface - NS_DECL_NSIXPATHNODESELECTOR -}; - -#endif diff --git a/mozilla/extensions/transformiix/source/xpath/nsNodeSet.cpp b/mozilla/extensions/transformiix/source/xpath/nsNodeSet.cpp deleted file mode 100644 index 1a72bd36ef7..00000000000 --- a/mozilla/extensions/transformiix/source/xpath/nsNodeSet.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: NPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Netscape Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Peter Van der Beken, peterv@netscape.com - * - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the NPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the NPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#include "nsNodeSet.h" -#include "nsIDOMClassInfo.h" - -// QueryInterface implementation for nsNodeSet -NS_IMPL_ADDREF(nsNodeSet) -NS_IMPL_RELEASE(nsNodeSet) -NS_INTERFACE_MAP_BEGIN(nsNodeSet) - NS_INTERFACE_MAP_ENTRY(nsIDOMNodeList) - NS_INTERFACE_MAP_ENTRY(nsISupports) - NS_INTERFACE_MAP_ENTRY_EXTERNAL_DOM_CLASSINFO(NodeSet) -NS_INTERFACE_MAP_END - - -nsNodeSet::nsNodeSet(NodeSet* aNodeSet) { - NS_INIT_ISUPPORTS(); - mScriptObject = nsnull; - - if (aNodeSet) { - for (int i=0; i < aNodeSet->size(); i++) { - mNodes.AppendElement(aNodeSet->get(i)->getNSObj()); - } - } -} - -nsNodeSet::~nsNodeSet() { -} - -NS_IMETHODIMP -nsNodeSet::Item(PRUint32 aIndex, nsIDOMNode** aReturn) -{ - *aReturn = nsnull; - mNodes.QueryElementAt(aIndex, NS_GET_IID(nsIDOMNode), (void**)aReturn); - return NS_OK; -} - -NS_IMETHODIMP -nsNodeSet::GetLength(PRUint32* aLength) -{ - mNodes.Count(aLength); - return NS_OK; -} diff --git a/mozilla/extensions/transformiix/source/xpath/nsNodeSet.h b/mozilla/extensions/transformiix/source/xpath/nsNodeSet.h deleted file mode 100644 index 8a8a6b6f70d..00000000000 --- a/mozilla/extensions/transformiix/source/xpath/nsNodeSet.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* ***** BEGIN LICENSE BLOCK ***** - * Version: NPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Netscape Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/NPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is mozilla.org code. - * - * The Initial Developer of the Original Code is - * Netscape Communications Corporation. - * Portions created by the Initial Developer are Copyright (C) 1998 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Peter Van der Beken, peterv@netscape.com - * - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the NPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the NPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - -#ifndef TRANSFRMX_NS_NODESET_H -#define TRANSFRMX_NS_NODESET_H - -#include "NodeSet.h" -#include "nsIDOMNodeList.h" -#include "nsSupportsArray.h" - -class nsNodeSet : public nsIDOMNodeList -{ -public: - /** - * Creates a new Mozilla NodeSet from a Transformiix NodeSet - **/ - nsNodeSet(NodeSet* aNodeSet); - - /** - * Default destructor for nsNodeSet - **/ - virtual ~nsNodeSet(); - - // nsISupports interface - NS_DECL_ISUPPORTS - - // nsIDocumentTransformer interface - NS_DECL_NSIDOMNODELIST - -private: - void* mScriptObject; - nsSupportsArray mNodes; -}; - -#endif diff --git a/mozilla/xpinstall/packager/packages-mac b/mozilla/xpinstall/packager/packages-mac index 56d000b2e63..1d71a166749 100644 --- a/mozilla/xpinstall/packager/packages-mac +++ b/mozilla/xpinstall/packager/packages-mac @@ -105,6 +105,7 @@ viewer:Components:dom_stylesheets.xpt viewer:Components:dom_traversal.xpt viewer:Components:dom_views.xpt viewer:Components:dom_xbl.xpt +viewer:Components:dom_xpath.xpt viewer:Components:dom_xul.xpt viewer:Components:editor.xpt viewer:Components:HTMLEditor.shlb diff --git a/mozilla/xpinstall/packager/packages-static-unix b/mozilla/xpinstall/packager/packages-static-unix index cc4fad8c7d5..1e4add846b0 100644 --- a/mozilla/xpinstall/packager/packages-static-unix +++ b/mozilla/xpinstall/packager/packages-static-unix @@ -76,6 +76,7 @@ bin/components/dom_stylesheets.xpt bin/components/dom_traversal.xpt bin/components/dom_views.xpt bin/components/dom_xbl.xpt +bin/components/dom_xpath.xpt bin/components/dom_xul.xpt bin/components/editor.xpt bin/components/find.xpt diff --git a/mozilla/xpinstall/packager/packages-static-win b/mozilla/xpinstall/packager/packages-static-win index cbed9b6ed4a..b86fb9d3bb4 100644 --- a/mozilla/xpinstall/packager/packages-static-win +++ b/mozilla/xpinstall/packager/packages-static-win @@ -92,6 +92,7 @@ bin\components\dom_stylesheets.xpt bin\components\dom_traversal.xpt bin\components\dom_views.xpt bin\components\dom_xbl.xpt +bin\components\dom_xpath.xpt bin\components\dom_xul.xpt bin\components\editor.xpt bin\components\find.xpt diff --git a/mozilla/xpinstall/packager/packages-unix b/mozilla/xpinstall/packager/packages-unix index daf9a6897bf..ad2ac727b29 100644 --- a/mozilla/xpinstall/packager/packages-unix +++ b/mozilla/xpinstall/packager/packages-unix @@ -90,6 +90,7 @@ bin/components/dom_stylesheets.xpt bin/components/dom_traversal.xpt bin/components/dom_views.xpt bin/components/dom_xbl.xpt +bin/components/dom_xpath.xpt bin/components/dom_xul.xpt bin/components/editor.xpt bin/components/find.xpt diff --git a/mozilla/xpinstall/packager/packages-win b/mozilla/xpinstall/packager/packages-win index 44bf0085434..c1deab776bc 100644 --- a/mozilla/xpinstall/packager/packages-win +++ b/mozilla/xpinstall/packager/packages-win @@ -113,6 +113,7 @@ bin\components\dom_stylesheets.xpt bin\components\dom_traversal.xpt bin\components\dom_views.xpt bin\components\dom_xbl.xpt +bin\components\dom_xpath.xpt bin\components\dom_xul.xpt bin\components\editor.xpt bin\components\editor.dll