static HRESULT WINAPI HTMLSelectElement_add(IHTMLSelectElement *iface, IHTMLElement *element, VARIANT before) { HTMLSelectElement *This = impl_from_IHTMLSelectElement(iface); nsIWritableVariant *nsvariant; HTMLElement *element_obj; nsresult nsres; TRACE("(%p)->(%p %s)\n", This, element, debugstr_variant(&before)); element_obj = unsafe_impl_from_IHTMLElement(element); if(!element_obj) { FIXME("External IHTMLElement implementation?\n"); return E_INVALIDARG; } nsvariant = create_nsvariant(); if(!nsvariant) return E_FAIL; switch(V_VT(&before)) { case VT_EMPTY: case VT_ERROR: nsres = nsIWritableVariant_SetAsEmpty(nsvariant); break; case VT_I2: nsres = nsIWritableVariant_SetAsInt16(nsvariant, V_I2(&before)); break; default: FIXME("unhandled before %s\n", debugstr_variant(&before)); nsIWritableVariant_Release(nsvariant); return E_NOTIMPL; } if(NS_SUCCEEDED(nsres)) nsres = nsIDOMHTMLSelectElement_Add(This->nsselect, element_obj->nselem, (nsIVariant*)nsvariant); nsIWritableVariant_Release(nsvariant); if(NS_FAILED(nsres)) { ERR("Add failed: %08x\n", nsres); return E_FAIL; } return S_OK; }
static HRESULT WINAPI HTMLXMLHttpRequest_send(IHTMLXMLHttpRequest *iface, VARIANT varBody) { HTMLXMLHttpRequest *This = impl_from_IHTMLXMLHttpRequest(iface); nsIWritableVariant *nsbody = NULL; nsresult nsres = NS_OK; TRACE("(%p)->(%s)\n", This, debugstr_variant(&varBody)); switch(V_VT(&varBody)) { case VT_NULL: case VT_EMPTY: case VT_ERROR: break; case VT_BSTR: { nsAString nsstr; nsbody = create_nsvariant(); if(!nsbody) return E_OUTOFMEMORY; nsAString_InitDepend(&nsstr, V_BSTR(&varBody)); nsres = nsIWritableVariant_SetAsAString(nsbody, &nsstr); nsAString_Finish(&nsstr); break; } default: FIXME("unsupported body type %s\n", debugstr_variant(&varBody)); return E_NOTIMPL; } if(NS_SUCCEEDED(nsres)) nsres = nsIXMLHttpRequest_Send(This->nsxhr, (nsIVariant*)nsbody); if(nsbody) nsIWritableVariant_Release(nsbody); if(NS_FAILED(nsres)) { ERR("nsIXMLHttpRequest_Send failed: %08x\n", nsres); return E_FAIL; } return S_OK; }