Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
0330332a
Commit
0330332a
authored
Sep 03, 2010
by
Nikolay Sivov
Committed by
Alexandre Julliard
Sep 03, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msxml3: Implement IXMLDOMNamedNodeMap::getQualifiedItem().
parent
c9b8f5d2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
111 additions
and
38 deletions
+111
-38
nodemap.c
dlls/msxml3/nodemap.c
+46
-37
domdoc.c
dlls/msxml3/tests/domdoc.c
+65
-1
No files found.
dlls/msxml3/nodemap.c
View file @
0330332a
...
@@ -127,13 +127,8 @@ static HRESULT WINAPI xmlnodemap_GetTypeInfo(
...
@@ -127,13 +127,8 @@ static HRESULT WINAPI xmlnodemap_GetTypeInfo(
ITypeInfo
**
ppTInfo
)
ITypeInfo
**
ppTInfo
)
{
{
xmlnodemap
*
This
=
impl_from_IXMLDOMNamedNodeMap
(
iface
);
xmlnodemap
*
This
=
impl_from_IXMLDOMNamedNodeMap
(
iface
);
HRESULT
hr
;
TRACE
(
"(%p)->(%u %u %p)
\n
"
,
This
,
iTInfo
,
lcid
,
ppTInfo
);
TRACE
(
"(%p)->(%u %u %p)
\n
"
,
This
,
iTInfo
,
lcid
,
ppTInfo
);
return
get_typeinfo
(
IXMLDOMNamedNodeMap_tid
,
ppTInfo
);
hr
=
get_typeinfo
(
IXMLDOMNamedNodeMap_tid
,
ppTInfo
);
return
hr
;
}
}
static
HRESULT
WINAPI
xmlnodemap_GetIDsOfNames
(
static
HRESULT
WINAPI
xmlnodemap_GetIDsOfNames
(
...
@@ -203,32 +198,8 @@ static HRESULT WINAPI xmlnodemap_getNamedItem(
...
@@ -203,32 +198,8 @@ static HRESULT WINAPI xmlnodemap_getNamedItem(
IXMLDOMNode
**
namedItem
)
IXMLDOMNode
**
namedItem
)
{
{
xmlnodemap
*
This
=
impl_from_IXMLDOMNamedNodeMap
(
iface
);
xmlnodemap
*
This
=
impl_from_IXMLDOMNamedNodeMap
(
iface
);
xmlChar
*
element_name
;
xmlAttrPtr
attr
;
xmlNodePtr
node
;
TRACE
(
"(%p)->(%s %p)
\n
"
,
This
,
debugstr_w
(
name
),
namedItem
);
TRACE
(
"(%p)->(%s %p)
\n
"
,
This
,
debugstr_w
(
name
),
namedItem
);
return
IXMLDOMNamedNodeMap_getQualifiedItem
(
iface
,
name
,
NULL
,
namedItem
);
if
(
!
namedItem
)
return
E_INVALIDARG
;
node
=
xmlNodePtr_from_domnode
(
This
->
node
,
0
);
if
(
!
node
)
return
E_FAIL
;
element_name
=
xmlChar_from_wchar
(
name
);
attr
=
xmlHasNsProp
(
node
,
element_name
,
NULL
);
heap_free
(
element_name
);
if
(
!
attr
)
{
*
namedItem
=
NULL
;
return
S_FALSE
;
}
*
namedItem
=
create_node
(
(
xmlNodePtr
)
attr
);
return
S_OK
;
}
}
static
HRESULT
WINAPI
xmlnodemap_setNamedItem
(
static
HRESULT
WINAPI
xmlnodemap_setNamedItem
(
...
@@ -237,7 +208,6 @@ static HRESULT WINAPI xmlnodemap_setNamedItem(
...
@@ -237,7 +208,6 @@ static HRESULT WINAPI xmlnodemap_setNamedItem(
IXMLDOMNode
**
namedItem
)
IXMLDOMNode
**
namedItem
)
{
{
xmlnodemap
*
This
=
impl_from_IXMLDOMNamedNodeMap
(
iface
);
xmlnodemap
*
This
=
impl_from_IXMLDOMNamedNodeMap
(
iface
);
xmlnode
*
ThisNew
=
NULL
;
xmlNodePtr
nodeNew
;
xmlNodePtr
nodeNew
;
IXMLDOMNode
*
pAttr
=
NULL
;
IXMLDOMNode
*
pAttr
=
NULL
;
xmlNodePtr
node
;
xmlNodePtr
node
;
...
@@ -254,10 +224,10 @@ static HRESULT WINAPI xmlnodemap_setNamedItem(
...
@@ -254,10 +224,10 @@ static HRESULT WINAPI xmlnodemap_setNamedItem(
return
E_FAIL
;
return
E_FAIL
;
/* Must be an Attribute */
/* Must be an Attribute */
IUnknown_QueryInterface
(
newItem
,
&
IID_IXMLDOMNode
,
(
LPVOID
*
)
&
pAttr
);
IUnknown_QueryInterface
(
newItem
,
&
IID_IXMLDOMNode
,
(
void
*
*
)
&
pAttr
);
if
(
pAttr
)
if
(
pAttr
)
{
{
ThisNew
=
impl_from_IXMLDOMNode
(
pAttr
);
xmlnode
*
ThisNew
=
impl_from_IXMLDOMNode
(
pAttr
);
if
(
ThisNew
->
node
->
type
!=
XML_ATTRIBUTE_NODE
)
if
(
ThisNew
->
node
->
type
!=
XML_ATTRIBUTE_NODE
)
{
{
...
@@ -387,7 +357,7 @@ static HRESULT WINAPI xmlnodemap_get_length(
...
@@ -387,7 +357,7 @@ static HRESULT WINAPI xmlnodemap_get_length(
curr
=
first
;
curr
=
first
;
attrCount
=
1
;
attrCount
=
1
;
while
(
curr
->
next
!=
NULL
)
{
while
(
curr
->
next
)
{
attrCount
++
;
attrCount
++
;
curr
=
curr
->
next
;
curr
=
curr
->
next
;
}
}
...
@@ -403,8 +373,47 @@ static HRESULT WINAPI xmlnodemap_getQualifiedItem(
...
@@ -403,8 +373,47 @@ static HRESULT WINAPI xmlnodemap_getQualifiedItem(
IXMLDOMNode
**
qualifiedItem
)
IXMLDOMNode
**
qualifiedItem
)
{
{
xmlnodemap
*
This
=
impl_from_IXMLDOMNamedNodeMap
(
iface
);
xmlnodemap
*
This
=
impl_from_IXMLDOMNamedNodeMap
(
iface
);
FIXME
(
"(%p)->(%s %s %p)
\n
"
,
This
,
debugstr_w
(
baseName
),
debugstr_w
(
namespaceURI
),
qualifiedItem
);
xmlAttrPtr
attr
;
return
E_NOTIMPL
;
xmlNodePtr
node
;
xmlChar
*
href
;
xmlChar
*
name
;
TRACE
(
"(%p)->(%s %s %p)
\n
"
,
This
,
debugstr_w
(
baseName
),
debugstr_w
(
namespaceURI
),
qualifiedItem
);
if
(
!
baseName
||
!
qualifiedItem
)
return
E_INVALIDARG
;
node
=
xmlNodePtr_from_domnode
(
This
->
node
,
XML_ELEMENT_NODE
);
if
(
!
node
)
return
E_FAIL
;
if
(
namespaceURI
&&
*
namespaceURI
)
{
href
=
xmlChar_from_wchar
(
namespaceURI
);
if
(
!
href
)
return
E_OUTOFMEMORY
;
}
else
href
=
NULL
;
name
=
xmlChar_from_wchar
(
baseName
);
if
(
!
name
)
{
heap_free
(
href
);
return
E_OUTOFMEMORY
;
}
attr
=
xmlHasNsProp
(
node
,
name
,
href
);
if
(
!
attr
)
{
*
qualifiedItem
=
NULL
;
return
S_FALSE
;
}
*
qualifiedItem
=
create_node
((
xmlNodePtr
)
attr
);
heap_free
(
name
);
heap_free
(
href
);
return
S_OK
;
}
}
static
HRESULT
WINAPI
xmlnodemap_removeQualifiedItem
(
static
HRESULT
WINAPI
xmlnodemap_removeQualifiedItem
(
...
...
dlls/msxml3/tests/domdoc.c
View file @
0330332a
...
@@ -1321,7 +1321,7 @@ static void test_domnode( void )
...
@@ -1321,7 +1321,7 @@ static void test_domnode( void )
type
=
NODE_INVALID
;
type
=
NODE_INVALID
;
r
=
IXMLDOMNode_get_nodeType
(
element
,
&
type
);
r
=
IXMLDOMNode_get_nodeType
(
element
,
&
type
);
ok
(
r
==
S_OK
,
"g
etNamedItem returned wrong code
\n
"
);
ok
(
r
==
S_OK
,
"g
ot %08x
\n
"
,
r
);
ok
(
type
==
NODE_ELEMENT
,
"node not an element
\n
"
);
ok
(
type
==
NODE_ELEMENT
,
"node not an element
\n
"
);
str
=
NULL
;
str
=
NULL
;
...
@@ -5796,6 +5796,69 @@ static void test_splitText(void)
...
@@ -5796,6 +5796,69 @@ static void test_splitText(void)
free_bstrs
();
free_bstrs
();
}
}
static
void
test_getQualifiedItem
(
void
)
{
IXMLDOMDocument
*
doc
;
IXMLDOMElement
*
element
;
IXMLDOMNode
*
pr_node
,
*
node
;
IXMLDOMNodeList
*
root_list
;
IXMLDOMNamedNodeMap
*
map
;
VARIANT_BOOL
b
;
BSTR
str
;
LONG
len
;
HRESULT
hr
;
hr
=
CoCreateInstance
(
&
CLSID_DOMDocument
,
NULL
,
CLSCTX_INPROC_SERVER
,
&
IID_IXMLDOMDocument
,
(
void
**
)
&
doc
);
ok
(
hr
==
S_OK
,
"ret 0x%08x
\n
"
,
hr
);
if
(
hr
!=
S_OK
)
return
;
str
=
SysAllocString
(
szComplete4
);
hr
=
IXMLDOMDocument_loadXML
(
doc
,
str
,
&
b
);
ok
(
hr
==
S_OK
,
"loadXML failed
\n
"
);
ok
(
b
==
VARIANT_TRUE
,
"failed to load XML string
\n
"
);
SysFreeString
(
str
);
hr
=
IXMLDOMDocument_get_documentElement
(
doc
,
&
element
);
ok
(
hr
==
S_OK
,
"ret %08x
\n
"
,
hr
);
hr
=
IXMLDOMElement_get_childNodes
(
element
,
&
root_list
);
ok
(
hr
==
S_OK
,
"ret %08x
\n
"
,
hr
);
hr
=
IXMLDOMNodeList_get_item
(
root_list
,
1
,
&
pr_node
);
ok
(
hr
==
S_OK
,
"ret %08x
\n
"
,
hr
);
IXMLDOMNodeList_Release
(
root_list
);
hr
=
IXMLDOMNode_get_attributes
(
pr_node
,
&
map
);
ok
(
hr
==
S_OK
,
"ret %08x
\n
"
,
hr
);
IXMLDOMNode_Release
(
pr_node
);
hr
=
IXMLDOMNamedNodeMap_get_length
(
map
,
&
len
);
ok
(
hr
==
S_OK
,
"ret %08x
\n
"
,
hr
);
ok
(
len
==
3
,
"length %d
\n
"
,
len
);
hr
=
IXMLDOMNamedNodeMap_getQualifiedItem
(
map
,
NULL
,
NULL
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"ret %08x
\n
"
,
hr
);
node
=
(
void
*
)
0xdeadbeef
;
hr
=
IXMLDOMNamedNodeMap_getQualifiedItem
(
map
,
NULL
,
NULL
,
&
node
);
ok
(
hr
==
E_INVALIDARG
,
"ret %08x
\n
"
,
hr
);
ok
(
node
==
(
void
*
)
0xdeadbeef
,
"got %p
\n
"
,
node
);
hr
=
IXMLDOMNamedNodeMap_getQualifiedItem
(
map
,
_bstr_
(
"id"
),
NULL
,
NULL
);
ok
(
hr
==
E_INVALIDARG
,
"ret %08x
\n
"
,
hr
);
hr
=
IXMLDOMNamedNodeMap_getQualifiedItem
(
map
,
_bstr_
(
"id"
),
NULL
,
&
node
);
ok
(
hr
==
S_OK
,
"ret %08x
\n
"
,
hr
);
IXMLDOMNode_Release
(
node
);
IXMLDOMNamedNodeMap_Release
(
map
);
IXMLDOMElement_Release
(
element
);
IXMLDOMDocument_Release
(
doc
);
free_bstrs
();
}
START_TEST
(
domdoc
)
START_TEST
(
domdoc
)
{
{
IXMLDOMDocument
*
doc
;
IXMLDOMDocument
*
doc
;
...
@@ -5846,6 +5909,7 @@ START_TEST(domdoc)
...
@@ -5846,6 +5909,7 @@ START_TEST(domdoc)
test_put_nodeValue
();
test_put_nodeValue
();
test_document_IObjectSafety
();
test_document_IObjectSafety
();
test_splitText
();
test_splitText
();
test_getQualifiedItem
();
CoUninitialize
();
CoUninitialize
();
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment