Module: wine Branch: master Commit: 72e70a0122f906b9899d80ce2824db6d190e39f7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=72e70a0122f906b9899d80ce28...
Author: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Tue Feb 19 08:28:38 2008 +1100
msxml3: Implement IXMLDOMText length property.
---
dlls/msxml3/tests/domdoc.c | 9 +++++++++ dlls/msxml3/text.c | 22 ++++++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c index 2401878..ef1b3d9 100644 --- a/dlls/msxml3/tests/domdoc.c +++ b/dlls/msxml3/tests/domdoc.c @@ -366,6 +366,7 @@ static void test_domdoc( void ) VARIANT var; BSTR str; long code; + long nLength = 0;
r = CoCreateInstance( &CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER, &IID_IXMLDOMDocument, (LPVOID*)&doc ); @@ -554,6 +555,14 @@ static void test_domdoc( void ) ok( V_VT(&var) == VT_NULL, "incorrect dataType type\n"); VariantClear(&var);
+ /* test length property */ + r = IXMLDOMText_get_length(nodetext, NULL); + ok(r == E_INVALIDARG, "ret %08x\n", r ); + + r = IXMLDOMText_get_length(nodetext, &nLength); + ok(r == S_OK, "ret %08x\n", r ); + ok(nLength == 4, "expected 4 got %ld\n", nLength); + /* test nodeTypeString */ r = IXMLDOMText_get_nodeTypeString(nodetext, &str); ok(r == S_OK, "ret %08x\n", r ); diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c index 4c57cce..031e5a9 100644 --- a/dlls/msxml3/text.c +++ b/dlls/msxml3/text.c @@ -491,8 +491,26 @@ static HRESULT WINAPI domtext_get_length( IXMLDOMText *iface, long *len) { - FIXME("\n"); - return E_NOTIMPL; + domtext *This = impl_from_IXMLDOMText( iface ); + xmlnode *pDOMNode = impl_from_IXMLDOMNode( (IXMLDOMNode*)This->element ); + xmlChar *pContent; + long nLength = 0; + + TRACE("%p\n", iface); + + if(!len) + return E_INVALIDARG; + + pContent = xmlNodeGetContent(pDOMNode->node); + if(pContent) + { + nLength = xmlStrlen(pContent); + xmlFree(pContent); + } + + *len = nLength; + + return S_OK; }
static HRESULT WINAPI domtext_substringData(