summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRupinder Singh Khokhar <rsk1coder99@gmail.com>2014-06-09 04:03:23 (GMT)
committer Rupinder Singh Khokhar <rsk1coder99@gmail.com>2014-07-17 22:14:34 (GMT)
commit067d862e55500d89e8e96637a4678cf25cae478b (patch)
treedc33181725817e244f02aca01b92bf902a8b5945
parent248159cc63965706c08f0b92aa5a41ab819b1c7d (diff)
downloadlibdom-067d862e55500d89e8e96637a4678cf25cae478b.tar.gz
libdom-067d862e55500d89e8e96637a4678cf25cae478b.tar.bz2
HTMLCollection
-rw-r--r--src/html/html_collection.c25
-rw-r--r--src/html/html_document.c1
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection04.xml (renamed from test/testcases/tests/level1/html/HTMLCollection04.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection04.xml.notimpl59
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection05.xml (renamed from test/testcases/tests/level1/html/HTMLCollection05.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection05.xml.notimpl46
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection06.xml (renamed from test/testcases/tests/level1/html/HTMLCollection06.xml.notimpl)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection07.xml (renamed from test/testcases/tests/level1/html/HTMLCollection07.xml.notimpl)2
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection08.xml (renamed from test/testcases/tests/level1/html/HTMLCollection08.xml.notimpl)2
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection09.xml (renamed from test/testcases/tests/level1/html/HTMLCollection09.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection09.xml.notimpl47
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection10.xml (renamed from test/testcases/tests/level1/html/HTMLCollection10.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection11.xml (renamed from test/testcases/tests/level1/html/HTMLCollection11.xml.kfail)0
-rw-r--r--test/testcases/tests/level1/html/HTMLCollection12.xml.kfail50
14 files changed, 24 insertions, 208 deletions
diff --git a/src/html/html_collection.c b/src/html/html_collection.c
index 2b4d8aa..43a26c5 100644
--- a/src/html/html_collection.c
+++ b/src/html/html_collection.c
@@ -11,6 +11,7 @@
#include <libwapcaplet/libwapcaplet.h>
#include "html/html_collection.h"
+#include "html/html_document.h"
#include "core/node.h"
#include "core/element.h"
@@ -182,7 +183,7 @@ dom_exception dom_html_collection_item(dom_html_collection *col,
/* No children and siblings */
struct dom_node_internal *parent = n->parent;
- while (parent != col->root &&
+ while (n != col->root &&
n == parent->last_child) {
n = parent;
parent = parent->parent;
@@ -212,8 +213,8 @@ dom_exception dom_html_collection_named_item(dom_html_collection *col,
dom_string *name, struct dom_node **node)
{
struct dom_node_internal *n = col->root;
+ dom_html_document *doc = (dom_html_document *)dom_node_get_owner(n);
dom_exception err;
-
while (n != NULL) {
if (n->type == DOM_ELEMENT_NODE &&
col->ic(n, col->ctx) == true) {
@@ -235,6 +236,22 @@ dom_exception dom_html_collection_named_item(dom_html_collection *col,
if (id != NULL)
dom_string_unref(id);
+
+ /* Check for Name attr if id not matched/found */
+ dom_string *id_name = NULL;
+ err = _dom_element_get_attribute((dom_element *)n,
+ doc->memoised[hds_name], &id_name);
+ if(err != DOM_NO_ERR) {
+ return err;
+ }
+ if (id_name != NULL && dom_string_isequal(name, id_name)) {
+ *node = (struct dom_node *) n;
+ dom_node_ref(n);
+ dom_string_unref(id_name);
+
+ return DOM_NO_ERR;
+ }
+
}
/* Depth first iterating */
@@ -246,13 +263,13 @@ dom_exception dom_html_collection_named_item(dom_html_collection *col,
/* No children and siblings */
struct dom_node_internal *parent = n->parent;
- while (parent != col->root &&
+ while (n != col->root &&
n == parent->last_child) {
n = parent;
parent = parent->parent;
}
- if (parent == col->root)
+ if (n == col->root)
n = NULL;
else
n = n->next;
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 83c4801..cd062a2 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -907,6 +907,7 @@ dom_exception _dom_html_document_set_cookie(dom_html_document *doc,
{
UNUSED(doc);
UNUSED(cookie);
+
/*todo implement this after updating client interface */
return DOM_NOT_SUPPORTED_ERR;
}
diff --git a/test/testcases/tests/level1/html/HTMLCollection04.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection04.xml
index 5d78405..5d78405 100644
--- a/test/testcases/tests/level1/html/HTMLCollection04.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLCollection04.xml
diff --git a/test/testcases/tests/level1/html/HTMLCollection04.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection04.xml.notimpl
deleted file mode 100644
index 5d78405..0000000
--- a/test/testcases/tests/level1/html/HTMLCollection04.xml.notimpl
+++ b/dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet href="test-to-html.xml" type="text/xml"?>
-
-<!--
-
-Copyright (c) 2001 World Wide Web Consortium,
-(Massachusetts Institute of Technology, Institut National de
-Recherche en Informatique et en Automatique, Keio University). All
-Rights Reserved. This program is distributed under the W3C's Software
-Intellectual Property License. This program is distributed in the
-hope that it will be useful, but WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE.
-
-See W3C License http://www.w3.org/Consortium/Legal/ for more details.
-
--->
-<!DOCTYPE test SYSTEM "dom1.dtd">
-<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection04">
-<metadata>
-<title>HTMLCollection04</title>
-<creator>NIST</creator>
-<description>
- HTMLCollections are live, they are automatically updated when the
- underlying document is changed.
-
- Create a HTMLCollection object by invoking the rows attribute of the
- first TABLE element and examine its length, then add a new row and
- re-examine the length.
-</description>
-<contributor>Rick Rivello</contributor>
-<date qualifier="created">2002-05-01</date>
-<subject resource="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-html#ID-40057551"/>
-</metadata>
-<var name="nodeList" type="NodeList"/>
-<var name="testNode" type="Node"/>
-<var name="rowLength1" type="int"/>
-<var name="rowLength2" type="int"/>
-<var name="rowsnodeList" type="HTMLCollection"/>
-<var name="newRow" type="HTMLElement"/>
-<var name="vrowindex" type="int" />
-<var name="doc" type="Document"/>
-<var name="result" type="List"/>
-<var name="expectedResult" type="List">
-<member>4</member>
-<member>5</member>
-</var>
-<load var="doc" href="collection" willBeModified="true"/>
-<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname='"table"'/>
-<assertSize collection="nodeList" size="1" id="Asize"/>
-<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
-<rows interface="HTMLTableElement" obj="testNode" var="rowsnodeList"/>
-<length interface="HTMLCollection" obj="rowsnodeList" var="rowLength1"/>
-<append collection="result" item="rowLength1"/>
-<insertRow interface="HTMLTableElement" obj="testNode" var="newRow" index="4"/>
-<length interface="HTMLCollection" obj="rowsnodeList" var="rowLength2"/>
-<append collection="result" item="rowLength2"/>
-<assertEquals actual="result" expected="expectedResult" id="rowIndexLink" ignoreCase="false"/>
-</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection05.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection05.xml
index ffb7d13..ffb7d13 100644
--- a/test/testcases/tests/level1/html/HTMLCollection05.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLCollection05.xml
diff --git a/test/testcases/tests/level1/html/HTMLCollection05.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection05.xml.notimpl
deleted file mode 100644
index ffb7d13..0000000
--- a/test/testcases/tests/level1/html/HTMLCollection05.xml.notimpl
+++ b/dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet href="test-to-html.xml" type="text/xml"?>
-
-<!--
-
-Copyright (c) 2001 World Wide Web Consortium,
-(Massachusetts Institute of Technology, Institut National de
-Recherche en Informatique et en Automatique, Keio University). All
-Rights Reserved. This program is distributed under the W3C's Software
-Intellectual Property License. This program is distributed in the
-hope that it will be useful, but WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE.
-
-See W3C License http://www.w3.org/Consortium/Legal/ for more details.
-
--->
-<!DOCTYPE test SYSTEM "dom1.dtd">
-<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection05">
-<metadata>
-<title>HTMLCollection05</title>
-<creator>NIST</creator>
-<description>
- The length attribute specifies the length or size of the list.
-
- Retrieve the first TABLE element and create a HTMLCollection by invoking
- the "rows" attribute. Retrieve the length attribute of the HTMLCollection
- object.
-</description>
-<contributor>Rick Rivello</contributor>
-<date qualifier="created">2002-05-01</date>
-<subject resource="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-html#ID-40057551"/>
-</metadata>
-<var name="nodeList" type="NodeList"/>
-<var name="testNode" type="Node"/>
-<var name="rowsnodeList" type="HTMLCollection"/>
-<var name="rowLength" type="int" />
-<var name="doc" type="Document"/>
-<load var="doc" href="collection" willBeModified="false"/>
-<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname='"table"'/>
-<assertSize collection="nodeList" size="1" id="Asize"/>
-<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
-<rows interface="HTMLTableElement" obj="testNode" var="rowsnodeList"/>
-<length interface="HTMLCollection" obj="rowsnodeList" var="rowLength"/>
-<assertEquals actual="rowLength" expected="4" id="rowIndexLink" ignoreCase="false"/>
-</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection06.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection06.xml
index 1026310..1026310 100644
--- a/test/testcases/tests/level1/html/HTMLCollection06.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection06.xml
diff --git a/test/testcases/tests/level1/html/HTMLCollection07.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection07.xml
index e0a21a2..55e392f 100644
--- a/test/testcases/tests/level1/html/HTMLCollection07.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection07.xml
@@ -45,5 +45,5 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<rows interface="HTMLTableElement" obj="testNode" var="rowsnodeList"/>
<item interface="HTMLCollection" obj="rowsnodeList" var="rowNode" index="3"/>
<rowIndex interface="HTMLTableRowElement" obj="rowNode" var="vrowindex"/>
-<assertEquals actual="vrowindex" expected="3" id="rowIndexLink" ignoreCase="false"/>
+<assertEquals actual="vrowindex" expected="2" id="rowIndexLink" ignoreCase="false"/>
</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection08.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection08.xml
index dfc2e10..8f7f138 100644
--- a/test/testcases/tests/level1/html/HTMLCollection08.xml.notimpl
+++ b/test/testcases/tests/level1/html/HTMLCollection08.xml
@@ -43,7 +43,7 @@ See W3C License http://www.w3.org/Consortium/Legal/ for more details.
<assertSize collection="nodeList" size="1" id="Asize"/>
<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
<rows interface="HTMLTableElement" obj="testNode" var="rowsnodeList"/>
-<item interface="HTMLCollection" obj="rowsnodeList" var="rowNode" index="2"/>
+<item interface="HTMLCollection" obj="rowsnodeList" var="rowNode" index="3"/>
<rowIndex interface="HTMLTableRowElement" obj="rowNode" var="vrowindex"/>
<assertEquals actual="vrowindex" expected="2" id="rowIndexLink" ignoreCase="false"/>
</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection09.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection09.xml
index f81e7af..f81e7af 100644
--- a/test/testcases/tests/level1/html/HTMLCollection09.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLCollection09.xml
diff --git a/test/testcases/tests/level1/html/HTMLCollection09.xml.notimpl b/test/testcases/tests/level1/html/HTMLCollection09.xml.notimpl
deleted file mode 100644
index f81e7af..0000000
--- a/test/testcases/tests/level1/html/HTMLCollection09.xml.notimpl
+++ b/dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet href="test-to-html.xml" type="text/xml"?>
-
-<!--
-
-Copyright (c) 2001 World Wide Web Consortium,
-(Massachusetts Institute of Technology, Institut National de
-Recherche en Informatique et en Automatique, Keio University). All
-Rights Reserved. This program is distributed under the W3C's Software
-Intellectual Property License. This program is distributed in the
-hope that it will be useful, but WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE.
-
-See W3C License http://www.w3.org/Consortium/Legal/ for more details.
-
--->
-<!DOCTYPE test SYSTEM "dom1.dtd">
-<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection09">
-<metadata>
-<title>HTMLCollection09</title>
-<creator>NIST</creator>
-<description>
- The item(index) method returns null if the index is out of range.
-
- Retrieve the first TABLE element and create a HTMLCollection by invoking
- the "rows" attribute. Invoke the item(index) method with an index
- of 5. This index is out of range and should return null.
-</description>
-<contributor>Rick Rivello</contributor>
-<date qualifier="created">2002-05-01</date>
-<subject resource="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-html#ID-33262535"/>
-</metadata>
-<var name="nodeList" type="NodeList"/>
-<var name="testNode" type="Node"/>
-<var name="rowNode" type="Node"/>
-<var name="rowsnodeList" type="HTMLCollection"/>
-<var name="vrowindex" type="int" />
-<var name="doc" type="Document"/>
-<load var="doc" href="collection" willBeModified="false"/>
-<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname='"table"'/>
-<assertSize collection="nodeList" size="1" id="Asize"/>
-<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
-<rows interface="HTMLTableElement" obj="testNode" var="rowsnodeList"/>
-<item interface="HTMLCollection" obj="rowsnodeList" var="rowNode" index="5"/>
-<assertNull actual="rowNode" id="rowIndexLink"/>
-</test>
diff --git a/test/testcases/tests/level1/html/HTMLCollection10.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection10.xml
index 78f4c9a..78f4c9a 100644
--- a/test/testcases/tests/level1/html/HTMLCollection10.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLCollection10.xml
diff --git a/test/testcases/tests/level1/html/HTMLCollection11.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection11.xml
index ebf217f..ebf217f 100644
--- a/test/testcases/tests/level1/html/HTMLCollection11.xml.kfail
+++ b/test/testcases/tests/level1/html/HTMLCollection11.xml
diff --git a/test/testcases/tests/level1/html/HTMLCollection12.xml.kfail b/test/testcases/tests/level1/html/HTMLCollection12.xml.kfail
deleted file mode 100644
index d7feb3d..0000000
--- a/test/testcases/tests/level1/html/HTMLCollection12.xml.kfail
+++ b/dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?xml-stylesheet href="test-to-html.xml" type="text/xml"?>
-
-<!--
-
-Copyright (c) 2001 World Wide Web Consortium,
-(Massachusetts Institute of Technology, Institut National de
-Recherche en Informatique et en Automatique, Keio University). All
-Rights Reserved. This program is distributed under the W3C's Software
-Intellectual Property License. This program is distributed in the
-hope that it will be useful, but WITHOUT ANY WARRANTY; without even
-the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-PURPOSE.
-
-See W3C License http://www.w3.org/Consortium/Legal/ for more details.
-
--->
-<!DOCTYPE test SYSTEM "dom1.dtd">
-<test xmlns="http://www.w3.org/2001/DOM-Test-Suite/Level-1" name="HTMLCollection12">
-<metadata>
-<title>HTMLCollection12</title>
-<creator>NIST</creator>
-<description>
- The namedItem(name) method retrieves a node using a name. It first
- searches for a node with a matching id attribute. If it doesn't find
- one, it then searches for a Node with a matching name attribute, but only
- on those elements that are allowed a name attribute. If there isn't
- a matching node the method returns null.
-
- Retrieve the first FORM element and create a HTMLCollection by invoking
- the elements attribute. The method returns null since there is not a
- match of the name or id attribute.
-</description>
-<contributor>Rick Rivello</contributor>
-<date qualifier="created">2002-05-01</date>
-<subject resource="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/level-one-html#ID-21069976"/>
-</metadata>
-<var name="nodeList" type="NodeList"/>
-<var name="testNode" type="Node"/>
-<var name="formNode" type="Node"/>
-<var name="formsnodeList" type="HTMLCollection"/>
-<var name="doc" type="Document"/>
-<load var="doc" href="collection" willBeModified="false"/>
-<getElementsByTagName interface="Document" obj="doc" var="nodeList" tagname='"form"'/>
-<assertSize collection="nodeList" size="1" id="Asize"/>
-<item interface="NodeList" obj="nodeList" var="testNode" index="0"/>
-<elements interface="HTMLFormElement" obj="testNode" var="formsnodeList"/>
-<namedItem obj="formsnodeList" var="formNode" name='"select9"'/>
-<assertNull actual="formNode" id="nameIndexLink" />
-</test>