diff --git a/patches/mshtml-Wine_Gecko_2.47/0001-mshtml-Wine-Gecko-2.47-beta1-release.patch b/patches/mshtml-Wine_Gecko_2.47/0001-mshtml-Wine-Gecko-2.47-beta1-release.patch new file mode 100644 index 00000000..fb9c5b9c --- /dev/null +++ b/patches/mshtml-Wine_Gecko_2.47/0001-mshtml-Wine-Gecko-2.47-beta1-release.patch @@ -0,0 +1,1560 @@ +From db4dd5eb76f809596d0e3e52c23de65fd823a708 Mon Sep 17 00:00:00 2001 +From: Jacek Caban +Date: Thu, 5 May 2016 12:49:26 +0200 +Subject: mshtml: Wine Gecko 2.47-beta1 release. + +--- + dlls/appwiz.cpl/addons.c | 6 +- + dlls/mshtml/editor.c | 24 ++--- + dlls/mshtml/htmlcurstyle.c | 12 ++- + dlls/mshtml/htmldoc.c | 7 +- + dlls/mshtml/htmlframebase.c | 18 ++-- + dlls/mshtml/htmlwindow.c | 43 +++++--- + dlls/mshtml/mshtml_private.h | 2 + + dlls/mshtml/mutation.c | 19 ++-- + dlls/mshtml/npplugin.c | 10 +- + dlls/mshtml/nsembed.c | 17 ++- + dlls/mshtml/nsiface.idl | 249 ++++++++++++++++++++++++------------------- + dlls/mshtml/nsio.c | 80 +++++++++++--- + dlls/mshtml/nsservice.c | 22 ++-- + dlls/mshtml/olecmd.c | 2 +- + 14 files changed, 320 insertions(+), 191 deletions(-) + +diff --git a/dlls/appwiz.cpl/addons.c b/dlls/appwiz.cpl/addons.c +index 8cbc221..9126ca0 100644 +--- a/dlls/appwiz.cpl/addons.c ++++ b/dlls/appwiz.cpl/addons.c +@@ -51,14 +51,14 @@ + + WINE_DEFAULT_DEBUG_CHANNEL(appwizcpl); + +-#define GECKO_VERSION "2.44" ++#define GECKO_VERSION "2.47-beta1" + + #ifdef __i386__ + #define ARCH_STRING "x86" +-#define GECKO_SHA "7930300c531d975ad63ee20d5e9b3974e339e43e" ++#define GECKO_SHA "3c7826ee9d18e3354d84e5bcf2c8e573214e7781" + #elif defined(__x86_64__) + #define ARCH_STRING "x86_64" +-#define GECKO_SHA "ed473f584938ebe8da1f6e660610e616104567b3" ++#define GECKO_SHA "90cd35e4fa1bfe99919884357fc9f664acb6b923" + #else + #define ARCH_STRING "" + #define GECKO_SHA "???" +diff --git a/dlls/mshtml/editor.c b/dlls/mshtml/editor.c +index 8166094..fb77ee1 100644 +--- a/dlls/mshtml/editor.c ++++ b/dlls/mshtml/editor.c +@@ -136,7 +136,7 @@ static nsresult get_ns_command_state(NSContainer *This, const char *cmd, nsIComm + return nsres; + } + +- nsres = nsICommandManager_GetCommandState(cmdmgr, cmd, This->doc->basedoc.window->nswindow, nsparam); ++ nsres = nsICommandManager_GetCommandState(cmdmgr, cmd, This->doc->basedoc.window->window_proxy, nsparam); + if(NS_FAILED(nsres)) + ERR("GetCommandState(%s) failed: %08x\n", debugstr_a(cmd), nsres); + +@@ -379,23 +379,23 @@ static void set_font_size(HTMLDocument *This, LPCWSTR size) + set_dirty(This, VARIANT_TRUE); + } + +-static void handle_arrow_key(HTMLDocument *This, nsIDOMKeyEvent *event, const char * const cmds[4]) ++static void handle_arrow_key(HTMLDocument *This, nsIDOMEvent *event, nsIDOMKeyEvent *key_event, const char * const cmds[4]) + { + int i=0; + cpp_bool b; + +- nsIDOMKeyEvent_GetCtrlKey(event, &b); ++ nsIDOMKeyEvent_GetCtrlKey(key_event, &b); + if(b) + i |= 1; + +- nsIDOMKeyEvent_GetShiftKey(event, &b); ++ nsIDOMKeyEvent_GetShiftKey(key_event, &b); + if(b) + i |= 2; + + if(cmds[i]) + do_ns_editor_command(This->doc_obj->nscontainer, cmds[i]); + +- nsIDOMKeyEvent_PreventDefault(event); ++ nsIDOMEvent_PreventDefault(event); + } + + void handle_edit_event(HTMLDocument *This, nsIDOMEvent *event) +@@ -417,7 +417,7 @@ void handle_edit_event(HTMLDocument *This, nsIDOMEvent *event) + }; + + TRACE("left\n"); +- handle_arrow_key(This, key_event, cmds); ++ handle_arrow_key(This, event, key_event, cmds); + break; + } + case DOM_VK_RIGHT: { +@@ -429,7 +429,7 @@ void handle_edit_event(HTMLDocument *This, nsIDOMEvent *event) + }; + + TRACE("right\n"); +- handle_arrow_key(This, key_event, cmds); ++ handle_arrow_key(This, event, key_event, cmds); + break; + } + case DOM_VK_UP: { +@@ -441,7 +441,7 @@ void handle_edit_event(HTMLDocument *This, nsIDOMEvent *event) + }; + + TRACE("up\n"); +- handle_arrow_key(This, key_event, cmds); ++ handle_arrow_key(This, event, key_event, cmds); + break; + } + case DOM_VK_DOWN: { +@@ -453,7 +453,7 @@ void handle_edit_event(HTMLDocument *This, nsIDOMEvent *event) + }; + + TRACE("down\n"); +- handle_arrow_key(This, key_event, cmds); ++ handle_arrow_key(This, event, key_event, cmds); + break; + } + case DOM_VK_DELETE: { +@@ -464,7 +464,7 @@ void handle_edit_event(HTMLDocument *This, nsIDOMEvent *event) + }; + + TRACE("delete\n"); +- handle_arrow_key(This, key_event, cmds); ++ handle_arrow_key(This, event, key_event, cmds); + break; + } + case DOM_VK_HOME: { +@@ -476,7 +476,7 @@ void handle_edit_event(HTMLDocument *This, nsIDOMEvent *event) + }; + + TRACE("home\n"); +- handle_arrow_key(This, key_event, cmds); ++ handle_arrow_key(This, event, key_event, cmds); + break; + } + case DOM_VK_END: { +@@ -488,7 +488,7 @@ void handle_edit_event(HTMLDocument *This, nsIDOMEvent *event) + }; + + TRACE("end\n"); +- handle_arrow_key(This, key_event, cmds); ++ handle_arrow_key(This, event, key_event, cmds); + break; + } + } +diff --git a/dlls/mshtml/htmlcurstyle.c b/dlls/mshtml/htmlcurstyle.c +index df3281d..be28e60 100644 +--- a/dlls/mshtml/htmlcurstyle.c ++++ b/dlls/mshtml/htmlcurstyle.c +@@ -17,6 +17,7 @@ + */ + + #include ++#include + + #define COBJMACROS + +@@ -1323,7 +1324,8 @@ static dispex_static_data_t HTMLCurrentStyle_dispex = { + HRESULT HTMLCurrentStyle_Create(HTMLElement *elem, IHTMLCurrentStyle **p) + { + nsIDOMCSSStyleDeclaration *nsstyle; +- nsIDOMWindow *nsview; ++ mozIDOMWindowProxy *nsview; ++ nsIDOMWindow *nswindow; + nsAString nsempty_str; + HTMLCurrentStyle *ret; + nsresult nsres; +@@ -1339,10 +1341,14 @@ HRESULT HTMLCurrentStyle_Create(HTMLElement *elem, IHTMLCurrentStyle **p) + return E_FAIL; + } + ++ nsres = mozIDOMWindowProxy_QueryInterface(nsview, &IID_nsIDOMWindow, (void**)&nswindow); ++ mozIDOMWindowProxy_Release(nsview); ++ assert(nsres == NS_OK); ++ + nsAString_Init(&nsempty_str, NULL); +- nsres = nsIDOMWindow_GetComputedStyle(nsview, (nsIDOMElement*)elem->nselem, &nsempty_str, &nsstyle); ++ nsres = nsIDOMWindow_GetComputedStyle(nswindow, (nsIDOMElement*)elem->nselem, &nsempty_str, &nsstyle); + nsAString_Finish(&nsempty_str); +- nsIDOMWindow_Release(nsview); ++ nsIDOMWindow_Release(nswindow); + if(NS_FAILED(nsres)) { + ERR("GetComputedStyle failed: %08x\n", nsres); + return E_FAIL; +diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c +index 784a578..04e5280 100644 +--- a/dlls/mshtml/htmldoc.c ++++ b/dlls/mshtml/htmldoc.c +@@ -4884,6 +4884,7 @@ static dispex_static_data_t HTMLDocumentObj_dispex = { + + HRESULT HTMLDocument_Create(IUnknown *pUnkOuter, REFIID riid, void** ppvObject) + { ++ mozIDOMWindowProxy *mozwindow; + HTMLDocumentObj *doc; + nsIDOMWindow *nswindow = NULL; + nsresult nsres; +@@ -4919,10 +4920,14 @@ HRESULT HTMLDocument_Create(IUnknown *pUnkOuter, REFIID riid, void** ppvObject) + if(FAILED(hres)) + return hres; + +- nsres = nsIWebBrowser_GetContentDOMWindow(doc->nscontainer->webbrowser, &nswindow); ++ nsres = nsIWebBrowser_GetContentDOMWindow(doc->nscontainer->webbrowser, &mozwindow); + 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); +diff --git a/dlls/mshtml/htmlframebase.c b/dlls/mshtml/htmlframebase.c +index bba9678..83cf9fc 100644 +--- a/dlls/mshtml/htmlframebase.c ++++ b/dlls/mshtml/htmlframebase.c +@@ -41,7 +41,7 @@ static const WCHAR pxW[] = {'p','x',0}; + + HRESULT set_frame_doc(HTMLFrameBase *frame, nsIDOMDocument *nsdoc) + { +- nsIDOMWindow *nswindow; ++ mozIDOMWindowProxy *mozwindow; + HTMLOuterWindow *window; + nsresult nsres; + HRESULT hres = S_OK; +@@ -49,15 +49,21 @@ HRESULT set_frame_doc(HTMLFrameBase *frame, nsIDOMDocument *nsdoc) + if(frame->content_window) + return S_OK; + +- nsres = nsIDOMDocument_GetDefaultView(nsdoc, &nswindow); +- if(NS_FAILED(nsres) || !nswindow) ++ nsres = nsIDOMDocument_GetDefaultView(nsdoc, &mozwindow); ++ if(NS_FAILED(nsres) || !mozwindow) + return E_FAIL; + +- window = nswindow_to_window(nswindow); +- if(!window) ++ 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, + frame->element.node.doc->basedoc.window, &window); +- nsIDOMWindow_Release(nswindow); ++ nsIDOMWindow_Release(nswindow); ++ } ++ mozIDOMWindowProxy_Release(mozwindow); + if(FAILED(hres)) + return hres; + +diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c +index 5f46c2a..36043e4 100644 +--- a/dlls/mshtml/htmlwindow.c ++++ b/dlls/mshtml/htmlwindow.c +@@ -217,6 +217,8 @@ static void release_outer_window(HTMLOuterWindow *This) + + if(This->nswindow) + nsIDOMWindow_Release(This->nswindow); ++ if(This->window_proxy) ++ mozIDOMWindowProxy_Release(This->window_proxy); + + list_remove(&This->entry); + heap_free(This); +@@ -333,7 +335,7 @@ static HRESULT WINAPI HTMLWindow2_Invoke(IHTMLWindow2 *iface, DISPID dispIdMembe + static HRESULT get_frame_by_index(HTMLOuterWindow *This, UINT32 index, HTMLOuterWindow **ret) + { + nsIDOMWindowCollection *nsframes; +- nsIDOMWindow *nswindow; ++ mozIDOMWindowProxy *mozwindow; + UINT32 length; + nsresult nsres; + +@@ -351,16 +353,16 @@ static HRESULT get_frame_by_index(HTMLOuterWindow *This, UINT32 index, HTMLOuter + return DISP_E_MEMBERNOTFOUND; + } + +- nsres = nsIDOMWindowCollection_Item(nsframes, index, &nswindow); ++ nsres = nsIDOMWindowCollection_Item(nsframes, index, &mozwindow); + nsIDOMWindowCollection_Release(nsframes); + if(NS_FAILED(nsres)) { + FIXME("nsIDOMWindowCollection_Item failed: 0x%08x\n", nsres); + return E_FAIL; + } + +- *ret = nswindow_to_window(nswindow); ++ *ret = mozwindow_to_window(mozwindow); + +- nsIDOMWindow_Release(nswindow); ++ mozIDOMWindowProxy_Release(mozwindow); + return S_OK; + } + +@@ -368,7 +370,7 @@ HRESULT get_frame_by_name(HTMLOuterWindow *This, const WCHAR *name, BOOL deep, H + { + nsIDOMWindowCollection *nsframes; + HTMLOuterWindow *window = NULL; +- nsIDOMWindow *nswindow; ++ mozIDOMWindowProxy *mozwindow; + nsAString name_str; + UINT32 length, i; + nsresult nsres; +@@ -386,15 +388,15 @@ HRESULT get_frame_by_name(HTMLOuterWindow *This, const WCHAR *name, BOOL deep, H + } + + nsAString_InitDepend(&name_str, name); +- nsres = nsIDOMWindowCollection_NamedItem(nsframes, &name_str, &nswindow); ++ nsres = nsIDOMWindowCollection_NamedItem(nsframes, &name_str, &mozwindow); + nsAString_Finish(&name_str); + if(NS_FAILED(nsres)) { + nsIDOMWindowCollection_Release(nsframes); + return E_FAIL; + } + +- if(nswindow) { +- *ret = nswindow_to_window(nswindow); ++ if(mozwindow) { ++ *ret = mozwindow_to_window(mozwindow); + return S_OK; + } + +@@ -405,19 +407,19 @@ HRESULT get_frame_by_name(HTMLOuterWindow *This, const WCHAR *name, BOOL deep, H + HTMLOuterWindow *window_iter; + BSTR id; + +- nsres = nsIDOMWindowCollection_Item(nsframes, i, &nswindow); ++ nsres = nsIDOMWindowCollection_Item(nsframes, i, &mozwindow); + if(NS_FAILED(nsres)) { + FIXME("nsIDOMWindowCollection_Item failed: 0x%08x\n", nsres); + hres = E_FAIL; + break; + } + +- window_iter = nswindow_to_window(nswindow); ++ window_iter = mozwindow_to_window(mozwindow); + +- nsIDOMWindow_Release(nswindow); ++ mozIDOMWindowProxy_Release(mozwindow); + + if(!window_iter) { +- WARN("nsIDOMWindow without HTMLOuterWindow: %p\n", nswindow); ++ WARN("nsIDOMWindow without HTMLOuterWindow: %p\n", mozwindow); + continue; + } + +@@ -3031,8 +3033,13 @@ HRESULT HTMLOuterWindow_Create(HTMLDocumentObj *doc_obj, nsIDOMWindow *nswindow, + window->window_ref->ref = 1; + + if(nswindow) { ++ nsresult nsres; ++ + nsIDOMWindow_AddRef(nswindow); + window->nswindow = nswindow; ++ ++ nsres = nsIDOMWindow_QueryInterface(nswindow, &IID_mozIDOMWindowProxy, (void**)&window->window_proxy); ++ assert(nsres == NS_OK); + } + + window->scriptmode = parent ? parent->scriptmode : SCRIPTMODE_GECKO; +@@ -3171,3 +3178,15 @@ HTMLOuterWindow *nswindow_to_window(const nsIDOMWindow *nswindow) + + return NULL; + } ++ ++HTMLOuterWindow *mozwindow_to_window(const mozIDOMWindowProxy *mozwindow) ++{ ++ HTMLOuterWindow *iter; ++ ++ LIST_FOR_EACH_ENTRY(iter, &window_list, HTMLOuterWindow, entry) { ++ if(iter->window_proxy == mozwindow) ++ return iter; ++ } ++ ++ return NULL; ++} +diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h +index 71cb06f..095b9dc 100644 +--- a/dlls/mshtml/mshtml_private.h ++++ b/dlls/mshtml/mshtml_private.h +@@ -422,6 +422,7 @@ struct HTMLOuterWindow { + + HTMLDocumentObj *doc_obj; + nsIDOMWindow *nswindow; ++ mozIDOMWindowProxy *window_proxy; + HTMLOuterWindow *parent; + HTMLFrameBase *frame_element; + +@@ -800,6 +801,7 @@ HRESULT create_doc_from_nsdoc(nsIDOMHTMLDocument*,HTMLDocumentObj*,HTMLInnerWind + HRESULT HTMLOuterWindow_Create(HTMLDocumentObj*,nsIDOMWindow*,HTMLOuterWindow*,HTMLOuterWindow**) DECLSPEC_HIDDEN; + HRESULT update_window_doc(HTMLInnerWindow*) DECLSPEC_HIDDEN; + HTMLOuterWindow *nswindow_to_window(const nsIDOMWindow*) DECLSPEC_HIDDEN; ++HTMLOuterWindow *mozwindow_to_window(const mozIDOMWindowProxy*) DECLSPEC_HIDDEN; + void get_top_window(HTMLOuterWindow*,HTMLOuterWindow**) DECLSPEC_HIDDEN; + HRESULT HTMLOptionElementFactory_Create(HTMLInnerWindow*,HTMLOptionElementFactory**) DECLSPEC_HIDDEN; + HRESULT HTMLImageElementFactory_Create(HTMLInnerWindow*,HTMLImageElementFactory**) DECLSPEC_HIDDEN; +diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c +index 22a3e61..adde295 100644 +--- a/dlls/mshtml/mutation.c ++++ b/dlls/mshtml/mutation.c +@@ -606,33 +606,30 @@ static void NSAPI nsDocumentObserver_DocumentStatesChanged(nsIDocumentObserver * + { + } + +-static void NSAPI nsDocumentObserver_StyleSheetAdded(nsIDocumentObserver *iface, nsIDocument *aDocument, +- nsIStyleSheet *aStyleSheet, cpp_bool aDocumentSheet) ++static void NSAPI nsDocumentObserver_StyleSheetAdded(nsIDocumentObserver *iface, mozilla_StyleSheetHandle aStyleSheet, ++ cpp_bool aDocumentSheet) + { + } + +-static void NSAPI nsDocumentObserver_StyleSheetRemoved(nsIDocumentObserver *iface, nsIDocument *aDocument, +- nsIStyleSheet *aStyleSheet, cpp_bool aDocumentSheet) ++static void NSAPI nsDocumentObserver_StyleSheetRemoved(nsIDocumentObserver *iface, mozilla_StyleSheetHandle aStyleSheet, ++ cpp_bool aDocumentSheet) + { + } + + static void NSAPI nsDocumentObserver_StyleSheetApplicableStateChanged(nsIDocumentObserver *iface, +- nsIDocument *aDocument, nsIStyleSheet *aStyleSheet, cpp_bool aApplicable) ++ mozilla_StyleSheetHandle aStyleSheet) + { + } + +-static void NSAPI nsDocumentObserver_StyleRuleChanged(nsIDocumentObserver *iface, nsIDocument *aDocument, +- nsIStyleSheet *aStyleSheet, nsIStyleRule *aOldStyleRule, nsIStyleSheet *aNewStyleRule) ++static void NSAPI nsDocumentObserver_StyleRuleChanged(nsIDocumentObserver *iface, mozilla_StyleSheetHandle aStyleSheet) + { + } + +-static void NSAPI nsDocumentObserver_StyleRuleAdded(nsIDocumentObserver *iface, nsIDocument *aDocument, +- nsIStyleSheet *aStyleSheet, nsIStyleRule *aStyleRule) ++static void NSAPI nsDocumentObserver_StyleRuleAdded(nsIDocumentObserver *iface, mozilla_StyleSheetHandle aStyleSheet) + { + } + +-static void NSAPI nsDocumentObserver_StyleRuleRemoved(nsIDocumentObserver *iface, nsIDocument *aDocument, +- nsIStyleSheet *aStyleSheet, nsIStyleRule *aStyleRule) ++static void NSAPI nsDocumentObserver_StyleRuleRemoved(nsIDocumentObserver *iface, mozilla_StyleSheetHandle aStyleSheet) + { + } + +diff --git a/dlls/mshtml/npplugin.c b/dlls/mshtml/npplugin.c +index 6ae503f..302ff42 100644 +--- a/dlls/mshtml/npplugin.c ++++ b/dlls/mshtml/npplugin.c +@@ -244,7 +244,7 @@ static nsIDOMHTMLElement *get_dom_element(NPP instance) + + static HTMLInnerWindow *get_elem_window(nsIDOMHTMLElement *elem) + { +- nsIDOMWindow *nswindow; ++ mozIDOMWindowProxy *mozwindow; + nsIDOMDocument *nsdoc; + HTMLOuterWindow *window; + nsresult nsres; +@@ -253,13 +253,13 @@ static HTMLInnerWindow *get_elem_window(nsIDOMHTMLElement *elem) + if(NS_FAILED(nsres)) + return NULL; + +- nsres = nsIDOMDocument_GetDefaultView(nsdoc, &nswindow); ++ nsres = nsIDOMDocument_GetDefaultView(nsdoc, &mozwindow); + nsIDOMDocument_Release(nsdoc); +- if(NS_FAILED(nsres) || !nswindow) ++ if(NS_FAILED(nsres) || !mozwindow) + return NULL; + +- window = nswindow_to_window(nswindow); +- nsIDOMWindow_Release(nswindow); ++ window = mozwindow_to_window(mozwindow); ++ mozIDOMWindowProxy_Release(mozwindow); + + return window->base.inner_window; + } +diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c +index 17851ce..22f37af 100644 +--- a/dlls/mshtml/nsembed.c ++++ b/dlls/mshtml/nsembed.c +@@ -1059,7 +1059,7 @@ void get_editor_controller(NSContainer *This) + } + + nsres = nsIEditingSession_GetEditorForWindow(editing_session, +- This->doc->basedoc.window->nswindow, &This->editor); ++ This->doc->basedoc.window->window_proxy, &This->editor); + nsIEditingSession_Release(editing_session); + if(NS_FAILED(nsres)) { + ERR("Could not get editor: %08x\n", nsres); +@@ -1903,9 +1903,9 @@ static nsresult NSAPI nsInterfaceRequestor_GetInterface(nsIInterfaceRequestor *i + { + NSContainer *This = impl_from_nsIInterfaceRequestor(iface); + +- if(IsEqualGUID(&IID_nsIDOMWindow, riid)) { ++ if(IsEqualGUID(&IID_mozIDOMWindowProxy, riid)) { + TRACE("(%p)->(IID_nsIDOMWindow %p)\n", This, result); +- return nsIWebBrowser_GetContentDOMWindow(This->webbrowser, (nsIDOMWindow**)result); ++ return nsIWebBrowser_GetContentDOMWindow(This->webbrowser, (mozIDOMWindowProxy**)result); + } + + return nsIWebBrowserChrome_QueryInterface(&This->nsIWebBrowserChrome_iface, riid, result); +@@ -2161,6 +2161,7 @@ void NSContainer_Release(NSContainer *This) + + nsIXMLHttpRequest *create_nsxhr(nsIDOMWindow *nswindow) + { ++ mozIDOMWindow *inner_window; + nsIScriptSecurityManager *secman; + nsIPrincipal *nspri; + nsIGlobalObject *nsglo; +@@ -2182,7 +2183,15 @@ nsIXMLHttpRequest *create_nsxhr(nsIDOMWindow *nswindow) + return NULL; + } + +- nsres = nsIDOMWindow_QueryInterface(nswindow, &IID_nsIGlobalObject, (void **)&nsglo); ++ nsres = nsIDOMWindow_GetInnerWindow(nswindow, &inner_window); ++ if(NS_FAILED(nsres)) { ++ ERR("Could not get inner window: %08x\n", nsres); ++ nsISupports_Release(nspri); ++ return NULL; ++ } ++ ++ nsres = mozIDOMWindow_QueryInterface(inner_window, &IID_nsIGlobalObject, (void **)&nsglo); ++ mozIDOMWindow_Release(inner_window); + assert(nsres == NS_OK); + + nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr, +diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl +index 22a71f8..efe8015 100644 +--- a/dlls/mshtml/nsiface.idl ++++ b/dlls/mshtml/nsiface.idl +@@ -25,7 +25,7 @@ + + #pragma makedep header + +-cpp_quote("#define GECKO_VERSION \"2.44\"") ++cpp_quote("#define GECKO_VERSION \"2.47-beta1\"") + cpp_quote("#define GECKO_VERSION_STRING \"Wine Gecko \" GECKO_VERSION") + + import "wtypes.idl"; +@@ -113,6 +113,7 @@ interface nsISelection; + interface nsIDOMHTMLSelectElement; + interface nsIFile; + interface nsIDocShell; ++interface mozIDOMWindowProxy; + + interface IMoniker; + +@@ -150,8 +151,6 @@ typedef nsISupports nsIDOMMediaList; + typedef nsISupports nsIDOMHTMLTableSectionElement; + typedef nsISupports nsIDOMClientRectList; + typedef nsISupports nsINode; +-typedef nsISupports nsIStyleSheet; +-typedef nsISupports nsIStyleRule; + typedef nsISupports nsIDOMUserDataHandler; + typedef nsISupports nsISHEntry; + typedef nsISupports nsIPresShell; +@@ -490,6 +489,7 @@ interface nsIMutable : nsISupports + interface nsIStandardURL : nsIMutable + { + nsresult Init(uint32_t aUrlType, int32_t aDefaultPort, const nsACString *aSpec, const char *aOriginCharset, nsIURI *aBaseURI); ++ nsresult SetDefaultPort(int32_t aNewDefaultPort); + } + + [ +@@ -553,6 +553,8 @@ interface nsILoadGroup : nsIRequest + nsresult GetSchedulingContextID(nsID *aSchedulingContextID); + nsresult GetDefaultLoadFlags(nsLoadFlags *aDefaultLoadFlags); + nsresult SetDefaultLoadFlags(nsLoadFlags aDefaultLoadFlags); ++ nsresult GetUserAgentOverrideCache(nsACString *aUserAgentOverrideCache); ++ nsresult SetUserAgentOverrideCache(const nsACString *aUserAgentOverrideCache); + } + + [ +@@ -612,7 +614,7 @@ interface nsIHttpHeaderVisitor : nsISupports + + [ + object, +- uuid(e90acf2d-eaf2-41d8-97b2-c8d99f6437a1), ++ uuid(b2596105-3d0d-4e6a-824f-0539713bb879), + local + ] + interface nsIHttpChannel : nsIChannel +@@ -623,6 +625,10 @@ interface nsIHttpChannel : nsIChannel + nsresult SetReferrer(nsIURI *aReferrer); + nsresult GetReferrerPolicy(uint32_t *aReferrerPolicy); + nsresult SetReferrerWithPolicy(nsIURI *referrer, uint32_t referrerPolicy); ++ nsresult GetProtocolVersion(nsACString *aProtocolVersion); ++ nsresult GetTransferSize(uint64_t *aTransferSize); ++ nsresult GetDecodedBodySize(uint64_t *aDecodedBodySize); ++ nsresult GetEncodedBodySize(uint64_t *aEncodedBodySize); + nsresult GetRequestHeader(const nsACString *aHeader, nsACString *_retval); + nsresult SetRequestHeader(const nsACString *aHeader, const nsACString *aValue, bool aMerge); + nsresult SetEmptyRequestHeader(const nsACString *aHeader); +@@ -645,14 +651,14 @@ interface nsIHttpChannel : nsIChannel + nsresult IsNoStoreResponse(bool *_retval); + nsresult IsNoCacheResponse(bool *_retval); + nsresult IsPrivateResponse(bool *_retval); +- nsresult RedirectTo(nsIURI *aNewURI); ++ nsresult RedirectTo(nsIURI *aTargetURI); + nsresult GetSchedulingContextID(nsID *aSchedulingContextID); + nsresult SetSchedulingContextID(const nsID aSchedulingContextID); + } + + [ + object, +- uuid(9eabaac6-cc7c-4ca1-9430-65f2daaa578f), ++ uuid(4e28263d-1e03-46f4-aa5c-9512f91957f9), + local + ] + interface nsIHttpChannelInternal : nsISupports +@@ -699,8 +705,9 @@ interface nsIHttpChannelInternal : nsISupports + nsresult GetNetworkInterfaceId(nsACString *aNetworkInterfaceId); + nsresult SetNetworkInterfaceId(const nsACString *aNetworkInterfaceId); + nsresult GetProxyURI(nsIURI **aProxyURI); +- nsresult SetCorsPreflightParameters(const void /*nsTArray*/ *unsafeHeaders, +- bool withCredentials, nsIPrincipal *preflightPrincipal); ++ nsresult SetCorsPreflightParameters(const void /*nsTArray*/ *unsafeHeaders); ++ nsresult GetBlockAuthPrompt(bool *aBlockAuthPrompt) ; ++ nsresult SetBlockAuthPrompt(bool aBlockAuthPrompt); + } + + [ +@@ -1188,7 +1195,7 @@ interface nsIDOMDocumentFragment : nsIDOMNode + + [ + object, +- uuid(35dc5030-dc83-4291-88a2-0906c549788e), ++ uuid(b15fa0f4-97c1-4388-af62-2ceff7a89bdf), + local + ] + interface nsIDOMDocument : nsIDOMNode +@@ -1220,7 +1227,7 @@ interface nsIDOMDocument : nsIDOMNode + nsIDOMTreeWalker **_retval); + cpp_quote("#undef CreateEvent") + nsresult CreateEvent(const nsAString *eventType, nsIDOMEvent **_retval); +- nsresult GetDefaultView(nsIDOMWindow **aDefaultView); ++ nsresult GetDefaultView(mozIDOMWindowProxy **aDefaultView); + nsresult GetCharacterSet(nsAString *aCharacterSet); + nsresult GetDir(nsAString *aDir); + nsresult SetDir(const nsAString *aDir); +@@ -1264,7 +1271,7 @@ interface nsIDOMDocument : nsIDOMNode + + [ + object, +- uuid(bd2a0a46-17e4-46ea-9e5d-6a97cf5e3b28), ++ uuid(cd31e61f-cfc2-4b91-9385-17b6a2d0633d), + local + ] + interface nsIDOMHTMLDocument : nsIDOMDocument +@@ -1394,14 +1401,32 @@ interface nsISelection : nsISupports + + [ + object, +- uuid(a6cf906f-15b3-11d2-932e-00805f8add32), ++ uuid(8d64f457-fb8c-49ea-a359-cef30eed9774), + local + ] + interface nsIDOMWindowCollection : nsISupports + { + nsresult GetLength(uint32_t *aLength); +- nsresult Item(uint32_t index, nsIDOMWindow **_retval); +- nsresult NamedItem(const nsAString *name, nsIDOMWindow **_retval); ++ nsresult Item(uint32_t index, mozIDOMWindowProxy **_retval); ++ nsresult NamedItem(const nsAString *name, mozIDOMWindowProxy **_retval); ++} ++ ++[ ++ object, ++ uuid(75fbabd6-7a2e-4787-aa33-449a33512135), ++ local ++] ++interface mozIDOMWindow : nsISupports ++{ ++} ++ ++[ ++ object, ++ uuid(53ca090c-e739-48b9-8911-208c72f9191e), ++ local ++] ++interface mozIDOMWindowProxy : nsISupports ++{ + } + + [ +@@ -1422,8 +1447,8 @@ interface nsIDOMWindow : nsISupports + nsresult GetLength(uint32_t *aLength); + nsresult GetRealTop(nsIDOMWindow **aTop); + nsresult GetRealParent(nsIDOMWindow **aParent); +- nsresult GetOpener(nsIDOMWindow **aOpenerWindow); +- nsresult SetOpener(nsIDOMWindow *aOpenerWindow); ++ nsresult GetOpener(mozIDOMWindowProxy **aOpenerWindow); ++ nsresult SetOpener(mozIDOMWindowProxy *aOpenerWindow); + nsresult GetRealFrameElement(nsIDOMElement **aFrameElement); + nsresult GetNavigator(nsIDOMNavigator **aNavigator); + nsresult Print(); +@@ -1471,6 +1496,8 @@ interface nsIDOMWindow : nsISupports + nsresult Open(const nsAString *url, const nsAString *name, const nsAString *options, nsIDOMWindow **_retval); + nsresult Find(const nsAString *str, bool caseSensitive, bool backwards, bool wrapAround, bool wholeWord, + bool searchInFrames, bool showDialog, bool *_retval); ++ nsresult GetInnerWindow(mozIDOMWindow **aInnerWindow); ++ nsresult GetOuterWindow(mozIDOMWindowProxy **aOuterWindow); + } + + [ +@@ -2116,14 +2143,13 @@ interface nsIDOMHTMLIFrameElement : nsISupports + nsresult GetWidth(nsAString *aWidth); + nsresult SetWidth(const nsAString *aWidth); + nsresult GetContentDocument(nsIDOMDocument **aContentDocument); +- nsresult GetContentWindow(nsIDOMWindow **aContentWindow); + nsresult GetAllowFullscreen(bool *aAllowFullscreen); + nsresult SetAllowFullscreen(bool aAllowFullscreen); + } + + [ + object, +- uuid(60ab25b9-3246-4f50-b0d4-21e73ba88cd6), ++ uuid(012a8982-c9d3-4614-91e2-18ee51c97c06), + local + ] + interface nsIDOMHTMLFrameElement : nsISupports +@@ -2145,7 +2171,6 @@ interface nsIDOMHTMLFrameElement : nsISupports + nsresult GetSrc(nsAString *aSrc); + nsresult SetSrc(const nsAString *aSrc); + nsresult GetContentDocument(nsIDOMDocument **aContentDocument); +- nsresult GetContentWindow(nsIDOMWindow **aContentWindow); + } + + [ +@@ -2246,7 +2271,7 @@ interface nsITooltipListener : nsISupports + + [ + object, +- uuid(33e9d001-caab-4ba9-8961-54902f197202), ++ uuid(4052b6da-4faa-4646-b3a1-7e16a01c2dc2), + local + ] + interface nsIWebBrowser : nsISupports +@@ -2257,7 +2282,7 @@ interface nsIWebBrowser : nsISupports + nsresult SetContainerWindow(nsIWebBrowserChrome *aContainerWindow); + nsresult GetParentURIContentListener(nsIURIContentListener **aParentURIContentListener); + nsresult SetParentURIContentListener(nsIURIContentListener *aParentURIContentListener); +- nsresult GetContentDOMWindow(nsIDOMWindow **aContentDOMWindow); ++ nsresult GetContentDOMWindow(mozIDOMWindowProxy **aContentDOMWindow); + nsresult GetIsActive(bool *aIsActive); + nsresult SetIsActive(bool aIsActive); + } +@@ -2280,7 +2305,7 @@ typedef void* nativeWindow; + + [ + object, +- uuid(9da319f3-eee6-4504-81a5-6A19cf6215bf), ++ uuid(ca635529-a977-4552-9b8a-66187e54d882), + local + ] + interface nsIBaseWindow : nsISupports +@@ -2290,6 +2315,7 @@ interface nsIBaseWindow : nsISupports + nsresult Create(); + nsresult Destroy(); + nsresult SetPosition(int32_t x, int32_t y); ++ nsresult SetPositionDesktopPix(int32_t x, int32_t y); + nsresult GetPosition(int32_t *x, int32_t *y); + nsresult SetSize(int32_t cx, int32_t cy, bool fRepaint); + nsresult GetSize(int32_t *cx, int32_t *cy); +@@ -2307,6 +2333,7 @@ interface nsIBaseWindow : nsISupports + nsresult SetEnabled(bool aEnabled); + nsresult GetMainWidget(nsIWidget **aMainWidget); + nsresult GetUnscaledDevicePixelsPerCSSPixel(double *aUnscaledDevicePixelsPerCSSPixel); ++ nsresult GetDevicePixelsPerDesktopPixel(double *aDevicePixelsPerDesktopPixel); + nsresult SetFocus(); + nsresult GetTitle(PRUnichar **aTitle); + nsresult SetTitle(const PRUnichar *aTitle); +@@ -2358,14 +2385,14 @@ interface nsIWebNavigation : nsISupports + + [ + object, +- uuid(bd0efb3b-1c81-4fb0-b16d-576a2be48a95), ++ uuid(c4d64640-b332-4db6-a2a5-e08566000dc9), + local + ] + interface nsIWebProgress : nsISupports + { + nsresult AddProgressListener(nsIWebProgressListener *aListener, uint32_t aNotifyMask); + nsresult RemoveProgressListener(nsIWebProgressListener *aListener); +- nsresult GetDOMWindow(nsIDOMWindow **aDOMWindow); ++ nsresult GetDOMWindow(mozIDOMWindowProxy **aDOMWindow); + nsresult GetDOMWindowID(uint64_t *aDOMWindowID); + nsresult GetIsTopLevel(bool *aIsTopLevel); + nsresult GetIsLoadingDocument(bool *aIsLoadingDocument); +@@ -2374,7 +2401,7 @@ interface nsIWebProgress : nsISupports + + [ + object, +- uuid(04dd3a01-a74e-44aa-8d49-2c30478fd7b8), ++ uuid(ecc5cbad-57fc-4731-b0bd-09e865bd62ad), + local + ] + interface nsIPrintSettings : nsISupports +@@ -2458,8 +2485,6 @@ interface nsIPrintSettings : nsISupports + nsresult SetShowPrintProgress(bool aShowPrintProgress); + nsresult GetPaperName(PRUnichar **aPaperName); + nsresult SetPaperName(const PRUnichar *aPaperName); +- nsresult GetPaperSizeType(int16_t *aPaperSizeType); +- nsresult SetPaperSizeType(int16_t aPaperSizeType); + nsresult GetPaperData(int16_t *aPaperData); + nsresult SetPaperData(int16_t aPaperData); + nsresult GetPaperWidth(double *aPaperWidth); +@@ -2508,14 +2533,14 @@ interface nsIPrintSettings : nsISupports + + [ + object, +- uuid(9a7ca4b0-fbba-11d4-a869-00105a183419), ++ uuid(c9a934ed-fff1-4971-bfba-6c25ad70e1e6), + local + ] + interface nsIWebBrowserPrint : nsISupports + { + nsresult GetGlobalPrintSettings(nsIPrintSettings **aGlobalPrintSettings); + nsresult GetCurrentPrintSettings(nsIPrintSettings **aCurrentPrintSettings); +- nsresult GetCurrentChildDOMWindow(nsIDOMWindow **aCurrentChildDOMWindow); ++ nsresult GetCurrentChildDOMWindow(mozIDOMWindowProxy **aCurrentChildDOMWindow); + nsresult GetDoingPrint(bool *aDoingPrint); + nsresult GetDoingPrintPreview(bool *aDoingPrintPreview); + nsresult GetIsFramesetDocument(bool *aIsFramesetDocument); +@@ -2524,7 +2549,7 @@ interface nsIWebBrowserPrint : nsISupports + nsresult GetIsRangeSelection(bool *aIsRangeSelection); + nsresult GetPrintPreviewNumPages(int32_t *aPrintPreviewNumPages); + nsresult Print(nsIPrintSettings *aThePrintSettings, nsIWebProgressListener *aWPListener); +- nsresult PrintPreview(nsIPrintSettings *aThePrintSettings, nsIDOMWindow *aChildDOMWin, ++ nsresult PrintPreview(nsIPrintSettings *aThePrintSettings, mozIDOMWindowProxy *aChildDOMWin, + nsIWebProgressListener *aWPListener); + nsresult PrintPreviewNavigate(int16_t aNavType, int32_t aPageNum); + nsresult Cancel(); +@@ -2802,7 +2827,7 @@ interface nsIIOService : nsISupports + + [ + object, +- uuid(9c5d3c58-1dd1-11b2-a1c9-f3699284657a), ++ uuid(7f8c754e-5b36-44be-bc96-191b49f08ea6), + local + ] + interface nsIWebBrowserFocus : nsISupports +@@ -2811,8 +2836,8 @@ interface nsIWebBrowserFocus : nsISupports + nsresult Deactivate(); + nsresult SetFocusAtFirstElement(); + nsresult SetFocusAtLastElement(); +- nsresult GetFocusedWindow(nsIDOMWindow **aFocusedWindow); +- nsresult SetFocusedWindow(nsIDOMWindow *aFocusedWindow); ++ nsresult GetFocusedWindow(mozIDOMWindowProxy **aFocusedWindow); ++ nsresult SetFocusedWindow(mozIDOMWindowProxy *aFocusedWindow); + nsresult GetFocusedElement(nsIDOMElement **aFocusedElement); + nsresult SetFocusedElement(nsIDOMElement *aFocusedElement); + } +@@ -2864,7 +2889,7 @@ interface nsIDOMEventTarget : nsISupports + + [ + object, +- uuid(63857daf-c084-4ea6-a8b9-6812e3176991), ++ uuid(f58daacf-4d1a-4002-8fd7-06b614dfbcf6), + local + ] + interface nsIDOMEvent : nsISupports +@@ -2878,7 +2903,7 @@ interface nsIDOMEvent : nsISupports + nsresult GetTimeStamp(DOMTimeStamp *aTimeStamp); + nsresult StopPropagation(); + nsresult PreventDefault(); +- nsresult InitEvent(const nsAString *eventTypeArg, bool canBubbleArg, bool cancelableArg); ++ void /* thiscall */ InitEvent(const nsAString *eventTypeArg, bool canBubbleArg, bool cancelableArg); + nsresult GetDefaultPrevented(bool *aDefaultPrevented); + nsresult StopImmediatePropagation(); + nsresult GetOriginalTarget(nsIDOMEventTarget **aOriginalTarget); +@@ -2888,7 +2913,7 @@ interface nsIDOMEvent : nsISupports + nsresult DuplicatePrivateData(); + nsresult SetTarget(nsIDOMEventTarget *aTarget); + bool IsDispatchStopped(); +- /*nsEvent*/ void *GetInternalNSEvent(); ++ /*WidgedEvent*/ void *WidgetEventPtr(); + void SetTrusted(bool aTrusted); + void Serialize(/*IPC::Message*/ void *aMsg, bool aSerializeInterfaceType); + bool Deserialize(const /*IPC::Message*/ void *aMsg, void **aIter); +@@ -2899,7 +2924,7 @@ interface nsIDOMEvent : nsISupports + + [ + object, +- uuid(a30a95ac-3b95-4251-88dc-8efa89ba9f9c), ++ uuid(46b44e33-13c2-4eb3-bf80-76a4e0857ccc), + local + ] + interface nsIDOMWindowUtils : nsISupports +@@ -2952,6 +2977,7 @@ interface nsIDOMWindowUtils : nsISupports + const nsAString *aCharacters, const nsAString *aUnmodifiedCharacters, nsIObserver *aObserver); + nsresult SendNativeMouseEvent(int32_t aScreenX, int32_t aScreenY, int32_t aNativeMessage, int32_t aModifierFlags, + nsIDOMElement *aElement, nsIObserver *aObserver); ++ nsresult SendNativeMouseMove(int32_t aScreenX, int32_t aScreenY, nsIDOMElement *aElement, nsIObserver *aObserver); + nsresult SendNativeMouseScrollEvent(int32_t aScreenX, int32_t aScreenY, uint32_t aNativeMessage, double aDeltaX, + double aDeltaY, double aDeltaZ, uint32_t aModifierFlags, uint32_t aAdditionalFlags, nsIDOMElement *aElement, + nsIObserver *aObserver); +@@ -3010,7 +3036,7 @@ interface nsIDOMWindowUtils : nsISupports + nsresult ResumeTimeouts(); + nsresult GetLayerManagerType(nsAString *aLayerManagerType); + nsresult GetLayerManagerRemote(bool *aLayerManagerRemote); +- nsresult GetSupportsHardwareH264Decoding(nsAString *aSupportsHardwareH264Decoding); ++ nsresult GetSupportsHardwareH264Decoding(void /* JS::MutableHandleValue */ *aSupportsHardwareH264Decoding); + nsresult StartFrameTimeRecording(uint32_t *startIndex); + nsresult StopFrameTimeRecording(uint32_t startIndex, uint32_t *frameCount, float **frameIntervals); + nsresult BeginTabSwitch(); +@@ -3023,14 +3049,14 @@ interface nsIDOMWindowUtils : nsISupports + nsresult RestoreNormalRefresh(); + nsresult GetIsTestControllingRefreshes(bool *aIsTestControllingRefreshes); + nsresult GetAsyncPanZoomEnabled(bool *aAsyncPanZoomEnabled); +- nsresult SetAsyncScrollOffset(nsIDOMNode *aNode, int32_t aX, int32_t aY); ++ nsresult SetAsyncScrollOffset(nsIDOMNode *aNode, float aX, float aY); + nsresult SetAsyncZoom(nsIDOMNode *aRootElement, float aValue); + nsresult FlushApzRepaints(bool *_retval); ++ nsresult ZoomToFocusedInput(); + nsresult ComputeAnimationDistance(nsIDOMElement *element, const nsAString *property, const nsAString *value1, + const nsAString *value2, double *_retval); + nsresult WrapDOMFile(nsIFile *aFile, nsISupports **_retval); + nsresult GetFocusedInputType(char **aFocusedInputType); +- nsresult FindElementWithViewId(long /*nsViewID*/ aId, nsIDOMElement **_retval); + nsresult GetViewId(nsIDOMElement *aElement, long /*nsViewID*/ *_retval); + nsresult LeafLayersPartitionWindow(bool *_retval); + nsresult CheckAndClearPaintedState(nsIDOMElement *aElement, bool *_retval); +@@ -3111,15 +3137,15 @@ interface nsIContextMenuListener : nsISupports + + [ + object, +- uuid(d73852f8-7bd6-477d-8233-117dbf83860b), ++ uuid(85ae52eb-37fa-4fd9-a2e6-c7d0f2a521b3), + local + ] +-interface nsIDOMUIEvent : nsIDOMEvent ++interface nsIDOMUIEvent : nsISupports + { +- nsresult GetView(nsIDOMWindow **aView); ++ nsresult GetView(mozIDOMWindowProxy **aView); + nsresult GetDetail(int32_t *aDetail); + nsresult InitUIEvent(const nsAString *typeArg, bool canBubbleArg, bool cancelableArg, +- nsIDOMWindow *viewArg, int32_t detailArg); ++ mozIDOMWindowProxy *viewArg, int32_t detailArg); + nsresult GetLayerX(int32_t *aLayerX); + nsresult GetLayerY(int32_t *aLayerY); + nsresult GetPageX(int32_t *aPageX); +@@ -3130,11 +3156,12 @@ interface nsIDOMUIEvent : nsIDOMEvent + nsresult GetCancelBubble(bool *aCancelBubble); + nsresult SetCancelBubble(bool aCancelBubble); + nsresult GetIsChar(bool *aIsChar); ++ void* /* mozilla::dom::Event thiscall */ AsEvent(); + } + + [ + object, +- uuid(df068636-9a5b-11e3-b71f-2c27d728e7f9), ++ uuid(5bdab8d8-7933-4c5c-b6d1-ab34481237f7), + local + ] + interface nsIDOMMouseEvent : nsIDOMUIEvent +@@ -3153,23 +3180,17 @@ interface nsIDOMMouseEvent : nsIDOMUIEvent + nsresult GetButtons(uint16_t *aButtons); + nsresult GetRelatedTarget(nsIDOMEventTarget **aRelatedTarget); + nsresult InitMouseEvent(const nsAString *typeArg, bool canBubbleArg, bool cancelableArg, +- nsIDOMWindow *viewArg, int32_t detailArg, int32_t screenXArg, int32_t screenYArg, +- int32_t clientXArg, int32_t clientYArg, bool ctrlKeyArg, bool altKeyArg, +- bool shiftKeyArg, bool metaKeyArg, uint16_t buttonArg, +- nsIDOMEventTarget *relatedTargetArg); ++ mozIDOMWindow *viewArg, int32_t detailArg, int32_t screenXArg, int32_t screenYArg, ++ int32_t clientXArg, int32_t clientYArg, bool ctrlKeyArg, bool altKeyArg, bool shiftKeyArg, ++ bool metaKeyArg, uint16_t buttonArg, nsIDOMEventTarget *relatedTargetArg); + nsresult GetMozPressure(float *aMozPressure); + nsresult GetMozInputSource(uint16_t *aMozInputSource); +- nsresult InitNSMouseEvent(const nsAString *typeArg, bool canBubbleArg, bool cancelableArg, +- nsIDOMWindow *viewArg, int32_t detailArg, int32_t screenXArg, int32_t screenYArg, +- int32_t clientXArg, int32_t clientYArg, bool ctrlKeyArg, bool altKeyArg, bool shiftKeyArg, +- bool metaKeyArg, uint16_t buttonArg, nsIDOMEventTarget *relatedTargetArg, float pressure, +- uint16_t inputSourceArg); + nsresult GetModifierState(const nsAString *keyArg, bool *_retval); + } + + [ + object, +- uuid(d2b3e35f-8627-4732-a92d-cda54c8f8054), ++ uuid(2e52eb99-670d-469a-b51f-8efee2dd091d), + local + ] + interface nsIDOMKeyEvent : nsIDOMUIEvent +@@ -3181,7 +3202,7 @@ interface nsIDOMKeyEvent : nsIDOMUIEvent + nsresult GetShiftKey(bool *aShiftKey); + nsresult GetMetaKey(bool *aMetaKey); + nsresult InitKeyEvent(const nsAString *typeArg, bool canBubbleArg, +- bool cancelableArg, nsIDOMWindow *viewArg, bool ctrlKeyArg, ++ bool cancelableArg, mozIDOMWindowProxy *viewArg, bool ctrlKeyArg, + bool altKeyArg, bool shiftKeyArg, bool metaKeyArg, uint32_t keyCodeArg, + uint32_t charCodeArg); + nsresult GetModifierState(const nsAString *keyArg, bool *_retval); +@@ -3234,34 +3255,34 @@ interface nsIComponentRegistrar : nsISupports + + [ + object, +- uuid(1630c61a-325e-49ca-8759-a31b16c47aa5), ++ uuid(404ebfa2-d8f4-4c94-8416-e65a55f9df5a), + local + ] + interface nsIPromptService : nsISupports + { +- nsresult Alert(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ nsresult Alert(mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText); +- nsresult AlertCheck(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ nsresult AlertCheck(mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, const PRUnichar *aCheckMsg, bool *aCheckState); +- nsresult Confirm(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ nsresult Confirm(mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, bool *_retval); +- nsresult ConfirmCheck(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ nsresult ConfirmCheck(mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, const PRUnichar *aCheckMsg, bool *aCheckState, + bool *_retval); +- nsresult ConfirmEx(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ nsresult ConfirmEx(mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, uint32_t aButtonFlags, const PRUnichar *aButton0Title, + const PRUnichar *aButton1Title, const PRUnichar *aButton2Title, + const PRUnichar *aCheckMsg, bool *aCheckState, int32_t *_retval); +- nsresult Prompt(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ nsresult Prompt(mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, PRUnichar **aValue, const PRUnichar *aCheckMsg, + bool *aCheckState, bool *_retval); +- nsresult PromptUsernameAndPassword(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ nsresult PromptUsernameAndPassword(mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, PRUnichar **aUsername, PRUnichar **aPassword, + const PRUnichar *aCheckMsg, bool *aCheckState, bool *_retval); +- nsresult PromptPassword(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ nsresult PromptPassword(mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, PRUnichar **aPassword, const PRUnichar *aCheckMsg, + bool *aCheckState, bool *_retval); +- nsresult Select(nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ nsresult Select(mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, uint32_t aCount, const PRUnichar **aSelectList, + int32_t *aOutSelection, bool *_retval); + } +@@ -3278,23 +3299,23 @@ interface nsITooltipTextProvider : nsISupports + + [ + object, +- uuid(24f3f4da-18a4-448d-876d-7360fefac029), ++ uuid(24f963d1-e6fc-43ea-a206-99ac5fcc5265), + local + ] + interface nsIEditingSession : nsISupports + { + nsresult GetEditorStatus(uint32_t *aEditorStatus); +- nsresult MakeWindowEditable(nsIDOMWindow *window, const char *aEditorType, ++ nsresult MakeWindowEditable(mozIDOMWindowProxy *window, const char *aEditorType, + bool doAfterUriLoad, bool aMakeWholeDocumentEditable, bool aInteractive); +- nsresult WindowIsEditable(nsIDOMWindow *window, bool *_retval); +- nsresult GetEditorForWindow(nsIDOMWindow *window, nsIEditor **_retval); +- nsresult SetupEditorOnWindow(nsIDOMWindow *window); +- nsresult TearDownEditorOnWindow(nsIDOMWindow *window); +- nsresult SetEditorOnControllers(nsIDOMWindow *aWindow, nsIEditor *aEditor); +- nsresult DisableJSAndPlugins(nsIDOMWindow *aWindow); +- nsresult RestoreJSAndPlugins(nsIDOMWindow *aWindow); +- nsresult DetachFromWindow(nsIDOMWindow *aWindow); +- nsresult ReattachToWindow(nsIDOMWindow *aWindow); ++ nsresult WindowIsEditable(mozIDOMWindowProxy *window, bool *_retval); ++ nsresult GetEditorForWindow(mozIDOMWindowProxy *window, nsIEditor **_retval); ++ nsresult SetupEditorOnWindow(mozIDOMWindowProxy *window); ++ nsresult TearDownEditorOnWindow(mozIDOMWindowProxy *window); ++ nsresult SetEditorOnControllers(mozIDOMWindowProxy *aWindow, nsIEditor *aEditor); ++ nsresult DisableJSAndPlugins(mozIDOMWindowProxy *aWindow); ++ nsresult RestoreJSAndPlugins(mozIDOMWindowProxy *aWindow); ++ nsresult DetachFromWindow(mozIDOMWindowProxy *aWindow); ++ nsresult ReattachToWindow(mozIDOMWindowProxy *aWindow); + nsresult GetJsAndPluginsDisabled(bool *aJsAndPluginsDisabled); + } + +@@ -3323,19 +3344,19 @@ interface nsICommandParams : nsISupports + + [ + object, +- uuid(080d2001-f91e-11d4-a73c-f9242928207c), ++ uuid(bb5a1730-d83b-4fa2-831b-35b9d5842e84), + local + ] + interface nsICommandManager : nsISupports + { + nsresult AddCommandObserver(nsIObserver *aCommandObserver, const char *aCommandToObserve); + nsresult RemoveCommandObserver(nsIObserver *aCommandObserver, const char *aCommandObserved); +- nsresult IsCommandSupported(const char *aCommandName, nsIDOMWindow *aTargetWindow, bool *_retval); +- nsresult IsCommandEnabled(const char *aCommandName, nsIDOMWindow *aTargetWindow, bool *_retval); +- nsresult GetCommandState(const char *aCommandName, nsIDOMWindow *aTargetWindow, ++ nsresult IsCommandSupported(const char *aCommandName, mozIDOMWindowProxy *aTargetWindow, bool *_retval); ++ nsresult IsCommandEnabled(const char *aCommandName, mozIDOMWindowProxy *aTargetWindow, bool *_retval); ++ nsresult GetCommandState(const char *aCommandName, mozIDOMWindowProxy *aTargetWindow, + nsICommandParams *aCommandParams); + nsresult DoCommand(const char *aCommandName, nsICommandParams *aCommandParams, +- nsIDOMWindow *aTargetWindow); ++ mozIDOMWindowProxy *aTargetWindow); + } + + [ +@@ -3390,7 +3411,7 @@ interface nsIContent : nsISupports + + [ + object, +- uuid(5f51e18c-9e0e-4dc0-9f08-7a326552ea11), ++ uuid(ce1f7627-7109-4977-ba77-490ffde07aaa), + local + ] + interface nsIDocument : nsISupports +@@ -3602,7 +3623,7 @@ interface nsIClipboardCommands : nsISupports + + [ + object, +- uuid(edb99640-8378-4106-8673-e701a086eb1c), ++ uuid(9b7c586f-9214-480c-a2c4-49b526fff1a6), + local + ] + interface nsIDocShellTreeItem : nsISupports +@@ -3628,12 +3649,12 @@ interface nsIDocShellTreeItem : nsISupports + nsresult FindChildWithName(const PRUnichar *aName, bool aRecurse, bool aSameType, nsIDocShellTreeItem *aRequestor, + nsIDocShellTreeItem *aOriginalRequestor, nsIDocShellTreeItem **_retval); + nsIDocument /* thiscall */ *GetDocument(); +- void /* thiscall nsPIDOMWindow */ *GetWindow(); ++ void /* thiscall nsPIDOMWindowOuter */ *GetWindow(); + } + + [ + object, +- uuid(702e0a92-7d63-490e-b5ee-d247e6bd4588), ++ uuid(2da17016-7851-4a45-a7a8-00b360e01595), + local + ] + interface nsIContentViewer : nsISupports +@@ -3643,11 +3664,10 @@ interface nsIContentViewer : nsISupports + nsresult SetContainer(nsIDocShell *aContainer); + void /* thiscall */ LoadStart(nsIDocument *aDoc); + nsresult LoadComplete(nsresult aStatus); +- nsresult PermitUnload(bool aCallerClosesWindow, bool *_retval); ++ nsresult PermitUnload(bool *_retval); + nsresult GetInPermitUnload(bool *aInPermitUnload); +- nsresult /* thiscall */ PermitUnloadInternal(bool aCallerClosesWindow, bool *aShouldPrompt, bool *_retval); ++ nsresult /* thiscall */ PermitUnloadInternal(bool *aShouldPrompt, bool *_retval); + nsresult GetBeforeUnloadFiring(bool *aBeforeUnloadFiring); +- nsresult ResetCloseWindow(); + nsresult PageHide(bool isUnload); + nsresult Close(nsISHEntry *historyEntry); + nsresult Destroy(); +@@ -3694,7 +3714,6 @@ interface nsIContentViewer : nsISupports + nsresult GetMinFontSize(int32_t *aMinFontSize); + nsresult SetMinFontSize(int32_t aMinFontSize); + nsresult AppendSubtree(void /*nsTArray >*/ *array); +- nsresult ChangeMaxLineBoxWidth(int32_t maxLineBoxWidth); + nsresult PausePainting(); + nsresult ResumePainting(); + nsresult EmulateMedium(const nsAString *aMediaType); +@@ -3748,7 +3767,7 @@ interface nsIDocShellLoadInfo : nsISupports + + [ + object, +- uuid(44aca825-0080-49f1-8407-df62183e5ec1), ++ uuid(049234fe-da10-478b-bc5d-bc6f9a1ba63d), + local + ] + interface nsIDocShell : nsIDocShellTreeItem +@@ -3773,6 +3792,8 @@ interface nsIDocShell : nsIDocShellTreeItem + nsresult GetContentViewer(nsIContentViewer **aContentViewer); + nsresult GetChromeEventHandler(nsIDOMEventTarget **aChromeEventHandler); + nsresult SetChromeEventHandler(nsIDOMEventTarget *aChromeEventHandler); ++ nsresult GetCustomUserAgent(nsAString *aCustomUserAgent); ++ nsresult SetCustomUserAgent(const nsAString *aCustomUserAgent); + nsresult GetAllowPlugins(bool *aAllowPlugins); + nsresult SetAllowPlugins(bool aAllowPlugins); + nsresult GetAllowJavascript(bool *aAllowJavascript); +@@ -3826,7 +3847,7 @@ interface nsIDocShell : nsIDocShellTreeItem + nsresult GetRestoringDocument(bool *aRestoringDocument); + nsresult GetUseErrorPages(bool *aUseErrorPages); + nsresult SetUseErrorPages(bool aUseErrorPages); +- nsresult DisplayLoadError(nsresult aError, nsIURI *aURI, const PRUnichar *aURL, nsIChannel *aFailedChannel, bool *_retval); ++ nsresult DisplayLoadError(nsresult aError, nsIURI *aURI, const char16_t *aURL, nsIChannel *aFailedChannel, bool *_retval); + nsresult GetFailedChannel(nsIChannel **aFailedChannel); + nsresult GetPreviousTransIndex(int32_t *aPreviousTransIndex); + nsresult GetLoadedTransIndex(int32_t *aLoadedTransIndex); +@@ -3851,6 +3872,7 @@ interface nsIDocShell : nsIDocShellTreeItem + nsresult GetCanExecuteScripts(bool *aCanExecuteScripts); + nsresult GetIsActive(bool *aIsActive); + nsresult SetIsActive(bool aIsActive); ++ nsresult SetIsActiveAndForeground(bool aIsActive); + nsresult SetIsPrerendered(bool prerendered); + nsresult GetIsPrerendered(bool *aIsPrerendered); + nsresult GetHistoryID(uint64_t *aHistoryID); +@@ -3875,13 +3897,14 @@ interface nsIDocShell : nsIDocShellTreeItem + nsresult AddWeakScrollObserver(void /*nsIScrollObserver*/ *obs); + nsresult RemoveWeakScrollObserver(void /*nsIScrollObserver*/ *obs); + nsresult NotifyScrollObservers(); +- nsresult GetIsBrowserElement(bool *aIsBrowserElement); + nsresult GetIsApp(bool *aIsApp); +- nsresult GetIsBrowserOrApp(bool *aIsBrowserOrApp); +- nsresult GetIsInBrowserElement(bool *aIsInBrowserElement); +- nsresult GetIsInBrowserOrApp(bool *aIsInBrowserOrApp); +- nsresult SetIsApp(uint32_t ownAppId); +- nsresult SetIsBrowserInsideApp(uint32_t containingAppId); ++ nsresult GetFrameType(uint32_t *aFrameType); ++ nsresult SetFrameType(uint32_t aFrameType); ++ nsresult GetIsMozBrowserOrApp(bool *aIsMozBrowserOrApp); ++ nsresult GetIsIsolatedMozBrowserElement(bool *aIsIsolatedMozBrowserElement); ++ nsresult GetIsInIsolatedMozBrowserElement(bool *aIsInIsolatedMozBrowserElement); ++ nsresult SetIsInIsolatedMozBrowserElement(bool aIsInIsolatedMozBrowserElement); ++ nsresult GetIsInMozBrowserOrApp(bool *aIsInMozBrowserOrApp); + nsresult GetAppId(uint32_t *aAppId); + nsresult GetAppManifestURL(nsAString *aAppManifestURL); + nsresult GetSameTypeParentIgnoreBrowserAndAppBoundaries(nsIDocShell **_retval); +@@ -3920,7 +3943,7 @@ interface nsIDocShell : nsIDocShellTreeItem + nsresult DoCommand(const char *command); + bool IsInvisible(); + void SetInvisible(bool aIsInvisibleDochsell); +- void /*nsIScriptGlobalObject*/ *GetScriptGlobalObject(); ++ void /* nsIScriptGlobalObject thiscall */ *GetScriptGlobalObject(); + nsresult GetDeviceSizeIsPageSize(bool *aDeviceSizeIsPageSize); + nsresult SetDeviceSizeIsPageSize(bool aDeviceSizeIsPageSize); + void /* thiscall */ SetOpener(void /*nsITabParent*/ *aOpener); +@@ -3933,6 +3956,10 @@ interface nsIDocShell : nsIDocShellTreeItem + nsresult SetPaymentRequestId(const nsAString *aPaymentRequestId); + nsresult GetWindowDraggingAllowed(bool *aWindowDraggingAllowed); + nsresult SetWindowDraggingAllowed(bool aWindowDraggingAllowed); ++ nsresult GetCurrentScrollRestorationIsManual(bool *aCurrentScrollRestorationIsManual); ++ nsresult SetCurrentScrollRestorationIsManual(bool aCurrentScrollRestorationIsManual); ++ nsresult GetOriginAttributes(JSContext* cx, void* /* JS::MutableHandleValue */ _retval); ++ nsresult SetOriginAttributes(int /* JS::HandleValue */ aAttrs, JSContext *cx); + } + + [ +@@ -4010,7 +4037,7 @@ interface nsIParser : nsISupports + + [ + object, +- uuid(900bc4bc-8b6c-4cba-82fa-568a80fffd3e), ++ uuid(71041fa3-6dd7-4cde-bb76-aecc69e17578), + local + ] + interface nsIDocumentObserver : nsIMutationObserver +@@ -4018,6 +4045,10 @@ interface nsIDocumentObserver : nsIMutationObserver + typedef uint32_t nsUpdateType; + + typedef struct { ++ void *dummy; ++ } mozilla_StyleSheetHandle; ++ ++ typedef struct { + uint64_t mStates; + } EventStates; + +@@ -4027,14 +4058,12 @@ interface nsIDocumentObserver : nsIMutationObserver + void EndLoad(nsIDocument *aDocument); + void ContentStatesChanged(nsIDocument *aDocument, nsIContent *aContent, EventStates aStateMask); + void DocumentStatesChanged(nsIDocument *aDocument, EventStates aStateMask); +- void StyleSheetAdded(nsIDocument *aDocument, nsIStyleSheet *aStyleSheet, bool aDocumentSheet); +- void StyleSheetRemoved(nsIDocument *aDocument, nsIStyleSheet *aStyleSheet, bool aDocumentSheet); +- void StyleSheetApplicableStateChanged(nsIDocument *aDocument, nsIStyleSheet *aStyleSheet, +- bool aApplicable); +- void StyleRuleChanged(nsIDocument *aDocument, nsIStyleSheet *aStyleSheet, nsIStyleRule *aOldStyleRule, +- nsIStyleRule *aNewStyleRule); +- void StyleRuleAdded(nsIDocument *aDocument, nsIStyleSheet *aStyleSheet, nsIStyleRule *aStyleRule); +- void StyleRuleRemoved(nsIDocument *aDocument, nsIStyleSheet *aStyleSheet, nsIStyleRule *aStyleRule); ++ void StyleSheetAdded(mozilla_StyleSheetHandle aStyleSheet, bool aDocumentSheet); ++ void StyleSheetRemoved(mozilla_StyleSheetHandle aStyleSheet, bool aDocumentSheet); ++ void StyleSheetApplicableStateChanged(mozilla_StyleSheetHandle aStyleSheet); ++ void StyleRuleChanged(mozilla_StyleSheetHandle aStyleSheet); ++ void StyleRuleAdded(mozilla_StyleSheetHandle aStyleSheet); ++ void StyleRuleRemoved(mozilla_StyleSheetHandle aStyleSheet); + void BindToDocument(nsIDocument *aDocument, nsIContent *aContent); + void AttemptToExecuteScript(nsIContent *aContent, nsIParser *aParser, bool *aBlock); + } +@@ -4057,13 +4086,13 @@ interface nsIContentUtils : nsISupports + + [ + object, +- uuid(5fe83b24-38b9-4901-a4a1-d1bd57d3fe18), ++ uuid(15c05894-408e-4798-b527-a8c32d9c5f8c), + local + ] + interface nsIAudioChannelAgentCallback : nsISupports + { + nsresult WindowVolumeChanged(float aVolume, bool aMuted); +- nsresult WindowAudioCaptureChanged(); ++ nsresult WindowAudioCaptureChanged(bool aCapture); + } + + [ +diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c +index dac9798..711cca0 100644 +--- a/dlls/mshtml/nsio.c ++++ b/dlls/mshtml/nsio.c +@@ -955,7 +955,7 @@ static HTMLOuterWindow *get_window_from_load_group(nsChannel *This) + static HTMLOuterWindow *get_channel_window(nsChannel *This) + { + nsIWebProgress *web_progress; +- nsIDOMWindow *nswindow; ++ mozIDOMWindowProxy *mozwindow; + HTMLOuterWindow *window; + nsresult nsres; + +@@ -985,20 +985,20 @@ static HTMLOuterWindow *get_channel_window(nsChannel *This) + return NULL; + } + +- nsres = nsIWebProgress_GetDOMWindow(web_progress, &nswindow); ++ nsres = nsIWebProgress_GetDOMWindow(web_progress, &mozwindow); + nsIWebProgress_Release(web_progress); +- if(NS_FAILED(nsres) || !nswindow) { ++ if(NS_FAILED(nsres) || !mozwindow) { + ERR("GetDOMWindow failed: %08x\n", nsres); + return NULL; + } + +- window = nswindow_to_window(nswindow); +- nsIDOMWindow_Release(nswindow); ++ window = mozwindow_to_window(mozwindow); ++ mozIDOMWindowProxy_Release(mozwindow); + + if(window) + IHTMLWindow2_AddRef(&window->base.IHTMLWindow2_iface); + else +- FIXME("NULL window for %p\n", nswindow); ++ FIXME("NULL window for %p\n", mozwindow); + return window; + } + +@@ -1310,6 +1310,34 @@ static nsresult NSAPI nsChannel_SetReferrerWithPolicy(nsIHttpChannel *iface, nsI + return NS_ERROR_NOT_IMPLEMENTED; + } + ++static nsresult NSAPI nsHttpChannel_GetProtocolVersion(nsIHttpChannel *iface, nsACString *aProtocolVersion) ++{ ++ nsChannel *This = impl_from_nsIHttpChannel(iface); ++ FIXME("(%p)->(%p)\n", This, aProtocolVersion); ++ return NS_ERROR_NOT_IMPLEMENTED; ++} ++ ++static nsresult NSAPI nsHttpChannel_GetTransferSize(nsIHttpChannel *iface, UINT64 *aTransferSize) ++{ ++ nsChannel *This = impl_from_nsIHttpChannel(iface); ++ FIXME("(%p)->(%p)\n", This, aTransferSize); ++ return NS_ERROR_NOT_IMPLEMENTED; ++} ++ ++static nsresult NSAPI nsHttpChannel_GetDecodedBodySize(nsIHttpChannel *iface, UINT64 *aDecodedBodySize) ++{ ++ nsChannel *This = impl_from_nsIHttpChannel(iface); ++ FIXME("(%p)->(%p)\n", This, aDecodedBodySize); ++ return NS_ERROR_NOT_IMPLEMENTED; ++} ++ ++static nsresult NSAPI nsHttpChannel_GetEncodedBodySize(nsIHttpChannel *iface, UINT64 *aEncodedBodySize) ++{ ++ nsChannel *This = impl_from_nsIHttpChannel(iface); ++ FIXME("(%p)->(%p)\n", This, aEncodedBodySize); ++ return NS_ERROR_NOT_IMPLEMENTED; ++} ++ + static nsresult NSAPI nsChannel_GetRequestHeader(nsIHttpChannel *iface, + const nsACString *aHeader, nsACString *_retval) + { +@@ -1525,11 +1553,11 @@ static nsresult NSAPI nsChannel_IsPrivateResponse(nsIHttpChannel *iface, cpp_boo + return NS_ERROR_NOT_IMPLEMENTED; + } + +-static nsresult NSAPI nsChannel_RedirectTo(nsIHttpChannel *iface, nsIURI *aNewURI) ++static nsresult NSAPI nsChannel_RedirectTo(nsIHttpChannel *iface, nsIURI *aTargetURI) + { + nsChannel *This = impl_from_nsIHttpChannel(iface); + +- FIXME("(%p)->(%p)\n", This, aNewURI); ++ FIXME("(%p)->(%p)\n", This, aTargetURI); + + return NS_ERROR_NOT_IMPLEMENTED; + } +@@ -1597,6 +1625,10 @@ static const nsIHttpChannelVtbl nsChannelVtbl = { + nsChannel_SetReferrer, + nsChannel_GetReferrerPolicy, + nsChannel_SetReferrerWithPolicy, ++ nsHttpChannel_GetProtocolVersion, ++ nsHttpChannel_GetTransferSize, ++ nsHttpChannel_GetDecodedBodySize, ++ nsHttpChannel_GetEncodedBodySize, + nsChannel_GetRequestHeader, + nsChannel_SetRequestHeader, + nsChannel_SetEmptyRequestHeader, +@@ -2074,10 +2106,24 @@ static nsresult NSAPI nsHttpChannelInternal_GetProxyURI(nsIHttpChannelInternal * + } + + static nsresult NSAPI nsHttpChannelInternal_SetCorsPreflightParameters(nsIHttpChannelInternal *iface, +- const void /*nsTArray*/ *unsafeHeaders, cpp_bool withCredentials, nsIPrincipal *preflightPrincipal) ++ const void /*nsTArray*/ *unsafeHeaders) + { + nsChannel *This = impl_from_nsIHttpChannelInternal(iface); +- FIXME("(%p %p %x %p)\n", This, unsafeHeaders, withCredentials, preflightPrincipal); ++ FIXME("(%p)->(%p)\n", This, unsafeHeaders); ++ return NS_ERROR_NOT_IMPLEMENTED; ++} ++ ++static nsresult NSAPI nsHttpChannelInternal_GetBlockAuthPrompt(nsIHttpChannelInternal *iface, cpp_bool *aBlockAuthPrompt) ++{ ++ nsChannel *This = impl_from_nsIHttpChannelInternal(iface); ++ FIXME("(%p)->(%p)\n", This, aBlockAuthPrompt); ++ return NS_ERROR_NOT_IMPLEMENTED; ++} ++ ++static nsresult NSAPI nsHttpChannelInternal_SetBlockAuthPrompt(nsIHttpChannelInternal *iface, cpp_bool aBlockAuthPrompt) ++{ ++ nsChannel *This = impl_from_nsIHttpChannelInternal(iface); ++ FIXME("(%p)->(%x)\n", This, aBlockAuthPrompt); + return NS_ERROR_NOT_IMPLEMENTED; + } + +@@ -2127,7 +2173,9 @@ static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = { + nsHttpChannelInternal_GetNetworkInterfaceId, + nsHttpChannelInternal_SetNetworkInterfaceId, + nsHttpChannelInternal_GetProxyURI, +- nsHttpChannelInternal_SetCorsPreflightParameters ++ nsHttpChannelInternal_SetCorsPreflightParameters, ++ nsHttpChannelInternal_GetBlockAuthPrompt, ++ nsHttpChannelInternal_SetBlockAuthPrompt + }; + + +@@ -3315,13 +3363,21 @@ static nsresult NSAPI nsStandardURL_Init(nsIStandardURL *iface, UINT32 aUrlType, + return NS_ERROR_NOT_IMPLEMENTED; + } + ++static nsresult NSAPI nsStandardURL_SetDefaultPort(nsIStandardURL *iface, LONG aNewDefaultPort) ++{ ++ nsWineURI *This = impl_from_nsIStandardURL(iface); ++ FIXME("(%p)->(%d)\n", This, aNewDefaultPort); ++ return NS_ERROR_NOT_IMPLEMENTED; ++} ++ + static const nsIStandardURLVtbl nsStandardURLVtbl = { + nsStandardURL_QueryInterface, + nsStandardURL_AddRef, + nsStandardURL_Release, + nsStandardURL_GetMutable, + nsStandardURL_SetMutable, +- nsStandardURL_Init ++ nsStandardURL_Init, ++ nsStandardURL_SetDefaultPort + }; + + static nsresult create_nsuri(IUri *iuri, HTMLOuterWindow *window, NSContainer *container, +diff --git a/dlls/mshtml/nsservice.c b/dlls/mshtml/nsservice.c +index 6d34f3f..67aec2d 100644 +--- a/dlls/mshtml/nsservice.c ++++ b/dlls/mshtml/nsservice.c +@@ -74,7 +74,7 @@ static nsrefcnt NSAPI nsPromptService_Release(nsIPromptService *iface) + return 1; + } + +-static nsresult NSAPI nsPromptService_Alert(nsIPromptService *iface, nsIDOMWindow *aParent, ++static nsresult NSAPI nsPromptService_Alert(nsIPromptService *iface, mozIDOMWindowProxy *aParent, + const PRUnichar *aDialogTitle, const PRUnichar *aText) + { + HTMLOuterWindow *window; +@@ -82,9 +82,9 @@ static nsresult NSAPI nsPromptService_Alert(nsIPromptService *iface, nsIDOMWindo + + TRACE("(%p %s %s)\n", aParent, debugstr_w(aDialogTitle), debugstr_w(aText)); + +- window = nswindow_to_window(aParent); ++ window = mozwindow_to_window(aParent); + if(!window) { +- WARN("Could not find HTMLWindow for nsIDOMWindow %p\n", aParent); ++ WARN("Could not find HTMLWindow for mozIDOMWindowProxy %p\n", aParent); + return NS_ERROR_UNEXPECTED; + } + +@@ -96,7 +96,7 @@ static nsresult NSAPI nsPromptService_Alert(nsIPromptService *iface, nsIDOMWindo + } + + static nsresult NSAPI nsPromptService_AlertCheck(nsIPromptService *iface, +- nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, const PRUnichar *aCheckMsg, cpp_bool *aCheckState) + { + FIXME("(%p %s %s %s %p)\n", aParent, debugstr_w(aDialogTitle), debugstr_w(aText), +@@ -105,7 +105,7 @@ static nsresult NSAPI nsPromptService_AlertCheck(nsIPromptService *iface, + } + + static nsresult NSAPI nsPromptService_Confirm(nsIPromptService *iface, +- nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, const PRUnichar *aText, ++ mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, const PRUnichar *aText, + cpp_bool *_retval) + { + FIXME("(%p %s %s %p)\n", aParent, debugstr_w(aDialogTitle), debugstr_w(aText), _retval); +@@ -113,7 +113,7 @@ static nsresult NSAPI nsPromptService_Confirm(nsIPromptService *iface, + } + + static nsresult NSAPI nsPromptService_ConfirmCheck(nsIPromptService *iface, +- nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, const PRUnichar *aCheckMsg, cpp_bool *aCheckState, + cpp_bool *_retval) + { +@@ -123,7 +123,7 @@ static nsresult NSAPI nsPromptService_ConfirmCheck(nsIPromptService *iface, + } + + static nsresult NSAPI nsPromptService_ConfirmEx(nsIPromptService *iface, +- nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, UINT32 aButtonFlags, const PRUnichar *aButton0Title, + const PRUnichar *aButton1Title, const PRUnichar *aButton2Title, + const PRUnichar *aCheckMsg, cpp_bool *aCheckState, LONG *_retval) +@@ -153,7 +153,7 @@ static nsresult NSAPI nsPromptService_ConfirmEx(nsIPromptService *iface, + } + + static nsresult NSAPI nsPromptService_Prompt(nsIPromptService *iface, +- nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, PRUnichar **aValue, const PRUnichar *aCheckMsg, + cpp_bool *aCheckState, cpp_bool *_retval) + { +@@ -163,7 +163,7 @@ static nsresult NSAPI nsPromptService_Prompt(nsIPromptService *iface, + } + + static nsresult NSAPI nsPromptService_PromptUsernameAndPassword(nsIPromptService *iface, +- nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, PRUnichar **aUsername, PRUnichar **aPassword, + const PRUnichar *aCheckMsg, cpp_bool *aCheckState, cpp_bool *_retval) + { +@@ -174,7 +174,7 @@ static nsresult NSAPI nsPromptService_PromptUsernameAndPassword(nsIPromptService + } + + static nsresult NSAPI nsPromptService_PromptPassword(nsIPromptService *iface, +- nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, PRUnichar **aPassword, const PRUnichar *aCheckMsg, + cpp_bool *aCheckState, cpp_bool *_retval) + { +@@ -184,7 +184,7 @@ static nsresult NSAPI nsPromptService_PromptPassword(nsIPromptService *iface, + } + + static nsresult NSAPI nsPromptService_Select(nsIPromptService *iface, +- nsIDOMWindow *aParent, const PRUnichar *aDialogTitle, ++ mozIDOMWindowProxy *aParent, const PRUnichar *aDialogTitle, + const PRUnichar *aText, UINT32 aCount, const PRUnichar **aSelectList, + LONG *aOutSelection, cpp_bool *_retval) + { +diff --git a/dlls/mshtml/olecmd.c b/dlls/mshtml/olecmd.c +index fc2a6ac..93dab71 100644 +--- a/dlls/mshtml/olecmd.c ++++ b/dlls/mshtml/olecmd.c +@@ -56,7 +56,7 @@ void do_ns_command(HTMLDocument *This, const char *cmd, nsICommandParams *nspara + return; + } + +- nsres = nsICommandManager_DoCommand(cmdmgr, cmd, nsparam, This->window->nswindow); ++ nsres = nsICommandManager_DoCommand(cmdmgr, cmd, nsparam, This->window->window_proxy); + if(NS_FAILED(nsres)) + ERR("DoCommand(%s) failed: %08x\n", debugstr_a(cmd), nsres); + +-- +2.8.0 + diff --git a/patches/mshtml-Wine_Gecko_2.47/definition b/patches/mshtml-Wine_Gecko_2.47/definition new file mode 100644 index 00000000..bd6901db --- /dev/null +++ b/patches/mshtml-Wine_Gecko_2.47/definition @@ -0,0 +1 @@ +Fixes: Update Wine Gecko to version 2.47-beta1 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index df9ebe75..de730e56 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -187,6 +187,7 @@ patch_enable_all () enable_mpr_WNetGetUniversalNameW="$1" enable_mscoree_CorValidateImage="$1" enable_mshtml_HTMLLocation_put_hash="$1" + enable_mshtml_Wine_Gecko_2_47="$1" enable_msidb_Implementation="$1" enable_msvcr120__SetWinRTOutOfMemoryExceptionCallback="$1" enable_msvcrt_Math_Precision="$1" @@ -726,6 +727,9 @@ patch_enable () mshtml-HTMLLocation_put_hash) enable_mshtml_HTMLLocation_put_hash="$2" ;; + mshtml-Wine_Gecko_2.47) + enable_mshtml_Wine_Gecko_2_47="$2" + ;; msidb-Implementation) enable_msidb_Implementation="$2" ;; @@ -4337,6 +4341,21 @@ if test "$enable_mshtml_HTMLLocation_put_hash" -eq 1; then ) >> "$patchlist" fi +# Patchset mshtml-Wine_Gecko_2.47 +# | +# | Modified files: +# | * dlls/appwiz.cpl/addons.c, dlls/mshtml/editor.c, dlls/mshtml/htmlcurstyle.c, dlls/mshtml/htmldoc.c, +# | dlls/mshtml/htmlframebase.c, dlls/mshtml/htmlwindow.c, dlls/mshtml/mshtml_private.h, dlls/mshtml/mutation.c, +# | dlls/mshtml/npplugin.c, dlls/mshtml/nsembed.c, dlls/mshtml/nsiface.idl, dlls/mshtml/nsio.c, dlls/mshtml/nsservice.c, +# | dlls/mshtml/olecmd.c +# | +if test "$enable_mshtml_Wine_Gecko_2_47" -eq 1; then + patch_apply mshtml-Wine_Gecko_2.47/0001-mshtml-Wine-Gecko-2.47-beta1-release.patch + ( + echo '+ { "Jacek Caban", "mshtml: Wine Gecko 2.47-beta1 release.", 1 },'; + ) >> "$patchlist" +fi + # Patchset msidb-Implementation # | # | Modified files: