[PATCH] Implement IXMLDOMText length property

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Sat Feb 16 06:19:35 CST 2008


---
 dlls/msxml3/tests/domdoc.c |    9 +++++++++
 dlls/msxml3/text.c         |   24 +++++++++++++++++++++---
 2 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index 182b324..7dbe4fb 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 );
@@ -559,6 +560,14 @@ static void test_domdoc( void )
         ok(r == S_OK, "ret %08x\n", r );
         ok( !lstrcmpW( str, _bstr_("text") ), "incorrect nodeTypeString string\n");
         SysFreeString(str);
+        
+        /* 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);
 
         IXMLDOMText_Release( nodetext );
     }
diff --git a/dlls/msxml3/text.c b/dlls/msxml3/text.c
index 7d4c081..01b34df 100644
--- a/dlls/msxml3/text.c
+++ b/dlls/msxml3/text.c
@@ -42,7 +42,7 @@ typedef struct _domtext
     const struct IXMLDOMTextVtbl *lpVtbl;
     LONG ref;
     IUnknown *element_unk;
-    IXMLDOMElement *element;
+    IXMLDOMNode *element;
 } domtext;
 
 static inline domtext *impl_from_IXMLDOMText( IXMLDOMText *iface )
@@ -487,8 +487,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( 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(
-- 
1.5.3.8


--------------050400070901060004020006--




More information about the wine-patches mailing list