xmllite: Fix reported node type for attributes.

This commit is contained in:
Nikolay Sivov 2012-12-06 16:18:28 +04:00 committed by Alexandre Julliard
parent f6e6b835b6
commit 201b1c2aba
2 changed files with 21 additions and 1 deletions

View File

@ -937,7 +937,11 @@ static HRESULT WINAPI xmlreader_GetNodeType(IXmlReader* iface, XmlNodeType *node
{
xmlreader *This = impl_from_IXmlReader(iface);
TRACE("(%p)->(%p)\n", This, node_type);
*node_type = This->nodetype;
/* When we're on attribute always return attribute type, container node type is kept.
Note that container is not necessarily an element, and attribute doesn't mean it's
an attribute in XML spec terms. */
*node_type = This->attr ? XmlNodeType_Attribute : This->nodetype;
return This->state == XmlReadState_Closed ? S_FALSE : S_OK;
}

View File

@ -642,6 +642,12 @@ todo_wine
/* check attributes */
hr = IXmlReader_MoveToNextAttribute(reader);
ok(hr == S_OK, "got %08x\n", hr);
type = XmlNodeType_None;
hr = IXmlReader_GetNodeType(reader, &type);
ok(hr == S_OK, "got %08x\n", hr);
ok(type == XmlNodeType_Attribute, "got %d\n", type);
ok_pos(reader, 1, 7, -1, 55, TRUE);
/* try to move from last attribute */
@ -652,6 +658,11 @@ todo_wine
hr = IXmlReader_MoveToNextAttribute(reader);
ok(hr == S_FALSE, "got %08x\n", hr);
type = XmlNodeType_None;
hr = IXmlReader_GetNodeType(reader, &type);
ok(hr == S_OK, "got %08x\n", hr);
ok(type == XmlNodeType_Attribute, "got %d\n", type);
hr = IXmlReader_MoveToFirstAttribute(reader);
ok(hr == S_OK, "got %08x\n", hr);
ok_pos(reader, 1, 7, -1, 55, TRUE);
@ -672,6 +683,11 @@ todo_wine {
hr = IXmlReader_MoveToElement(reader);
ok(hr == S_OK, "got %08x\n", hr);
type = XmlNodeType_None;
hr = IXmlReader_GetNodeType(reader, &type);
ok(hr == S_OK, "got %08x\n", hr);
ok(type == XmlNodeType_XmlDeclaration, "got %d\n", type);
IStream_Release(stream);
IXmlReader_Release(reader);
}