static HRESULT HTMLCommentElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) { HTMLCommentElement *This = impl_from_HTMLDOMNode(iface); *ppv = NULL; if(IsEqualGUID(&IID_IHTMLCommentElement, riid)) { TRACE("(%p)->(IID_IHTMLCommentElement %p)\n", This, ppv); *ppv = &This->IHTMLCommentElement_iface; }else { return HTMLElement_QI(&This->element.node, riid, ppv); } IUnknown_AddRef((IUnknown*)*ppv); return S_OK; }
static HRESULT HTMLDOMTextNode_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) { HTMLDOMTextNode *This = impl_from_HTMLDOMNode(iface); TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv); if(IsEqualGUID(&IID_IHTMLDOMTextNode, riid)) *ppv = &This->IHTMLDOMTextNode_iface; else if(IsEqualGUID(&IID_IHTMLDOMTextNode2, riid)) *ppv = &This->IHTMLDOMTextNode2_iface; else return HTMLDOMNode_QI(&This->node, riid, ppv); IUnknown_AddRef((IUnknown*)*ppv); return S_OK; }
static HRESULT HTMLIFrame_bind_to_tree(HTMLDOMNode *iface) { HTMLIFrame *This = impl_from_HTMLDOMNode(iface); nsIDOMDocument *nsdoc; nsresult nsres; HRESULT hres; nsres = nsIDOMHTMLIFrameElement_GetContentDocument(This->framebase.nsiframe, &nsdoc); if(NS_FAILED(nsres) || !nsdoc) { ERR("GetContentDocument failed: %08x\n", nsres); return E_FAIL; } hres = set_frame_doc(&This->framebase, nsdoc); nsIDOMDocument_Release(nsdoc); return hres; }
static HRESULT HTMLObjectElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) { HTMLObjectElement *This = impl_from_HTMLDOMNode(iface); if(IsEqualGUID(&IID_IUnknown, riid)) { TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); *ppv = &This->IHTMLObjectElement_iface; }else if(IsEqualGUID(&IID_IDispatch, riid)) { TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); *ppv = &This->IHTMLObjectElement_iface; }else if(IsEqualGUID(&IID_IHTMLObjectElement, riid)) { TRACE("(%p)->(IID_IHTMLObjectElement %p)\n", This, ppv); *ppv = &This->IHTMLObjectElement_iface; }else if(IsEqualGUID(&IID_IHTMLObjectElement2, riid)) { TRACE("(%p)->(IID_IHTMLObjectElement2 %p)\n", This, ppv); *ppv = &This->IHTMLObjectElement2_iface; }else if(IsEqualGUID(&IID_HTMLPluginContainer, riid)) { TRACE("(%p)->(IID_HTMLPluginContainer %p)\n", This, ppv); *ppv = &This->plugin_container; return S_OK; }else { HRESULT hres; hres = HTMLElement_QI(&This->plugin_container.element.node, riid, ppv); if(hres == E_NOINTERFACE && This->plugin_container.plugin_host && This->plugin_container.plugin_host->plugin_unk) { IUnknown *plugin_iface, *ret; hres = IUnknown_QueryInterface(This->plugin_container.plugin_host->plugin_unk, riid, (void**)&plugin_iface); if(hres == S_OK) { hres = wrap_iface(plugin_iface, (IUnknown*)&This->IHTMLObjectElement_iface, &ret); IUnknown_Release(plugin_iface); if(FAILED(hres)) return hres; TRACE("returning plugin iface %p wrapped to %p\n", plugin_iface, ret); *ppv = ret; return S_OK; } } return hres; } IUnknown_AddRef((IUnknown*)*ppv); return S_OK; }
static EventTarget *HTMLBodyElement_get_event_prop_target(HTMLDOMNode *iface, int event_id) { HTMLBodyElement *This = impl_from_HTMLDOMNode(iface); switch(event_id) { case EVENTID_BLUR: case EVENTID_ERROR: case EVENTID_FOCUS: case EVENTID_LOAD: case EVENTID_SCROLL: return This->textcont.element.node.doc && This->textcont.element.node.doc->window ? &This->textcont.element.node.doc->window->event_target : &This->textcont.element.node.event_target; default: return &This->textcont.element.node.event_target; } }
static HRESULT HTMLInputElementImpl_fire_event(HTMLDOMNode *iface, eventid_t eid, BOOL *handled) { HTMLInputElement *This = impl_from_HTMLDOMNode(iface); if(eid == EVENTID_CLICK) { nsresult nsres; *handled = TRUE; nsres = nsIDOMHTMLInputElement_Click(This->nsinput); if(NS_FAILED(nsres)) { ERR("Click failed: %08x\n", nsres); return E_FAIL; } } return S_OK; }
HRESULT script_elem_from_nsscript(HTMLDocumentNode *doc, nsIDOMHTMLScriptElement *nsscript, HTMLScriptElement **ret) { nsIDOMNode *nsnode; HTMLDOMNode *node; nsresult nsres; HRESULT hres; nsres = nsIDOMHTMLScriptElement_QueryInterface(nsscript, &IID_nsIDOMNode, (void**)&nsnode); assert(nsres == NS_OK); hres = get_node(doc, nsnode, TRUE, &node); nsIDOMNode_Release(nsnode); if(FAILED(hres)) return hres; assert(node->vtbl == &HTMLScriptElementImplVtbl); *ret = impl_from_HTMLDOMNode(node); return S_OK; }
static HRESULT HTMLTableCell_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) { HTMLTableCell *This = impl_from_HTMLDOMNode(iface); if(IsEqualGUID(&IID_IUnknown, riid)) { TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); *ppv = &This->IHTMLTableCell_iface; }else if(IsEqualGUID(&IID_IDispatch, riid)) { TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); *ppv = &This->IHTMLTableCell_iface; }else if(IsEqualGUID(&IID_IHTMLTableCell, riid)) { TRACE("(%p)->(IID_IHTMLTableCell %p)\n", This, ppv); *ppv = &This->IHTMLTableCell_iface; }else { return HTMLElement_QI(&This->element.node, riid, ppv); } IUnknown_AddRef((IUnknown*)*ppv); return S_OK; }
static HRESULT HTMLFormElement_invoke(HTMLDOMNode *iface, DISPID id, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *res, EXCEPINFO *ei, IServiceProvider *caller) { HTMLFormElement *This = impl_from_HTMLDOMNode(iface); IDispatch *ret; HRESULT hres; TRACE("(%p)->(%x %x %x %p %p %p %p)\n", This, id, lcid, flags, params, res, ei, caller); hres = htmlform_item(This, id - MSHTML_DISPID_CUSTOM_MIN, &ret); if(FAILED(hres)) return hres; if(ret) { V_VT(res) = VT_DISPATCH; V_DISPATCH(res) = ret; }else { V_VT(res) = VT_NULL; } return S_OK; }
static HRESULT HTMLObjectElement_QI(HTMLDOMNode *iface, REFIID riid, void **ppv) { HTMLObjectElement *This = impl_from_HTMLDOMNode(iface); if(IsEqualGUID(&IID_IUnknown, riid)) { TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); *ppv = &This->IHTMLObjectElement_iface; } else if(IsEqualGUID(&IID_IDispatch, riid)) { TRACE("(%p)->(IID_IDispatch %p)\n", This, ppv); *ppv = &This->IHTMLObjectElement_iface; } else if(IsEqualGUID(&IID_IHTMLObjectElement, riid)) { TRACE("(%p)->(IID_IHTMLObjectElement %p)\n", This, ppv); *ppv = &This->IHTMLObjectElement_iface; } else if(IsEqualGUID(&IID_HTMLPluginContainer, riid)) { TRACE("(%p)->(IID_HTMLPluginContainer %p)\n", This, ppv); *ppv = &This->plugin_container; return S_OK; } else { return HTMLElement_QI(&This->plugin_container.element.node, riid, ppv); } IUnknown_AddRef((IUnknown*)*ppv); return S_OK; }
static void HTMLIFrame_destructor(HTMLDOMNode *iface) { HTMLIFrame *This = impl_from_HTMLDOMNode(iface); HTMLFrameBase_destructor(&This->framebase); }
static HRESULT HTMLScriptElement_get_readystate(HTMLDOMNode *iface, BSTR *p) { HTMLScriptElement *This = impl_from_HTMLDOMNode(iface); return IHTMLScriptElement_get_readyState(&This->IHTMLScriptElement_iface, p); }
static HRESULT HTMLFormElement_get_dispid(HTMLDOMNode *iface, BSTR name, DWORD grfdex, DISPID *pid) { HTMLFormElement *This = impl_from_HTMLDOMNode(iface); nsIDOMHTMLCollection *elements; nsAString nsstr, name_str; UINT32 len, i; nsresult nsres; HRESULT hres = DISP_E_UNKNOWNNAME; static const PRUnichar nameW[] = {'n','a','m','e',0}; TRACE("(%p)->(%s %x %p)\n", This, wine_dbgstr_w(name), grfdex, pid); nsres = nsIDOMHTMLFormElement_GetElements(This->nsform, &elements); if(NS_FAILED(nsres)) { FIXME("GetElements failed: 0x%08x\n", nsres); return E_FAIL; } nsres = nsIDOMHTMLCollection_GetLength(elements, &len); if(NS_FAILED(nsres)) { FIXME("GetLength failed: 0x%08x\n", nsres); nsIDOMHTMLCollection_Release(elements); return E_FAIL; } if(len > MSHTML_CUSTOM_DISPID_CNT) len = MSHTML_CUSTOM_DISPID_CNT; /* FIXME: Implement in more generic way */ if('0' <= *name && *name <= '9') { WCHAR *end_ptr; i = strtoulW(name, &end_ptr, 10); if(!*end_ptr && i < len) { *pid = MSHTML_DISPID_CUSTOM_MIN + i; return S_OK; } } nsAString_Init(&nsstr, NULL); for(i = 0; i < len; ++i) { nsIDOMNode *nsitem; nsIDOMHTMLElement *nshtml_elem; const PRUnichar *str; nsres = nsIDOMHTMLCollection_Item(elements, i, &nsitem); if(NS_FAILED(nsres)) { FIXME("Item failed: 0x%08x\n", nsres); hres = E_FAIL; break; } nsres = nsIDOMNode_QueryInterface(nsitem, &IID_nsIDOMHTMLElement, (void**)&nshtml_elem); nsIDOMNode_Release(nsitem); if(NS_FAILED(nsres)) { FIXME("Failed to get nsIDOMHTMLNode interface: 0x%08x\n", nsres); hres = E_FAIL; break; } /* compare by id attr */ nsres = nsIDOMHTMLElement_GetId(nshtml_elem, &nsstr); if(NS_FAILED(nsres)) { FIXME("GetId failed: 0x%08x\n", nsres); nsIDOMHTMLElement_Release(nshtml_elem); hres = E_FAIL; break; } nsAString_GetData(&nsstr, &str); if(!strcmpiW(str, name)) { nsIDOMHTMLElement_Release(nshtml_elem); /* FIXME: using index for dispid */ *pid = MSHTML_DISPID_CUSTOM_MIN + i; hres = S_OK; break; } /* compare by name attr */ nsres = get_elem_attr_value(nshtml_elem, nameW, &name_str, &str); nsIDOMHTMLElement_Release(nshtml_elem); if(NS_SUCCEEDED(nsres)) { if(!strcmpiW(str, name)) { nsAString_Finish(&name_str); /* FIXME: using index for dispid */ *pid = MSHTML_DISPID_CUSTOM_MIN + i; hres = S_OK; break; } nsAString_Finish(&name_str); } } nsAString_Finish(&nsstr); nsIDOMHTMLCollection_Release(elements); return hres; }
static void HTMLScriptElement_destructor(HTMLDOMNode *iface) { HTMLScriptElement *This = impl_from_HTMLDOMNode(iface); HTMLElement_destructor(&This->element.node); }
static void HTMLTableCell_destructor(HTMLDOMNode *iface) { HTMLTableCell *This = impl_from_HTMLDOMNode(iface); HTMLElement_destructor(&This->element.node); }
static HRESULT HTMLSelectElementImpl_get_disabled(HTMLDOMNode *iface, VARIANT_BOOL *p) { HTMLSelectElement *This = impl_from_HTMLDOMNode(iface); return IHTMLSelectElement_get_disabled(&This->IHTMLSelectElement_iface, p); }
static HRESULT HTMLLinkElementImpl_put_disabled(HTMLDOMNode *iface, VARIANT_BOOL v) { HTMLLinkElement *This = impl_from_HTMLDOMNode(iface); return IHTMLLinkElement_put_disabled(&This->IHTMLLinkElement_iface, v); }
static HRESULT HTMLObjectElement_get_readystate(HTMLDOMNode *iface, BSTR *p) { HTMLObjectElement *This = impl_from_HTMLDOMNode(iface); FIXME("(%p)->(%p)\n", This, p); return E_NOTIMPL; }
static HRESULT HTMLDOMTextNode_clone(HTMLDOMNode *iface, nsIDOMNode *nsnode, HTMLDOMNode **ret) { HTMLDOMTextNode *This = impl_from_HTMLDOMNode(iface); return HTMLDOMTextNode_Create(This->node.doc, nsnode, ret); }
static HRESULT HTMLIFrame_get_readystate(HTMLDOMNode *iface, BSTR *p) { HTMLIFrame *This = impl_from_HTMLDOMNode(iface); return IHTMLFrameBase2_get_readyState(&This->framebase.IHTMLFrameBase2_iface, p); }