msxml3: Implemented get_doctype() with basic tests.
This commit is contained in:
parent
46fa479105
commit
f9f431186f
|
@ -1517,11 +1517,29 @@ static HRESULT WINAPI domdoc_transformNodeToObject(
|
||||||
|
|
||||||
static HRESULT WINAPI domdoc_get_doctype(
|
static HRESULT WINAPI domdoc_get_doctype(
|
||||||
IXMLDOMDocument3 *iface,
|
IXMLDOMDocument3 *iface,
|
||||||
IXMLDOMDocumentType** documentType )
|
IXMLDOMDocumentType** doctype )
|
||||||
{
|
{
|
||||||
domdoc *This = impl_from_IXMLDOMDocument3(iface);
|
domdoc *This = impl_from_IXMLDOMDocument3(iface);
|
||||||
FIXME("(%p)\n", This);
|
IXMLDOMNode *node;
|
||||||
return E_NOTIMPL;
|
xmlDtdPtr dtd;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
TRACE("(%p)->(%p)\n", This, doctype);
|
||||||
|
|
||||||
|
if (!doctype) return E_INVALIDARG;
|
||||||
|
|
||||||
|
*doctype = NULL;
|
||||||
|
|
||||||
|
dtd = xmlGetIntSubset(get_doc(This));
|
||||||
|
if (!dtd) return S_FALSE;
|
||||||
|
|
||||||
|
node = create_node((xmlNodePtr)dtd);
|
||||||
|
if (!node) return S_FALSE;
|
||||||
|
|
||||||
|
hr = IXMLDOMNode_QueryInterface(node, &IID_IXMLDOMDocumentType, (void**)doctype);
|
||||||
|
IXMLDOMNode_Release(node);
|
||||||
|
|
||||||
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6009,9 +6009,9 @@ static const nodetypedvalue_t get_nodetypedvalue[] = {
|
||||||
static void test_nodeTypedValue(void)
|
static void test_nodeTypedValue(void)
|
||||||
{
|
{
|
||||||
const nodetypedvalue_t *entry = get_nodetypedvalue;
|
const nodetypedvalue_t *entry = get_nodetypedvalue;
|
||||||
|
IXMLDOMDocumentType *doctype, *doctype2;
|
||||||
IXMLDOMProcessingInstruction *pi;
|
IXMLDOMProcessingInstruction *pi;
|
||||||
IXMLDOMDocumentFragment *frag;
|
IXMLDOMDocumentFragment *frag;
|
||||||
IXMLDOMDocumentType *doctype;
|
|
||||||
IXMLDOMDocument *doc, *doc2;
|
IXMLDOMDocument *doc, *doc2;
|
||||||
IXMLDOMCDATASection *cdata;
|
IXMLDOMCDATASection *cdata;
|
||||||
IXMLDOMComment *comment;
|
IXMLDOMComment *comment;
|
||||||
|
@ -6142,17 +6142,28 @@ static void test_nodeTypedValue(void)
|
||||||
ok(hr == S_OK, "ret %08x\n", hr );
|
ok(hr == S_OK, "ret %08x\n", hr );
|
||||||
ok(b == VARIANT_TRUE, "got %d\n", b);
|
ok(b == VARIANT_TRUE, "got %d\n", b);
|
||||||
|
|
||||||
|
EXPECT_REF(doc2, 1);
|
||||||
|
|
||||||
hr = IXMLDOMDocument_get_doctype(doc2, &doctype);
|
hr = IXMLDOMDocument_get_doctype(doc2, &doctype);
|
||||||
todo_wine ok(hr == S_OK, "ret %08x\n", hr );
|
ok(hr == S_OK, "ret %08x\n", hr );
|
||||||
if (hr == S_OK)
|
|
||||||
|
EXPECT_REF(doc2, 1);
|
||||||
|
todo_wine EXPECT_REF(doctype, 2);
|
||||||
|
|
||||||
{
|
{
|
||||||
V_VT(&value) = VT_EMPTY;
|
V_VT(&value) = VT_EMPTY;
|
||||||
hr = IXMLDOMDocumentType_get_nodeTypedValue(doctype, &value);
|
hr = IXMLDOMDocumentType_get_nodeTypedValue(doctype, &value);
|
||||||
ok(hr == S_FALSE, "ret %08x\n", hr );
|
ok(hr == S_FALSE, "ret %08x\n", hr );
|
||||||
ok(V_VT(&value) == VT_NULL, "got %d\n", V_VT(&value));
|
ok(V_VT(&value) == VT_NULL, "got %d\n", V_VT(&value));
|
||||||
IXMLDOMDocumentType_Release(doctype);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hr = IXMLDOMDocument_get_doctype(doc2, &doctype2);
|
||||||
|
ok(hr == S_OK, "ret %08x\n", hr );
|
||||||
|
ok(doctype != doctype2, "got %p, was %p\n", doctype2, doctype);
|
||||||
|
|
||||||
|
IXMLDOMDocumentType_Release(doctype2);
|
||||||
|
IXMLDOMDocumentType_Release(doctype);
|
||||||
|
|
||||||
IXMLDOMDocument_Release(doc2);
|
IXMLDOMDocument_Release(doc2);
|
||||||
|
|
||||||
while (entry->name)
|
while (entry->name)
|
||||||
|
@ -8383,6 +8394,25 @@ static void test_appendChild(void)
|
||||||
IXMLDOMDocument_Release(doc2);
|
IXMLDOMDocument_Release(doc2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_get_doctype(void)
|
||||||
|
{
|
||||||
|
IXMLDOMDocumentType *doctype;
|
||||||
|
IXMLDOMDocument *doc;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
|
doc = create_document(&IID_IXMLDOMDocument);
|
||||||
|
|
||||||
|
hr = IXMLDOMDocument_get_doctype(doc, NULL);
|
||||||
|
ok(hr == E_INVALIDARG, "got 0x%08x\n", hr);
|
||||||
|
|
||||||
|
doctype = (void*)0xdeadbeef;
|
||||||
|
hr = IXMLDOMDocument_get_doctype(doc, &doctype);
|
||||||
|
ok(hr == S_FALSE, "got 0x%08x\n", hr);
|
||||||
|
ok(doctype == NULL, "got %p\n", doctype);
|
||||||
|
|
||||||
|
IXMLDOMDocument_Release(doc);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(domdoc)
|
START_TEST(domdoc)
|
||||||
{
|
{
|
||||||
IXMLDOMDocument *doc;
|
IXMLDOMDocument *doc;
|
||||||
|
@ -8449,6 +8479,7 @@ START_TEST(domdoc)
|
||||||
test_get_xml();
|
test_get_xml();
|
||||||
test_insertBefore();
|
test_insertBefore();
|
||||||
test_appendChild();
|
test_appendChild();
|
||||||
|
test_get_doctype();
|
||||||
test_xsltemplate();
|
test_xsltemplate();
|
||||||
|
|
||||||
CoUninitialize();
|
CoUninitialize();
|
||||||
|
|
Loading…
Reference in New Issue