Commit b1a9b4fd authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

mshtml: Use document.defaultView to get iframe contentWindow.

parent d3a3af75
...@@ -43,6 +43,40 @@ typedef struct { ...@@ -43,6 +43,40 @@ typedef struct {
#define HTMLFRAMEBASE2(x) (&(x)->lpIHTMLFrameBase2Vtbl) #define HTMLFRAMEBASE2(x) (&(x)->lpIHTMLFrameBase2Vtbl)
static HRESULT create_content_window(HTMLIFrame *This, nsIDOMHTMLDocument *nsdoc, HTMLWindow **ret)
{
nsIDOMDocumentView *nsdocview;
nsIDOMAbstractView *nsview;
nsIDOMWindow *nswindow;
nsresult nsres;
HRESULT hres;
nsres = nsIDOMHTMLDocument_QueryInterface(nsdoc, &IID_nsIDOMDocumentView, (void**)&nsdocview);
if(NS_FAILED(nsres)) {
ERR("Could not get nsIDOMDocumentView: %08x\n", nsres);
return E_FAIL;
}
nsres = nsIDOMDocumentView_GetDefaultView(nsdocview, &nsview);
nsIDOMDocumentView_Release(nsdocview);
if(NS_FAILED(nsres)) {
ERR("GetDefaultView failed: %08x\n", nsres);
return E_FAIL;
}
nsres = nsIDOMAbstractView_QueryInterface(nsview, &IID_nsIDOMWindow, (void**)&nswindow);
nsIDOMAbstractView_Release(nsview);
if(NS_FAILED(nsres)) {
ERR("Coult not get nsIDOMWindow iface: %08x\n", nsres);
return E_FAIL;
}
hres = HTMLWindow_Create(This->element.node.doc->basedoc.doc_obj, nswindow, ret);
nsIDOMWindow_Release(nswindow);
return hres;
}
#define HTMLFRAMEBASE2_THIS(iface) DEFINE_THIS(HTMLIFrame, IHTMLFrameBase2, iface) #define HTMLFRAMEBASE2_THIS(iface) DEFINE_THIS(HTMLIFrame, IHTMLFrameBase2, iface)
static HRESULT WINAPI HTMLIFrameBase2_QueryInterface(IHTMLFrameBase2 *iface, REFIID riid, void **ppv) static HRESULT WINAPI HTMLIFrameBase2_QueryInterface(IHTMLFrameBase2 *iface, REFIID riid, void **ppv)
...@@ -130,10 +164,10 @@ static HRESULT WINAPI HTMLIFrameBase2_get_contentWindow(IHTMLFrameBase2 *iface, ...@@ -130,10 +164,10 @@ static HRESULT WINAPI HTMLIFrameBase2_get_contentWindow(IHTMLFrameBase2 *iface,
return E_FAIL; return E_FAIL;
} }
hres = HTMLWindow_Create(This->element.node.doc->basedoc.doc_obj, NULL, &window); hres = create_content_window(This, nshtmldoc, &window);
if(FAILED(hres)) { if(FAILED(hres)) {
nsIDOMDocument_Release(nsdoc); nsIDOMHTMLDocument_Release(nshtmldoc);
return hres; return E_FAIL;
} }
hres = create_doc_from_nsdoc(nshtmldoc, This->element.node.doc->basedoc.doc_obj, window, &content_doc); hres = create_doc_from_nsdoc(nshtmldoc, This->element.node.doc->basedoc.doc_obj, window, &content_doc);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment