static HRESULT WINAPI HTMLDocument_write(IHTMLDocument2 *iface, SAFEARRAY *psarray)
{
- HTMLDocument *This = HTMLDOC_THIS(iface);
- nsIDOMDocument *domdoc;
- nsIDOMHTMLDocument *nsdoc;
- nsAString nsstr;
- VARIANT *var;
- int i;
- nsresult nsres;
HRESULT hres;
+ VARIANT *pvar;
+ IHTMLElement *pbody;
+ BSTR vtext;
+ int i;
- TRACE("(%p)->(%p)\n", iface, psarray);
-
- if(psarray->cDims != 1) {
- FIXME("cDims=%d\n", psarray->cDims);
- return E_INVALIDARG;
- }
-
- if(!This->nscontainer)
- return S_OK;
-
- nsres = nsIWebNavigation_GetDocument(This->nscontainer->navigation, &domdoc);
- if(NS_FAILED(nsres)) {
- ERR("GetDocument failed: %08x\n", nsres);
- return S_OK;
- }
+ vtext = SysAllocString(L"");
- nsres = nsIDOMDocument_QueryInterface(domdoc, &IID_nsIDOMHTMLDocument, (void**)&nsdoc);
- nsIDOMDocument_Release(domdoc);
- if(NS_FAILED(nsres))
- return S_OK;
+ HTMLDocument_get_body(iface,&pbody);
- hres = SafeArrayAccessData(psarray, (void**)&var);
- if(FAILED(hres)) {
- WARN("SafeArrayAccessData failed: %08x\n", hres);
- nsIDOMHTMLDocument_Release(nsdoc);
- return hres;
+ hres = IHTMLElement_get_innerHTML(pbody, &vtext);
+ if (FAILED(hres)) {
+ vtext = SysAllocString(L"");
}
- nsAString_Init(&nsstr, NULL);
-
- for(i=0; i < psarray->rgsabound[0].cElements; i++) {
- if(V_VT(var+i) == VT_BSTR) {
- nsAString_SetData(&nsstr, V_BSTR(var+i));
- nsres = nsIDOMHTMLDocument_Write(nsdoc, &nsstr);
- if(NS_FAILED(nsres))
- ERR("Write failed: %08x\n", nsres);
- }else {
- FIXME("vt=%d\n", V_VT(var+i));
+ hres=SafeArrayAccessData(psarray, (void **)&pvar);
+ if (FAILED(hres)) return hres;
+ for (i=0; i < psarray->rgsabound[0].cElements; i++) {
+ hres = VarBstrCat(vtext, V_BSTR(&(pvar[i])), &vtext);
+ if (FAILED(hres)) {
+ break;
}
}
- nsAString_Finish(&nsstr);
- SafeArrayUnaccessData(psarray);
- nsIDOMHTMLDocument_Release(nsdoc);
+ IHTMLElement_put_innerHTML(pbody,vtext);
+ SysFreeString(vtext);
+ hres = SafeArrayUnaccessData(psarray);
return S_OK;
}
VARIANT features, VARIANT replace, IDispatch **pomWindowResult)
{
HTMLDocument *This = HTMLDOC_THIS(iface);
- FIXME("(%p)->(%s %p)\n", This, debugstr_w(url), pomWindowResult);
- return E_NOTIMPL;
+ TRACE("(%p)->(%s %p)\n", iface, debugstr_w(url), pomWindowResult);
+ return IHTMLDocument2_QueryInterface(iface, &IID_IDispatch, (void**)pomWindowResult);
}
static HRESULT WINAPI HTMLDocument_close(IHTMLDocument2 *iface)