Wine Gecko 2.47-beta1

Jacek Caban jacek at codeweavers.com
Thu May 5 06:16:37 CDT 2016


Hi all,

I just uploaded a beta build of the next Gecko update. Wine patch is
attached. All reviews and testing is appreciated.

Thanks,
Jacek
-------------- next part --------------
commit 5d04106165002afe02a839ea64c245b0cca97dd9
Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu May 5 12:49:26 2016 +0200

    mshtml: Wine Gecko 2.47-beta1 release.

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 <stdarg.h>
+#include <assert.h>
 
 #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<nsCString>*/ *unsafeHeaders,
-            bool withCredentials, nsIPrincipal *preflightPrincipal);
+    nsresult SetCorsPreflightParameters(const void /*nsTArray<nsCString>*/ *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<nsCOMPtr<nsIContentViewer> >*/ *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<nsCString>*/ *unsafeHeaders, cpp_bool withCredentials, nsIPrincipal *preflightPrincipal)
+        const void /*nsTArray<nsCString>*/ *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);
 


More information about the wine-devel mailing list