Jacek Caban : mshtml: Pass GeckoBrowser instead of HTMLDocumentObj to create_outer_window.
Alexandre Julliard
julliard at winehq.org
Mon Mar 11 16:29:53 CDT 2019
Module: wine
Branch: master
Commit: 2d8610050df647065080e30d1d10b9bd16f505ab
URL: https://source.winehq.org/git/wine.git/?a=commit;h=2d8610050df647065080e30d1d10b9bd16f505ab
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Mar 11 14:24:59 2019 +0100
mshtml: Pass GeckoBrowser instead of HTMLDocumentObj to create_outer_window.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/mshtml/htmldoc.c | 9 +--------
dlls/mshtml/htmlframe.c | 10 ++--------
dlls/mshtml/htmlwindow.c | 18 +++++++-----------
dlls/mshtml/mshtml_private.h | 2 +-
4 files changed, 11 insertions(+), 28 deletions(-)
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index afb4a8a..5731d36 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -5445,7 +5445,6 @@ static HRESULT create_document_object(BOOL is_mhtml, IUnknown *outer, REFIID rii
{
mozIDOMWindowProxy *mozwindow;
HTMLDocumentObj *doc;
- nsIDOMWindow *nswindow = NULL;
nsresult nsres;
HRESULT hres;
@@ -5497,13 +5496,7 @@ static HRESULT create_document_object(BOOL is_mhtml, IUnknown *outer, REFIID rii
if(NS_FAILED(nsres))
ERR("GetContentDOMWindow failed: %08x\n", nsres);
- nsres = mozIDOMWindowProxy_QueryInterface(mozwindow, &IID_nsIDOMWindow, (void**)&nswindow);
- mozIDOMWindowProxy_Release(mozwindow);
- assert(nsres == NS_OK);
-
- hres = HTMLOuterWindow_Create(doc, nswindow, NULL /* FIXME */, &doc->basedoc.window);
- if(nswindow)
- nsIDOMWindow_Release(nswindow);
+ hres = create_outer_window(doc->nscontainer, mozwindow, NULL, &doc->basedoc.window);
if(FAILED(hres)) {
htmldoc_release(&doc->basedoc);
return hres;
diff --git a/dlls/mshtml/htmlframe.c b/dlls/mshtml/htmlframe.c
index 17a78e5..1a0d017 100644
--- a/dlls/mshtml/htmlframe.c
+++ b/dlls/mshtml/htmlframe.c
@@ -54,15 +54,9 @@ static HRESULT set_frame_doc(HTMLFrameBase *frame, nsIDOMDocument *nsdoc)
return E_FAIL;
window = mozwindow_to_window(mozwindow);
- if(!window) {
- nsIDOMWindow *nswindow;
- nsres = mozIDOMWindowProxy_QueryInterface(mozwindow, &IID_nsIDOMWindow, (void**)&nswindow);
- assert(nsres == NS_OK);
-
- hres = HTMLOuterWindow_Create(frame->element.node.doc->basedoc.doc_obj, nswindow,
+ if(!window && frame->element.node.doc->browser)
+ hres = create_outer_window(frame->element.node.doc->browser, mozwindow,
frame->element.node.doc->basedoc.window, &window);
- nsIDOMWindow_Release(nswindow);
- }
mozIDOMWindowProxy_Release(mozwindow);
if(FAILED(hres))
return hres;
diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index 4d36f60..d980645 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -3532,10 +3532,11 @@ static HRESULT create_inner_window(HTMLOuterWindow *outer_window, IMoniker *mon,
return S_OK;
}
-HRESULT HTMLOuterWindow_Create(HTMLDocumentObj *doc_obj, nsIDOMWindow *nswindow,
+HRESULT create_outer_window(GeckoBrowser *browser, mozIDOMWindowProxy *mozwindow,
HTMLOuterWindow *parent, HTMLOuterWindow **ret)
{
HTMLOuterWindow *window;
+ nsresult nsres;
HRESULT hres;
window = alloc_window(sizeof(HTMLOuterWindow));
@@ -3545,17 +3546,12 @@ HRESULT HTMLOuterWindow_Create(HTMLDocumentObj *doc_obj, nsIDOMWindow *nswindow,
window->base.outer_window = window;
window->base.inner_window = NULL;
- window->doc_obj = doc_obj;
-
- if(nswindow) {
- nsresult nsres;
-
- nsIDOMWindow_AddRef(nswindow);
- window->nswindow = nswindow;
+ window->doc_obj = browser->doc;
- nsres = nsIDOMWindow_QueryInterface(nswindow, &IID_mozIDOMWindowProxy, (void**)&window->window_proxy);
- assert(nsres == NS_OK);
- }
+ mozIDOMWindowProxy_AddRef(mozwindow);
+ window->window_proxy = mozwindow;
+ nsres = mozIDOMWindowProxy_QueryInterface(mozwindow, &IID_nsIDOMWindow, (void**)&window->nswindow);
+ assert(nsres == NS_OK);
window->scriptmode = parent ? parent->scriptmode : SCRIPTMODE_GECKO;
window->readystate = READYSTATE_UNINITIALIZED;
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 2808ca9..aa0cac8 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -867,7 +867,7 @@ HRESULT MHTMLDocument_Create(IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
HRESULT HTMLLoadOptions_Create(IUnknown*,REFIID,void**) DECLSPEC_HIDDEN;
HRESULT create_document_node(nsIDOMHTMLDocument*,GeckoBrowser*,HTMLInnerWindow*,HTMLDocumentNode**) DECLSPEC_HIDDEN;
-HRESULT HTMLOuterWindow_Create(HTMLDocumentObj*,nsIDOMWindow*,HTMLOuterWindow*,HTMLOuterWindow**) DECLSPEC_HIDDEN;
+HRESULT create_outer_window(GeckoBrowser*,mozIDOMWindowProxy*,HTMLOuterWindow*,HTMLOuterWindow**) DECLSPEC_HIDDEN;
HRESULT update_window_doc(HTMLInnerWindow*) DECLSPEC_HIDDEN;
HTMLOuterWindow *mozwindow_to_window(const mozIDOMWindowProxy*) DECLSPEC_HIDDEN;
void get_top_window(HTMLOuterWindow*,HTMLOuterWindow**) DECLSPEC_HIDDEN;
More information about the wine-cvs
mailing list