Ivan Sinitsin wrote:
Changelog: mshtml.dll:Add implementation of HTMLDocument_(Get|Set)Title
First of all it would be nice if you could add a test case for these.
static HRESULT WINAPI HTMLDocument_put_title(IHTMLDocument2 *iface, BSTR v) { HTMLDocument *This = HTMLDOC_THIS(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_w(v));
- return E_NOTIMPL;
- nsIDOMDocument *nsdoc;
- nsIDOMHTMLDocument *nshtmldoc;
- nsAString nsstr;
- nsresult nsres;
- TRACE("(%p)->(%s)\n", This, debugstr_w(v));
- if(!This->nscontainer)
return E_POINTER;
- nsres = nsIWebNavigation_GetDocument(This->nscontainer->navigation, &nsdoc);
- if(NS_FAILED(nsres)) {
ERR("GetDocument failed: %08x\n", nsres);
return nsres;
- }
- if(NS_FAILED(nsres) || !nsdoc).
return E_FAIL;
- nsIDOMDocument_QueryInterface(nsdoc, &IID_nsIDOMHTMLDocument, (void**)&nshtmldoc);
- nsIDOMDocument_Release(nsdoc);
- nsAString_Init(&nsstr, NULL);
- nsAString_SetData(&nsstr, v);
Use second argument of nsAString_Init instead of nsAString_SetData.
- nsres = nsIDOMHTMLDocument_SetTitle(nshtmldoc, &nsstr);
- nsIDOMHTMLDocument_Release(nshtmldoc);
You leak nsstr here.
- return nsres;
Don't mix nsresult with HRESULT. You should return S_OK here.
}
static HRESULT WINAPI HTMLDocument_get_title(IHTMLDocument2 *iface, BSTR *p) { HTMLDocument *This = HTMLDOC_THIS(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
- nsIDOMDocument *nsdoc;
- nsIDOMHTMLDocument *nshtmldoc;
- nsAString nsstr;
- const PRUnichar *ret;
- nsresult nsres;
- TRACE("(%p)->(%p)\n", This, p);
- if (!p).
return E_POINTER;
- if(!This->nscontainer)
return E_POINTER;
- nsres = nsIWebNavigation_GetDocument(This->nscontainer->navigation, &nsdoc);
- if(NS_FAILED(nsres)) {
ERR("GetDocument failed: %08x\n", nsres);
return nsres;
- }
- if(NS_FAILED(nsres) || !nsdoc).
return E_FAIL;
- nsIDOMDocument_QueryInterface(nsdoc, &IID_nsIDOMHTMLDocument, (void**)&nshtmldoc);
- nsIDOMDocument_Release(nsdoc);
- nsAString_Init(&nsstr, NULL);
- nsres = nsIDOMHTMLDocument_GetTitle(nshtmldoc, &nsstr);
- nsIDOMHTMLDocument_Release(nshtmldoc);
- if (NS_FAILED(nsres))
return nsres;
Don't mix nsresult with HRESULT. Also ERR would be nice in this case.
- nsAString_GetData(&nsstr, &ret);
- *p = SysAllocString(ret);
DOM API usually returns NULL instead of empty string. That's worth testing.
- return nsres;
}
Again, don't mix nsresult with HRESULT.
Jacek