107 nsres = nsIDOMHTMLDocument_CreateRange(nsdoc, &
range);
109 ERR(
"CreateRange failed: %08x\n", nsres);
114 nsIDOMRange_CreateContextualFragment(
range, &
html_str, &nsfragment);
115 nsIDOMRange_Release(
range);
118 ERR(
"CreateContextualFragment failed: %08x\n", nsres);
122 nsres = nsIDOMNode_GetParentNode(nsnode, &nsparent);
126 nsres = nsIDOMNode_ReplaceChild(nsparent, (
nsIDOMNode*)nsfragment, nsnode, &nstmp);
127 nsIDOMNode_Release(nsparent);
129 ERR(
"ReplaceChild failed: %08x\n", nsres);
132 nsIDOMNode_Release(nstmp);
135 ERR(
"GetParentNode failed: %08x\n", nsres);
139 nsIDOMDocumentFragment_Release(nsfragment);
150 nsres = nsIDOMHTMLElement_GetAttribute(nselem, &name_str, val_str);
175 if(*
val || !use_null) {
193 nsres = nsIDOMHTMLElement_SetAttribute(
elem->nselem, &name_str, &val_str);
198 WARN(
"SetAttribute failed: %08x\n", nsres);
207 static const WCHAR uninitializedW[] = {
'u',
'n',
'i',
'n',
'i',
't',
'i',
'a',
'l',
'i',
'z',
'e',
'd',0};
208 static const WCHAR loadingW[] = {
'l',
'o',
'a',
'd',
'i',
'n',
'g',0};
209 static const WCHAR loadedW[] = {
'l',
'o',
'a',
'd',
'e',
'd',0};
210 static const WCHAR interactiveW[] = {
'i',
'n',
't',
'e',
'r',
'a',
'c',
't',
'i',
'v',
'e',0};
211 static const WCHAR completeW[] = {
'c',
'o',
'm',
'p',
'l',
'e',
't',
'e',0};
213 static const LPCWSTR readystate_strs[] = {
221 assert(readystate <= READYSTATE_COMPLETE);
253 WARN(
"NULL nsdoc\n");
258 nsres = nsIDOMHTMLDocument_CreateElement(doc->
nsdoc, &tag_str, &nselem);
261 ERR(
"CreateElement failed: %08x\n", nsres);
265 nsres = nsIDOMElement_QueryInterface(nselem, &IID_nsIDOMHTMLElement, (
void**)
ret);
266 nsIDOMElement_Release(nselem);
268 ERR(
"Could not get nsIDOMHTMLElement iface: %08x\n", nsres);
289 nsIDOMHTMLElement_Release(nselem);
348 nsIDOMClientRect_Release(
This->nsrect);
367 return IDispatchEx_GetTypeInfo(&
This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
375 return IDispatchEx_GetIDsOfNames(&
This->dispex.IDispatchEx_iface,
riid, rgszNames, cNames,
381 VARIANT *pVarResult, EXCEPINFO *pExcepInfo,
UINT *puArgErr)
385 return IDispatchEx_Invoke(&
This->dispex.IDispatchEx_iface, dispIdMember,
riid, lcid,
wFlags,
386 pDispParams, pVarResult, pExcepInfo, puArgErr);
404 nsres = nsIDOMClientRect_GetLeft(
This->nsrect, &
left);
406 ERR(
"GetLeft failed: %08x\n", nsres);
429 nsres = nsIDOMClientRect_GetTop(
This->nsrect, &
top);
431 ERR(
"GetTop failed: %08x\n", nsres);
454 nsres = nsIDOMClientRect_GetRight(
This->nsrect, &
right);
456 ERR(
"GetRight failed: %08x\n", nsres);
479 nsres = nsIDOMClientRect_GetBottom(
This->nsrect, &
bottom);
481 ERR(
"GetBottom failed: %08x\n", nsres);
531 nsIDOMClientRect_AddRef(nsrect);
532 rect->nsrect = nsrect;
543 return IHTMLDOMNode_QueryInterface(&
This->node.IHTMLDOMNode_iface,
riid,
ppv);
550 return IHTMLDOMNode_AddRef(&
This->node.IHTMLDOMNode_iface);
557 return IHTMLDOMNode_Release(&
This->node.IHTMLDOMNode_iface);
563 return IDispatchEx_GetTypeInfoCount(&
This->node.event_target.dispex.IDispatchEx_iface, pctinfo);
570 return IDispatchEx_GetTypeInfo(&
This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
578 return IDispatchEx_GetIDsOfNames(&
This->node.event_target.dispex.IDispatchEx_iface,
riid, rgszNames, cNames,
584 VARIANT *pVarResult, EXCEPINFO *pExcepInfo,
UINT *puArgErr)
587 return IDispatchEx_Invoke(&
This->node.event_target.dispex.IDispatchEx_iface, dispIdMember,
riid, lcid,
588 wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
596 DISPID dispid, dispidNamed = DISPID_PROPERTYPUT;
597 DISPPARAMS dispParams;
602 hres = IDispatchEx_GetDispID(&
This->node.event_target.dispex.IDispatchEx_iface, strAttributeName,
603 (lFlags&
ATTRFLAG_CASESENSITIVE ? fdexNameCaseSensitive : fdexNameCaseInsensitive) | fdexNameEnsure, &dispid);
608 TRACE(
"Ignoring call on style attribute\n");
612 dispParams.cArgs = 1;
613 dispParams.cNamedArgs = 1;
614 dispParams.rgdispidNamedArgs = &dispidNamed;
615 dispParams.rgvarg = &AttributeValue;
617 return IDispatchEx_InvokeEx(&
This->node.event_target.dispex.IDispatchEx_iface, dispid,
623 DISPPARAMS dispParams = {
NULL,
NULL, 0, 0};
661 FIXME(
"Unsupported flags %x\n", lFlags);
663 hres = IDispatchEx_GetDispID(&
This->node.event_target.dispex.IDispatchEx_iface, strAttributeName,
687 hres = IDispatchEx_GetDispID(&
This->node.event_target.dispex.IDispatchEx_iface, strAttributeName,
690 *pfSuccess = VARIANT_FALSE;
699 TRACE(
"Special case: style\n");
701 hres = IHTMLElement_get_style(&
This->IHTMLElement_iface, &
style);
706 IHTMLStyle_Release(
style);
710 *pfSuccess = VARIANT_TRUE;
726 FIXME(
"NULL nselem\n");
731 nsres = nsIDOMHTMLElement_SetClassName(
This->nselem, &classname_str);
734 ERR(
"SetClassName failed: %08x\n", nsres);
748 FIXME(
"NULL nselem\n");
753 nsres = nsIDOMHTMLElement_GetClassName(
This->nselem, &class_str);
766 FIXME(
"nselem == NULL\n");
771 nsres = nsIDOMHTMLElement_SetId(
This->nselem, &id_str);
774 ERR(
"SetId failed: %08x\n", nsres);
793 nsres = nsIDOMHTMLElement_GetId(
This->nselem, &id_str);
806 static const WCHAR comment_tagW[] = {
'!',0};
808 WARN(
"NULL nselem, assuming comment\n");
815 nsres = nsIDOMHTMLElement_GetTagName(
This->nselem, &tag_str);
827 hres = IHTMLDOMNode_get_parentNode(&
This->node.IHTMLDOMNode_iface, &
node);
831 hres = IHTMLDOMNode_QueryInterface(
node, &IID_IHTMLElement, (
void**)
p);
832 IHTMLDOMNode_Release(
node);
853 *
p = &
This->style->IHTMLStyle_iface;
854 IHTMLStyle_AddRef(*
p);
1059 if(
This->node.vtbl->get_document)
1060 return This->node.vtbl->get_document(&
This->node,
p);
1063 IDispatch_AddRef(*
p);
1092 nsres = nsIDOMHTMLElement_SetTitle(
This->nselem, &title_str);
1095 ERR(
"SetTitle failed: %08x\n", nsres);
1126 nsres = nsIDOMHTMLElement_GetTitle(
This->nselem, &title_str);
1176 switch(
V_VT(&varargStart)) {
1188 FIXME(
"Unsupported for comments\n");
1192 nsres = nsIDOMHTMLElement_ScrollIntoView(
This->nselem,
start, 1);
1204 TRACE(
"(%p)->(%p %p)\n",
This, pChild, pfResult);
1212 ERR(
"not our element\n");
1216 nsres = nsIDOMNode_Contains(
This->node.nsnode,
child->node.nsnode, &
result);
1220 *pfResult =
result ? VARIANT_TRUE : VARIANT_FALSE;
1261 nsres = nsIDOMHTMLElement_GetOffsetLeft(
This->nselem,
p);
1263 ERR(
"GetOffsetLeft failed: %08x\n", nsres);
1277 nsres = nsIDOMHTMLElement_GetOffsetTop(
This->nselem,
p);
1279 ERR(
"GetOffsetTop failed: %08x\n", nsres);
1293 nsres = nsIDOMHTMLElement_GetOffsetWidth(
This->nselem,
p);
1295 ERR(
"GetOffsetWidth failed: %08x\n", nsres);
1309 nsres = nsIDOMHTMLElement_GetOffsetHeight(
This->nselem,
p);
1311 ERR(
"GetOffsetHeight failed: %08x\n", nsres);
1327 nsres = nsIDOMHTMLElement_GetOffsetParent(
This->nselem, &nsparent);
1329 ERR(
"GetOffsetParent failed: %08x\n", nsres);
1337 nsIDOMElement_Release(nsparent);
1341 hres = IHTMLDOMNode_QueryInterface(&
node->IHTMLDOMNode_iface, &IID_IHTMLElement, (
void**)
p);
1360 FIXME(
"NULL nselem\n");
1365 nsres = nsIDOMHTMLElement_SetInnerHTML(
This->nselem, &
html_str);
1368 FIXME(
"SetInnerHtml failed %08x\n", nsres);
1384 FIXME(
"NULL nselem\n");
1389 nsres = nsIDOMHTMLElement_GetInnerHTML(
This->nselem, &
html_str);
1404 nsres = nsIDOMHTMLElement_GetLastChild(
This->nselem, &nschild);
1406 ERR(
"GetLastChild failed: %08x\n", nsres);
1412 nsres = nsIDOMHTMLElement_RemoveChild(
This->nselem, nschild, &tmp);
1413 nsIDOMNode_Release(nschild);
1415 ERR(
"RemoveChild failed: %08x\n", nsres);
1418 nsIDOMNode_Release(tmp);
1422 nsres = nsIDOMHTMLDocument_CreateTextNode(
This->node.doc->nsdoc, &text_str, &text_node);
1425 ERR(
"CreateTextNode failed: %08x\n", nsres);
1429 nsres = nsIDOMHTMLElement_AppendChild(
This->nselem, (
nsIDOMNode*)text_node, &tmp);
1431 ERR(
"AppendChild failed: %08x\n", nsres);
1435 nsIDOMNode_Release(tmp);
1463 WARN(
"(%p)->(%p) semi-stub\n",
This,
p);
1502 static const WCHAR beforebeginW[] = {
'b',
'e',
'f',
'o',
'r',
'e',
'b',
'e',
'g',
'i',
'n',0};
1503 static const WCHAR afterbeginW[] = {
'a',
'f',
't',
'e',
'r',
'b',
'e',
'g',
'i',
'n',0};
1504 static const WCHAR beforeendW[] = {
'b',
'e',
'f',
'o',
'r',
'e',
'e',
'n',
'd',0};
1505 static const WCHAR afterendW[] = {
'a',
'f',
't',
'e',
'r',
'e',
'n',
'd',0};
1507 if (!
strcmpiW(where, beforebeginW)) {
1510 nsres = nsIDOMNode_GetParentNode(
This->node.nsnode, &
parent);
1517 nsres = nsIDOMNode_InsertBefore(
parent, nsnode,
This->node.nsnode, &ret_nsnode);
1518 nsIDOMNode_Release(
parent);
1519 }
else if(!
strcmpiW(where, afterbeginW)) {
1522 nsres = nsIDOMNode_GetFirstChild(
This->node.nsnode, &first_child);
1526 nsres = nsIDOMNode_InsertBefore(
This->node.nsnode, nsnode, first_child, &ret_nsnode);
1531 nsIDOMNode_Release(first_child);
1532 }
else if (!
strcmpiW(where, beforeendW)) {
1533 nsres = nsIDOMNode_AppendChild(
This->node.nsnode, nsnode, &ret_nsnode);
1534 }
else if (!
strcmpiW(where, afterendW)) {
1537 nsres = nsIDOMNode_GetParentNode(
This->node.nsnode, &
parent);
1543 nsres = nsIDOMNode_GetNextSibling(
This->node.nsnode, &next_sibling);
1546 nsres = nsIDOMNode_InsertBefore(
parent, nsnode, next_sibling, &ret_nsnode);
1547 nsIDOMNode_Release(next_sibling);
1549 nsres = nsIDOMNode_AppendChild(
parent, nsnode, &ret_nsnode);
1553 nsIDOMNode_Release(
parent);
1564 nsIDOMNode_Release(ret_nsnode);
1580 if(!
This->node.doc->nsdoc) {
1581 WARN(
"NULL nsdoc\n");
1585 nsres = nsIDOMHTMLDocument_CreateRange(
This->node.doc->nsdoc, &
range);
1588 ERR(
"CreateRange failed: %08x\n", nsres);
1592 nsIDOMRange_SetStartBefore(
range,
This->node.nsnode);
1597 nsIDOMRange_Release(
range);
1601 ERR(
"CreateTextNode failed: %08x\n", nsres);
1606 nsIDOMNode_Release(nsnode);
1621 if(!
This->node.doc->nsdoc) {
1622 WARN(
"NULL nsdoc\n");
1628 nsres = nsIDOMHTMLDocument_CreateTextNode(
This->node.doc->nsdoc, &ns_text, (
nsIDOMText **)&nsnode);
1633 ERR(
"CreateTextNode failed: %08x\n", nsres);
1638 nsIDOMNode_Release(nsnode);
1656 *
p =
This->node.vtbl->is_text_edit &&
This->node.vtbl->is_text_edit(&
This->node)
1657 ? VARIANT_TRUE : VARIANT_FALSE;
1671 IHTMLFiltersCollection **
p)
1843 nsres = nsIDOMNode_GetChildNodes(
This->node.nsnode, &nsnode_list);
1845 ERR(
"GetChildNodes failed: %08x\n", nsres);
1851 nsIDOMNodeList_Release(nsnode_list);
1976 return IHTMLElement_QueryInterface(&
This->IHTMLElement_iface,
riid,
ppv);
1982 return IHTMLElement_AddRef(&
This->IHTMLElement_iface);
1988 return IHTMLElement_Release(&
This->IHTMLElement_iface);
1994 return IDispatchEx_GetTypeInfoCount(&
This->node.event_target.dispex.IDispatchEx_iface, pctinfo);
2001 return IDispatchEx_GetTypeInfo(&
This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
2009 return IDispatchEx_GetIDsOfNames(&
This->node.event_target.dispex.IDispatchEx_iface,
riid, rgszNames, cNames,
2015 VARIANT *pVarResult, EXCEPINFO *pExcepInfo,
UINT *puArgErr)
2018 return IDispatchEx_Invoke(&
This->node.event_target.dispex.IDispatchEx_iface, dispIdMember,
riid, lcid,
2019 wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
2032 FIXME(
"(%p)->(%x)\n",
This, containerCapture);
2061 FIXME(
"(%p)->(%d %d %p)\n",
This,
x,
y, component);
2071 if(!
This->node.doc->content_ready
2072 || !
This->node.doc->basedoc.doc_obj->in_place_active)
2308 nsres = nsIDOMHTMLElement_GetBoundingClientRect(
This->nselem, &nsrect);
2310 ERR(
"GetBoindingClientRect failed: %08x\n", nsres);
2316 nsIDOMClientRect_Release(nsrect);
2352 nsres = nsIDOMHTMLElement_SetTabIndex(
This->nselem,
v);
2354 ERR(
"GetTabIndex failed: %08x\n", nsres);
2367 nsres = nsIDOMHTMLElement_GetTabIndex(
This->nselem, &
index);
2369 ERR(
"GetTabIndex failed: %08x\n", nsres);
2384 nsres = nsIDOMHTMLElement_Focus(
This->nselem);
2386 ERR(
"Focus failed: %08x\n", nsres);
2396 static WCHAR accessKeyW[] = {
'a',
'c',
'c',
'e',
's',
's',
'K',
'e',
'y',0};
2402 return IHTMLElement_setAttribute(&
This->IHTMLElement_iface, accessKeyW,
var, 0);
2469 nsres = nsIDOMHTMLElement_Blur(
This->nselem);
2471 ERR(
"Blur failed: %08x\n", nsres);
2499 nsres = nsIDOMHTMLElement_GetClientHeight(
This->nselem,
p);
2511 nsres = nsIDOMHTMLElement_GetClientWidth(
This->nselem,
p);
2523 nsres = nsIDOMHTMLElement_GetClientTop(
This->nselem,
p);
2537 nsres = nsIDOMHTMLElement_GetClientLeft(
This->nselem,
p);
2570 if(
This->node.vtbl->get_readystate) {
2577 static const WCHAR completeW[] = {
'c',
'o',
'm',
'p',
'l',
'e',
't',
'e',0};
2658 FIXME(
"Unsupported for comment nodes.\n");
2663 nsres = nsIDOMHTMLElement_SetDir(
This->nselem, &nsstr);
2666 ERR(
"SetDir failed: %08x\n", nsres);
2687 nsres = nsIDOMHTMLElement_GetDir(
This->nselem, &dir_str);
2705 nsres = nsIDOMHTMLElement_GetScrollHeight(
This->nselem,
p);
2719 nsres = nsIDOMHTMLElement_GetScrollWidth(
This->nselem,
p);
2733 FIXME(
"NULL nselem\n");
2737 nsIDOMHTMLElement_SetScrollTop(
This->nselem,
v);
2748 nsres = nsIDOMHTMLElement_GetScrollTop(
This->nselem,
p);
2762 FIXME(
"NULL nselem\n");
2766 nsIDOMHTMLElement_SetScrollLeft(
This->nselem,
v);
2782 FIXME(
"NULL nselem\n");
2786 nsres = nsIDOMHTMLElement_GetScrollLeft(
This->nselem,
p);
2822 IHTMLElement *insertedElement, IHTMLElement **inserted)
2845 BSTR where, IHTMLElement **applied)
2899 if(!
This->runtime_style) {
2907 *
p = &
This->runtime_style->IHTMLStyle_iface;
2908 IHTMLStyle_AddRef(*
p);
2955 IHTMLElementCollection **pelColl)
2965 nsres = nsIDOMHTMLElement_GetElementsByTagName(
This->nselem, &tag_str, &nscol);
2968 ERR(
"GetElementByTagName failed: %08x\n", nsres);
2973 nsIDOMHTMLCollection_Release(nscol);
3094 return IHTMLElement_QueryInterface(&
This->IHTMLElement_iface,
riid,
ppv);
3100 return IHTMLElement_AddRef(&
This->IHTMLElement_iface);
3106 return IHTMLElement_Release(&
This->IHTMLElement_iface);
3112 return IDispatchEx_GetTypeInfoCount(&
This->node.event_target.dispex.IDispatchEx_iface, pctinfo);
3119 return IDispatchEx_GetTypeInfo(&
This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
3127 return IDispatchEx_GetIDsOfNames(&
This->node.event_target.dispex.IDispatchEx_iface,
riid, rgszNames, cNames,
3133 VARIANT *pVarResult, EXCEPINFO *pExcepInfo,
UINT *puArgErr)
3136 return IDispatchEx_Invoke(&
This->node.event_target.dispex.IDispatchEx_iface, dispIdMember,
riid, lcid,
3137 wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
3143 FIXME(
"(%p)->(%p %p)\n",
This, mergeThis, pvarFlags);
3233 nsres = nsIDOMHTMLElement_SetContentEditable(
This->nselem, &
str);
3253 nsres = nsIDOMHTMLElement_GetContentEditable(
This->nselem, &
str);
3288 if(
This->node.vtbl->put_disabled)
3289 return This->node.vtbl->put_disabled(&
This->node,
v);
3309 if(
This->node.vtbl->get_disabled)
3310 return This->node.vtbl->get_disabled(&
This->node,
p);
3563 return IHTMLElement_QueryInterface(&
This->IHTMLElement_iface,
riid,
ppv);
3569 return IHTMLElement_AddRef(&
This->IHTMLElement_iface);
3575 return IHTMLElement_Release(&
This->IHTMLElement_iface);
3581 return IDispatchEx_GetTypeInfoCount(&
This->node.event_target.dispex.IDispatchEx_iface, pctinfo);
3588 return IDispatchEx_GetTypeInfo(&
This->node.event_target.dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
3595 return IDispatchEx_GetIDsOfNames(&
This->node.event_target.dispex.IDispatchEx_iface,
riid, rgszNames, cNames,
3603 return IDispatchEx_Invoke(&
This->node.event_target.dispex.IDispatchEx_iface, dispIdMember,
riid, lcid,
3604 wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
3650 IHTMLDOMAttribute **ppretAttribute)
3653 FIXME(
"(%p)->(%p %p)\n",
This, pattr, ppretAttribute);
3658 IHTMLDOMAttribute **ppretAttribute)
3661 FIXME(
"(%p)->(%p %p)\n",
This, pattr, ppretAttribute);
3743 *
ppv = &
This->IHTMLElement_iface;
3745 *
ppv = &
This->IHTMLElement_iface;
3747 *
ppv = &
This->IHTMLElement_iface;
3749 *
ppv = &
This->IHTMLElement2_iface;
3751 *
ppv = &
This->IHTMLElement3_iface;
3753 *
ppv = &
This->IHTMLElement4_iface;
3755 *
ppv = &
This->cp_container.IConnectionPointContainer_iface;