Blob Blame History Raw
From a556f9e5c12b76e1d331e49c38b0f63f54e808b9 Mon Sep 17 00:00:00 2001
From: Jacek Caban <jacek@codeweavers.com>
Date: Tue, 11 Aug 2015 15:11:35 +0200
Subject: [PATCH 1/1] mshtml: Wine Gecko 2.40 release.

---
 dlls/appwiz.cpl/addons.c |   6 +-
 dlls/mshtml/nsembed.c    |   6 +-
 dlls/mshtml/nsiface.idl  | 114 ++++++++++++++++++++--------------
 dlls/mshtml/nsio.c       | 155 +++++++++++++++++++++++++++++++++++++----------
 4 files changed, 199 insertions(+), 82 deletions(-)

diff --git a/dlls/appwiz.cpl/addons.c b/dlls/appwiz.cpl/addons.c
index b4fcc25..48cd062 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.36"
+#define GECKO_VERSION "2.40"
 
 #ifdef __i386__
 #define ARCH_STRING "x86"
-#define GECKO_SHA "08b02bf0e3ff3a315135afa1132ddb3a25a63e15"
+#define GECKO_SHA "7001a6ed5b02d0ae4e73b14c92018d604b87f3ad"
 #elif defined(__x86_64__)
 #define ARCH_STRING "x86_64"
-#define GECKO_SHA "a7624eb685d04c4ef1f4f093095a5a324808d57c"
+#define GECKO_SHA "356c414527b08b015b6dc53dbbf78d752320ae90"
 #else
 #define ARCH_STRING ""
 #define GECKO_SHA "???"
diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c
index df2e130..93f4277 100644
--- a/dlls/mshtml/nsembed.c
+++ b/dlls/mshtml/nsembed.c
@@ -1577,12 +1577,12 @@ static nsresult NSAPI nsURIContentListener_OnStartURIOpen(nsIURIContentListener
 }
 
 static nsresult NSAPI nsURIContentListener_DoContent(nsIURIContentListener *iface,
-        const char *aContentType, cpp_bool aIsContentPreferred, nsIRequest *aRequest,
+        const nsACString *aContentType, cpp_bool aIsContentPreferred, nsIRequest *aRequest,
         nsIStreamListener **aContentHandler, cpp_bool *_retval)
 {
     NSContainer *This = impl_from_nsIURIContentListener(iface);
 
-    TRACE("(%p)->(%s %x %p %p %p)\n", This, debugstr_a(aContentType), aIsContentPreferred,
+    TRACE("(%p)->(%p %x %p %p %p)\n", This, aContentType, aIsContentPreferred,
             aRequest, aContentHandler, _retval);
 
     return This->content_listener
@@ -2199,7 +2199,7 @@ nsIXMLHttpRequest *create_nsxhr(nsIDOMWindow *nswindow)
         return NULL;
     }
 
-    nsres = nsIXMLHttpRequest_Init(nsxhr, nspri, NULL, nsglo, NULL);
+    nsres = nsIXMLHttpRequest_Init(nsxhr, nspri, NULL, nsglo, NULL, NULL);
 
     nsISupports_Release(nspri);
     nsIGlobalObject_Release(nsglo);
diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl
index 3fc2ca6..13c610f 100644
--- a/dlls/mshtml/nsiface.idl
+++ b/dlls/mshtml/nsiface.idl
@@ -23,7 +23,7 @@
  * compatible with XPCOM, usable in C code.
  */
 
-cpp_quote("#define GECKO_VERSION \"2.36\"")
+cpp_quote("#define GECKO_VERSION \"2.40\"")
 cpp_quote("#define GECKO_VERSION_STRING \"Wine Gecko \" GECKO_VERSION")
 
 import "wtypes.idl";
@@ -145,7 +145,6 @@ typedef nsISupports nsIAtom;
 typedef nsISupports nsISupportsArray;
 typedef nsISupports nsIContentFilter;
 typedef nsISupports nsIDOMMediaList;
-typedef nsISupports nsIDOMHTMLTableCaptionElement;
 typedef nsISupports nsIDOMHTMLTableSectionElement;
 typedef nsISupports nsIDOMClientRectList;
 typedef nsISupports nsINode;
@@ -608,7 +607,7 @@ interface nsIHttpHeaderVisitor : nsISupports
 
 [
     object,
-    uuid(82083578-fb78-4f9a-953c-cecbae500697),
+    uuid(86ad7e1f-3a64-4e0f-a104-395ebecd7d5c),
     local
 ]
 interface nsIHttpChannel : nsIChannel
@@ -636,12 +635,13 @@ interface nsIHttpChannel : nsIChannel
     nsresult VisitResponseHeaders(nsIHttpHeaderVisitor *aVisitor);
     nsresult IsNoStoreResponse(bool *_retval);
     nsresult IsNoCacheResponse(bool *_retval);
+    nsresult IsPrivateResponse(bool *_retval);
     nsresult RedirectTo(nsIURI *aNewURI);
 }
 
 [
     object,
-    uuid(62a8d6e2-3418-4c6f-9d90-88573838f6dd),
+    uuid(26833ec7-4555-4f23-9281-3a12d4b76db1),
     local
 ]
 interface nsIHttpChannelInternal : nsISupports
@@ -666,17 +666,23 @@ interface nsIHttpChannelInternal : nsISupports
     nsresult HTTPUpgrade(const nsACString *aProtocolName, nsIHttpUpgradeListener *aListener);
     nsresult GetAllowSpdy(bool *aAllowSpdy);
     nsresult SetAllowSpdy(bool aAllowSpdy);
-    nsresult GetLoadAsBlocking(bool *aLoadAsBlocking);
-    nsresult SetLoadAsBlocking(bool aLoadAsBlocking);
-    nsresult GetLoadUnblocked(bool *aLoadUnblocked);
-    nsresult SetLoadUnblocked(bool aLoadUnblocked);
     nsresult GetResponseTimeoutEnabled(bool *aResponseTimeoutEnabled);
     nsresult SetResponseTimeoutEnabled(bool aResponseTimeoutEnabled);
     nsresult GetApiRedirectToURI(nsIURI **aApiRedirectToURI);
+    nsresult GetAllowAltSvc(bool *aAllowAltSvc);
+    nsresult SetAllowAltSvc(bool aAllowAltSvc);
     nsresult AddRedirect(nsIPrincipal *aPrincipal);
     nsresult GetLastModifiedTime(PRTime *aLastModifiedTime);
     nsresult ForceNoIntercept();
+    nsresult GetCorsIncludeCredentials(bool *aCorsIncludeCredentials);
+    nsresult SetCorsIncludeCredentials(bool aCorsIncludeCredentials);
+    nsresult GetCorsMode(uint32_t *aCorsMode);
+    nsresult SetCorsMode(uint32_t aCorsMode);
     nsresult GetTopWindowURI(nsIURI **aTopWindowURI);
+    nsresult GetNetworkInterfaceId(nsACString *aNetworkInterfaceId);
+    nsresult SetNetworkInterfaceId(const nsACString *aNetworkInterfaceId);
+    nsresult ContinueBeginConnect();
+    nsresult GetProxyURI(nsIURI **aProxyURI);
 }
 
 [
@@ -703,7 +709,7 @@ interface nsIAsyncVerifyRedirectCallback : nsISupports
 
 [
     object,
-    uuid(a430d870-df77-4502-9570-d46a8de33154),
+    uuid(0197720d-37ed-4e75-8956-d0d296e4d8a6),
     local
 ]
 interface nsIChannelEventSink : nsISupports
@@ -711,6 +717,7 @@ interface nsIChannelEventSink : nsISupports
     const UINT REDIRECT_TEMPORARY = 1;
     const UINT REDIRECT_PERMANENT = 2;
     const UINT REDIRECT_INTERNAL  = 4;
+    const UINT REDIRECT_STS_UPGRADE = 8;
 
     nsresult AsyncOnChannelRedirect(nsIChannel *oldChannel, nsIChannel *newChannel, uint32_t flags,
                                     nsIAsyncVerifyRedirectCallback *callback);
@@ -1381,7 +1388,7 @@ interface nsIDOMWindowCollection : nsISupports
 
 [
     object,
-    uuid(ed7cc4e4-cf5b-42af-9c2e-8df074a01470),
+    uuid(8146f3fc-9fc1-47c5-85ef-95d686e4ca6d),
     local
 ]
 interface nsIDOMWindow : nsISupports
@@ -1429,7 +1436,6 @@ interface nsIDOMWindow : nsISupports
     nsresult GetSessionStorage(nsISupports **aSessionStorage);
     nsresult GetLocalStorage(nsISupports **aLocalStorage);
     nsresult GetIndexedDB(nsISupports **aIndexedDB);
-    nsresult GetMozIndexedDB(nsISupports **aMozIndexedDB);
     nsresult GetSelection(nsISelection **_retval);
     nsresult MatchMedia(const nsAString *media_query_list, nsISupports **_retval);
     nsresult GetScreen(nsIDOMScreen **aScreen);
@@ -2012,8 +2018,8 @@ interface nsIDOMHTMLLinkElement : nsISupports
 ]
 interface nsIDOMHTMLTableElement : nsISupports
 {
-    nsresult GetCaption(nsIDOMHTMLTableCaptionElement **aCaption);
-    nsresult SetCaption(nsIDOMHTMLTableCaptionElement *aCaption);
+    nsresult GetCaption(nsIDOMHTMLElement **aCaption);
+    nsresult SetCaption(nsIDOMHTMLElement *aCaption);
     nsresult GetTHead(nsIDOMHTMLElement **aTHead);
     nsresult SetTHead(nsIDOMHTMLElement *aTHead);
     nsresult GetTFoot(nsIDOMHTMLElement **aTFoot);
@@ -2240,13 +2246,13 @@ interface nsIDOMHTMLStyleElement : nsISupports
 
 [
     object,
-    uuid(94928ab3-8b63-11d3-989d-001083010e9b),
+    uuid(10a28f38-32e8-4c63-8aa1-12eaaebc369a),
     local
 ]
 interface nsIURIContentListener : nsISupports
 {
     nsresult OnStartURIOpen(nsIURI *aURI, bool *_retval);
-    nsresult DoContent(const char *aContentType, bool aIsContentPreferred, nsIRequest *aRequest,
+    nsresult DoContent(const nsACString *aContentType, bool aIsContentPreferred, nsIRequest *aRequest,
         nsIStreamListener **aContentHandler, bool *_retval);
     nsresult IsPreferred(const char *aContentType, char **aDesiredContentType, bool *_retval);
     nsresult CanHandleContent(const char *aContentType, bool aIsContentPreferred,
@@ -2338,7 +2344,7 @@ interface nsIBaseWindow : nsISupports
 
 [
     object,
-    uuid(b7568a50-4c50-442c-a6be-3a340a48d89a),
+    uuid(0e92d522-53a5-4af6-9a24-4eccdcbf4f91),
     local
 ]
 interface nsIWebNavigation : nsISupports
@@ -2368,7 +2374,7 @@ interface nsIWebNavigation : nsISupports
     nsresult GotoIndex(int32_t index);
     nsresult LoadURI(const PRUnichar *aURI, uint32_t aLoadFlags, nsIURI *aReferrer,
             nsIInputStream *aPostData, nsIInputStream *aHeaders);
-    nsresult LoadURIWithBase(const PRUnichar *aURI, uint32_t aLoadFlags, nsIURI *aReferrer,
+    nsresult LoadURIWithOptions(const PRUnichar *aURI, uint32_t aLoadFlags, nsIURI *aReferrer, uint32_t aReferrerPolicy,
             nsIInputStream *aPostData, nsIInputStream *aHeaders, nsIURI *aBaseURI);
     nsresult Reload(uint32_t aReloadFlags);
     nsresult Stop(uint32_t aStopFlags);
@@ -2783,7 +2789,7 @@ interface nsIExternalProtocolHandler : nsIProtocolHandler
 
 [
     object,
-    uuid(d8555f58-203a-465a-a33e-442ae4c6c4cf),
+    uuid(4286de5a-b2ea-446f-8f70-e2a461f42694),
     local
 ]
 interface nsIIOService : nsISupports
@@ -2796,6 +2802,7 @@ interface nsIIOService : nsISupports
     nsresult NewChannelFromURI2(nsIURI *aURI, nsIDOMNode *aLoadingNode, nsIPrincipal *aLoadingPrincipal,
             nsIPrincipal *aTriggeringPrincipal, uint32_t aSecurityFlags, uint32_t aContentPolicyType,
             nsIChannel **_retval);
+    nsresult NewChannelFromURIWithLoadInfo(nsIURI *aURI, nsILoadInfo *aLoadInfo, nsIChannel **_retval);
     nsresult NewChannelFromURI(nsIURI *aURI, nsIChannel **_retval);
     nsresult NewChannel2(const nsACString *aSpec, const char *aOriginCharset, nsIURI *aBaseURI,
             nsIDOMNode *aLoadingNode, nsIPrincipal *aLoadingPrincipal, nsIPrincipal *aTriggeringPrincipal,
@@ -2804,11 +2811,14 @@ interface nsIIOService : nsISupports
                         nsIChannel **_retval);
     nsresult GetOffline(bool *aOffline);
     nsresult SetOffline(bool aOffline);
+    nsresult GetConnectivity(bool *aConnectivity);
     nsresult SetAppOffline(uint32_t appId, int32_t state);
     nsresult IsAppOffline(uint32_t appId, bool *_retval);
     nsresult GetAppOfflineState(uint32_t appId, int32_t *_retval);
     nsresult AllowPort(int32_t aPort, const char *aScheme, bool *_retval);
     nsresult ExtractScheme(const nsACString *urlString, nsACString *_retval);
+    nsresult NewLoadInfo(nsIPrincipal *aLoadingPrincipal, nsIPrincipal *aTriggeringPrincipal,
+            nsIDOMNode *aLoadingNode, uint32_t aSecurityFlags, uint32_t aContentPolicyType, nsILoadInfo **_retval);
 }
 
 [
@@ -2929,7 +2939,7 @@ interface nsIDOMEvent : nsISupports
 
 [
     object,
-    uuid(9621eb05-b498-4e87-a012-95d817987624),
+    uuid(1a75c351-d115-4d51-94df-731dd1723a1f),
     local
 ]
 interface nsIDOMWindowUtils : nsISupports
@@ -2949,8 +2959,9 @@ interface nsIDOMWindowUtils : nsISupports
     nsresult SetDisplayPortMarginsForElement(float aLeftMargin, float aTopMargin, float aRightMargin, float aBottomMargin,
             uint32_t aAlignmentX, uint32_t aAlignmentY, nsIDOMElement *aElement, uint32_t aPriority);
     nsresult SetDisplayPortBaseForElement(int32_t aX, int32_t aY, int32_t aWidth, int32_t aHeight, nsIDOMElement *aElement);
-    nsresult SetResolution(float aXResolution, float aYResolution);
-    nsresult GetResolution(float *aXResolution, float *aYResolution);
+    nsresult SetResolution(float aResolution);
+    nsresult GetResolution(float *aResolution);
+    nsresult SetResolutionAndScaleTo(float aResolution);
     nsresult GetIsResolutionSet(bool *aIsResolutionSet);
     nsresult GetIsFirstPaint(bool *aIsFirstPaint);
     nsresult SetIsFirstPaint(bool aIsFirstPaint);
@@ -2979,15 +2990,16 @@ interface nsIDOMWindowUtils : nsISupports
     nsresult SendKeyEvent(const nsAString *aType, int32_t aKeyCode, int32_t aCharCode, int32_t aModifiers,
            uint32_t aAdditionalFlags, bool *_retval);
     nsresult SendNativeKeyEvent(int32_t aNativeKeyboardLayout, int32_t aNativeKeyCode, int32_t aModifierFlags,
-           const nsAString *aCharacters, const nsAString *aUnmodifiedCharacters);
+           const nsAString *aCharacters, const nsAString *aUnmodifiedCharacters, nsIObserver *aObserver);
     nsresult SendNativeMouseEvent(int32_t aScreenX, int32_t aScreenY, int32_t aNativeMessage, int32_t aModifierFlags,
-           nsIDOMElement *aElement);
+           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);
+           double aDeltaY, double aDeltaZ, uint32_t aModifierFlags, uint32_t aAdditionalFlags, nsIDOMElement *aElement,
+           nsIObserver *aObserver);
     nsresult SendNativeTouchPoint(uint32_t aPointerId, uint32_t aTouchState, int32_t aScreenX, int32_t aScreenY,
-           double aPressure, uint32_t aOrientation);
-    nsresult SendNativeTouchTap(int32_t aScreenX, int32_t aScreenY, bool aLongTap);
-    nsresult ClearNativeTouchSequence();
+           double aPressure, uint32_t aOrientation, nsIObserver *aObserver);
+    nsresult SendNativeTouchTap(int32_t aScreenX, int32_t aScreenY, bool aLongTap, nsIObserver *aObserver);
+    nsresult ClearNativeTouchSequence(nsIObserver *aObserver);
     nsresult ActivateNativeMenuItemAt(const nsAString *indexString);
     nsresult ForceUpdateNativeMenuAt(const nsAString *indexString);
     nsresult Focus(nsIDOMElement *aElement);
@@ -3019,8 +3031,6 @@ interface nsIDOMWindowUtils : nsISupports
     nsresult DispatchEventToChromeOnly(nsIDOMEventTarget *aTarget, nsIDOMEvent *aEvent, bool *_retval);
     nsresult GetClassName(const /*JS::Value*/ void *aObject, JSContext *cx, char **_retval);
     nsresult SendContentCommandEvent(const nsAString *aType, nsITransferable *aTransferable);
-    nsresult SendCompositionEvent(const nsAString *aType, const nsAString *aData, const nsAString *aLocale);
-    nsresult CreateCompositionStringSynthesizer(int /*nsICompositionStringSynthesizer*/ **_retval);
     nsresult SendQueryContentEvent(uint32_t aType, uint32_t aOffset, uint32_t aLength, int32_t aX, int32_t aY,
             uint32_t aAdditionalFlags, nsIQueryContentEventResult **_retval);
     nsresult RemoteFrameFullscreenChanged(nsIDOMElement *aFrameElement, const nsAString *aNewOrigin);
@@ -3030,16 +3040,17 @@ interface nsIDOMWindowUtils : nsISupports
     nsresult SelectAtPoint(float aX, float aY, uint32_t aSelectBehavior, bool *_retval);
     nsresult GetVisitedDependentComputedStyle(nsIDOMElement *aElement, const nsAString *aPseudoElement,
            const nsAString *aPropertyName, nsAString *_retval);
-    nsresult GetParent(const /*JS::Value*/ void *obj, JSContext *cx, /*JS::Value*/ void *_retval);
     nsresult GetOuterWindowID(uint64_t *aOuterWindowID);
     nsresult GetCurrentInnerWindowID(uint64_t *aCurrentInnerWindowID);
     nsresult EnterModalState();
     nsresult LeaveModalState();
     nsresult IsInModalState(bool *_retval);
+    nsresult SetDesktopModeViewport(bool aDesktopModeViewport);
     nsresult SuspendTimeouts();
     nsresult ResumeTimeouts();
     nsresult GetLayerManagerType(nsAString *aLayerManagerType);
     nsresult GetLayerManagerRemote(bool *aLayerManagerRemote);
+    nsresult GetSupportsHardwareH264Decoding(bool *aSupportsHardwareH264Decoding);
     nsresult StartFrameTimeRecording(uint32_t *startIndex);
     nsresult StopFrameTimeRecording(uint32_t startIndex, uint32_t *frameCount, float **frameIntervals);
     nsresult BeginTabSwitch();
@@ -3059,8 +3070,9 @@ interface nsIDOMWindowUtils : nsISupports
     nsresult FindElementWithViewId(long /*nsViewID*/ aId, nsIDOMElement **_retval);
     nsresult GetViewId(nsIDOMElement *aElement, long /*nsViewID*/ *_retval);
     nsresult LeafLayersPartitionWindow(bool *_retval);
-    nsresult GetMayHaveTouchEventListeners(bool *aMayHaveTouchEventListeners);
     nsresult CheckAndClearPaintedState(nsIDOMElement *aElement, bool *_retval);
+    nsresult IsPartOfOpaqueLayer(nsIDOMElement *aElement, bool *_retval);
+    nsresult NumberOfAssignedPaintedLayers(nsIDOMElement **aElements, uint32_t count, uint32_t *_retval);
     nsresult GetFileId(const /*JS::Value*/ void *aFile, JSContext *cx, int64_t *_retval);
     nsresult GetFilePath(void /*JS::HandleValue*/ *aFile, JSContext *cx, nsAString *_retval);
     nsresult GetFileReferences(const nsAString *aDatabaseName, int64_t aId, void /*JS::HandleValue*/ *aOptions,
@@ -3097,12 +3109,18 @@ interface nsIDOMWindowUtils : nsISupports
     nsresult SetHandlingUserInput(bool aHandlingInput, void /*nsIJSRAIIHelper*/ **_retval);
     nsresult GetContentAPZTestData(JSContext *cx, int /*JS::MutableHandleValue*/ _retval);
     nsresult GetCompositorAPZTestData(JSContext *cx, void /*JS::MutableHandleValue*/ *_retval);
+    nsresult PostRestyleSelfEvent(nsIDOMElement *aElement);
     nsresult GetAudioMuted(bool *aAudioMuted) ;
     nsresult SetAudioMuted(bool aAudioMuted);
     nsresult GetAudioVolume(float *aAudioVolume);
     nsresult SetAudioVolume(float aAudioVolume);
     nsresult XpconnectArgument(nsIDOMWindowUtils *aThis);
     nsresult AskPermission(void /*nsIContentPermissionRequest*/ *aRequest);
+    nsresult GetFramesConstructed(uint64_t *aFramesConstructed);
+    nsresult GetFramesReflowed(uint64_t *aFramesReflowed);
+    nsresult SetChromeMargin(int32_t aTop, int32_t aRight, int32_t aBottom, int32_t aLeft);
+    nsresult GetServiceWorkersTestingEnabled(bool *aServiceWorkersTestingEnabled);
+    nsresult SetServiceWorkersTestingEnabled(bool aServiceWorkersTestingEnabled);
 }
 
 cpp_quote("#define CONTEXT_NONE              0x00")
@@ -3394,7 +3412,7 @@ interface nsIController : nsISupports
 
 [
     object,
-    uuid(697a2fe1-5549-48e7-9a1a-c29dab14e239),
+    uuid(70f7e9ea-a9bf-48cc-ad9d-8acaeed29b68),
     local
 ]
 interface nsIContent : nsISupports
@@ -3404,7 +3422,7 @@ interface nsIContent : nsISupports
 
 [
     object,
-    uuid(f63d2f6e-d1c1-49b9-8826-d59e5d722a42),
+    uuid(0b78eabe-8b94-4ea1-9331-5d48e83ada95),
     local
 ]
 interface nsIDocument : nsISupports
@@ -3530,7 +3548,7 @@ interface nsIEditor  : nsISupports
 
 [
     object,
-    uuid(393a364f-e8e2-48a1-a271-a0067b6bac9b),
+    uuid(87ee993e-985f-4a43-a974-0d9512da2fb0),
     local
 ]
 interface nsIHTMLEditor : nsISupports
@@ -3588,7 +3606,6 @@ interface nsIHTMLEditor : nsISupports
     nsresult IsAnonymousElement([in] nsIDOMElement *aElement, [out] bool *_retval);
     nsresult GetReturnInParagraphCreatesNewParagraph([out] bool *_retval);
     nsresult SetReturnInParagraphCreatesNewParagraph([in] bool prb);
-    nsresult BreakIsVisible(nsIDOMNode *aNode, bool *_retval);
     void /*Element*/ *GetActiveEditingHost();
 }
 
@@ -3756,7 +3773,7 @@ interface nsIDocShellLoadInfo : nsISupports
 
 [
     object,
-    uuid(c2756385-bc54-417b-9ae4-c5a40053a2a3),
+    uuid(696b32a1-3cf1-4909-b501-474b25fc7954),
     local
 ]
 interface nsIDocShell : nsIDocShellTreeItem
@@ -3800,6 +3817,8 @@ interface nsIDocShell : nsIDocShellTreeItem
     nsresult SetAllowWindowControl(bool aAllowWindowControl);
     nsresult GetAllowContentRetargeting(bool *aAllowContentRetargeting);
     nsresult SetAllowContentRetargeting(bool aAllowContentRetargeting);
+    nsresult GetAllowContentRetargetingOnChildren(bool *aAllowContentRetargetingOnChildren);
+    nsresult SetAllowContentRetargetingOnChildren(bool aAllowContentRetargetingOnChildren);
     nsresult GetDocShellEnumerator(int32_t aItemType, int32_t aDirection, nsISimpleEnumerator **_retval);
     nsresult GetAppType(uint32_t *aAppType);
     nsresult SetAppType(uint32_t aAppType);
@@ -3856,6 +3875,8 @@ interface nsIDocShell : nsIDocShellTreeItem
     nsresult GetCanExecuteScripts(bool *aCanExecuteScripts);
     nsresult GetIsActive(bool *aIsActive);
     nsresult SetIsActive(bool aIsActive);
+    nsresult SetIsPrerendered(bool prerendered);
+    nsresult GetIsPrerendered(bool *aIsPrerendered);
     nsresult GetHistoryID(uint64_t *aHistoryID);
     nsresult GetIsAppTab(bool *aIsAppTab);
     nsresult SetIsAppTab(bool aIsAppTab);
@@ -3925,13 +3946,15 @@ interface nsIDocShell : nsIDocShellTreeItem
     nsresult SetDeviceSizeIsPageSize(bool aDeviceSizeIsPageSize);
     void /* thiscall */ SetOpener(void /*nsITabParent*/ *aOpener);
     void /* thiscall nsITabParent */ *GetOpener();
-    void /* thiscall */ SetOpenedRemote(void /*nsITabParent*/ *aOpenedRemote);
-    void /* thiscall nsITabParent */ *GetOpenedRemote();
     void /*mozilla::dom::URLSearchParams */ *GetURLSearchParams();
-    void /* thiscall */ NotifyJSRunToCompletionStart();
+    void /* thiscall */ NotifyJSRunToCompletionStart(const char *aReason, const char16_t *functionName,
+            const char16_t *fileName, uint32_t lineNumber);
     void /* thiscall */ NotifyJSRunToCompletionStop();
     nsresult GetHasLoadedNonBlankURI(bool *aHasLoadedNonBlankURI);
-
+    nsresult GetPaymentRequestId(nsAString *aPaymentRequestId);
+    nsresult SetPaymentRequestId(const nsAString *aPaymentRequestId);
+    nsresult GetWindowDraggingAllowed(bool *aWindowDraggingAllowed);
+    nsresult SetWindowDraggingAllowed(bool aWindowDraggingAllowed);
 }
 
 [
@@ -4063,7 +4086,7 @@ interface nsIPluginInstance : nsISupports
 
 [
     object,
-    uuid(e2538ded-13ef-4f4d-946b-65d333b4f03c),
+    uuid(11afa8be-d997-4e07-a6a3-6f872ec3ee7f),
     local
 ]
 interface nsIGlobalObject : nsISupports
@@ -4072,7 +4095,7 @@ interface nsIGlobalObject : nsISupports
 
 [
     object,
-    uuid(2e91e088-e9fa-4ba4-9887-2a0b7cf27a3e),
+    uuid(6f54214c-7175-498d-9d2d-0429e38c2869),
     local
 ]
 interface nsIXMLHttpRequest : nsISupports
@@ -4090,7 +4113,6 @@ interface nsIXMLHttpRequest : nsISupports
     nsresult GetResponseHeader(const nsACString *header, nsACString *_retval);
     nsresult Open(const nsACString *method, const nsACString *url, bool async, const nsAString *user, const nsAString *password, uint8_t _argc);
     nsresult Send(nsIVariant *body);
-    nsresult SendAsBinary(const nsAString *body);
     nsresult SetRequestHeader(const nsACString *header, const nsACString *value);
     nsresult GetTimeout(uint32_t *aTimeout);
     nsresult SetTimeout(uint32_t aTimeout);
@@ -4100,7 +4122,7 @@ interface nsIXMLHttpRequest : nsISupports
     nsresult SetMozBackgroundRequest(bool aMozBackgroundRequest);
     nsresult GetWithCredentials(bool *aWithCredentials);
     nsresult SetWithCredentials(bool aWithCredentials);
-    nsresult Init(nsIPrincipal *principal, nsIScriptContext *scriptContext, nsIGlobalObject *globalObject, nsIURI *baseURI);
+    nsresult Init(nsIPrincipal *principal, nsIScriptContext *scriptContext, nsIGlobalObject *globalObject, nsIURI *baseURI, nsILoadGroup *loadGroup);
     nsresult GetUpload(nsIXMLHttpRequestUpload **aUpload);
     nsresult GetOnreadystatechange(JSContext*cx, int /*JS::MutableHandleValue*/ aOnreadystatechange);
     nsresult SetOnreadystatechange(JSContext*cx, int /*JS::HandleValue*/ aOnreadystatechange);
@@ -4110,7 +4132,7 @@ interface nsIXMLHttpRequest : nsISupports
 
 [
     object,
-    uuid(f649959d-dae3-4027-83fd-5b7f8c8a8815),
+    uuid(ba602ca6-dc7a-457e-a57a-ee5b343fd863),
     local
 ]
 interface nsIScriptSecurityManager : nsISupports {
@@ -4135,6 +4157,8 @@ interface nsIScriptSecurityManager : nsISupports {
     nsresult GetJarPrefix(uint32_t appId, bool inMozBrowser, nsACString *_retval);
     nsresult ActivateDomainPolicy(nsIDomainPolicy **_retval);
     nsresult GetDomainPolicyActive(bool *aDomainPolicyActive);
+    nsresult ActivateDomainPolicyInternal(nsIDomainPolicy **_retval);
+    void CloneDomainPolicy(int /*mozilla::dom::DomainPolicyClone*/ *aClone);
     nsresult PolicyAllowsScript(nsIURI *aDomain, bool *_retval);
 }
 
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index 9bced99..a661c4d 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -1469,6 +1469,15 @@ static nsresult NSAPI nsChannel_IsNoCacheResponse(nsIHttpChannel *iface, cpp_boo
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
+static nsresult NSAPI nsChannel_IsPrivateResponse(nsIHttpChannel *iface, cpp_bool *_retval)
+{
+    nsChannel *This = impl_from_nsIHttpChannel(iface);
+
+    FIXME("(%p)->(%p)\n", This, _retval);
+
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
 static nsresult NSAPI nsChannel_RedirectTo(nsIHttpChannel *iface, nsIURI *aNewURI)
 {
     nsChannel *This = impl_from_nsIHttpChannel(iface);
@@ -1538,6 +1547,7 @@ static const nsIHttpChannelVtbl nsChannelVtbl = {
     nsChannel_VisitResponseHeaders,
     nsChannel_IsNoStoreResponse,
     nsChannel_IsNoCacheResponse,
+    nsChannel_IsPrivateResponse,
     nsChannel_RedirectTo
 };
 
@@ -1828,75 +1838,91 @@ static nsresult NSAPI nsHttpChannelInternal_SetAllowSpdy(nsIHttpChannelInternal
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
-static nsresult NSAPI nsHttpChannelInternal_GetLoadAsBlocking(nsIHttpChannelInternal *iface, cpp_bool *aLoadAsBlocking)
+static nsresult NSAPI nsHttpChannelInternal_GetResponseTimeoutEnabled(nsIHttpChannelInternal *iface,
+        cpp_bool *aResponseTimeoutEnabled)
 {
     nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
-    FIXME("(%p)->(%p)\n", This, aLoadAsBlocking);
+    FIXME("(%p)->(%p)\n", This, aResponseTimeoutEnabled);
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
-static nsresult NSAPI nsHttpChannelInternal_SetLoadAsBlocking(nsIHttpChannelInternal *iface, cpp_bool aLoadAsBlocking)
+static nsresult NSAPI nsHttpChannelInternal_SetResponseTimeoutEnabled(nsIHttpChannelInternal *iface,
+        cpp_bool aResponseTimeoutEnabled)
 {
     nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
-    FIXME("(%p)->(%x)\n", This, aLoadAsBlocking);
+    FIXME("(%p)->(%x)\n", This, aResponseTimeoutEnabled);
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
-static nsresult NSAPI nsHttpChannelInternal_GetLoadUnblocked(nsIHttpChannelInternal *iface, cpp_bool *aLoadUnblocked)
+static nsresult NSAPI nsHttpChannelInternal_GetApiRedirectToURI(nsIHttpChannelInternal *iface, nsIURI **aApiRedirectToURI)
 {
     nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
-    FIXME("(%p)->(%p)\n", This, aLoadUnblocked);
+    FIXME("(%p)->(%p)\n", This, aApiRedirectToURI);
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
-static nsresult NSAPI nsHttpChannelInternal_SetLoadUnblocked(nsIHttpChannelInternal *iface, cpp_bool aLoadUnblocked)
+static nsresult NSAPI nsHttpChannelInternal_GetAllowAltSvc(nsIHttpChannelInternal *iface, cpp_bool *aAllowAltSvc)
 {
     nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
-    FIXME("(%p)->(%x)\n", This, aLoadUnblocked);
+    FIXME("(%p)->(%p)\n", This, aAllowAltSvc);
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
-static nsresult NSAPI nsHttpChannelInternal_GetResponseTimeoutEnabled(nsIHttpChannelInternal *iface,
-        cpp_bool *aResponseTimeoutEnabled)
+static nsresult NSAPI nsHttpChannelInternal_SetAllowAltSvc(nsIHttpChannelInternal *iface, cpp_bool aAllowAltSvc)
 {
     nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
-    FIXME("(%p)->(%p)\n", This, aResponseTimeoutEnabled);
+    FIXME("(%p)->(%x)\n", This, aAllowAltSvc);
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
-static nsresult NSAPI nsHttpChannelInternal_SetResponseTimeoutEnabled(nsIHttpChannelInternal *iface,
-        cpp_bool aResponseTimeoutEnabled)
+static nsresult NSAPI nsHttpChannelInternal_AddRedirect(nsIHttpChannelInternal *iface, nsIPrincipal *aPrincipal)
 {
     nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
-    FIXME("(%p)->(%x)\n", This, aResponseTimeoutEnabled);
+    FIXME("(%p)->(%p)\n", This, aPrincipal);
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
-static nsresult NSAPI nsHttpChannelInternal_GetApiRedirectToURI(nsIHttpChannelInternal *iface, nsIURI **aApiRedirectToURI)
+static nsresult NSAPI nsHttpChannelInternal_GetLastModifiedTime(nsIHttpChannelInternal *iface, PRTime *aLastModifiedTime)
 {
     nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
-    FIXME("(%p)->(%p)\n", This, aApiRedirectToURI);
+    FIXME("(%p)->(%p)\n", This, aLastModifiedTime);
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
-static nsresult NSAPI nsHttpChannelInternal_AddRedirect(nsIHttpChannelInternal *iface, nsIPrincipal *aPrincipal)
+static nsresult NSAPI nsHttpChannelInternal_ForceNoIntercept(nsIHttpChannelInternal *iface)
 {
     nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
-    FIXME("(%p)->(%p)\n", This, aPrincipal);
+    FIXME("(%p)\n", This);
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
-static nsresult NSAPI nsHttpChannelInternal_GetLastModifiedTime(nsIHttpChannelInternal *iface, PRTime *aLastModifiedTime)
+static nsresult NSAPI nsHttpChannelInternal_GetCorsIncludeCredentials(nsIHttpChannelInternal *iface,
+        cpp_bool *aCorsIncludeCredentials)
 {
     nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
-    FIXME("(%p)->(%p)\n", This, aLastModifiedTime);
+    FIXME("(%p)->(%p)\n", This, aCorsIncludeCredentials);
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
-static nsresult NSAPI nsHttpChannelInternal_ForceNoIntercept(nsIHttpChannelInternal *iface)
+static nsresult NSAPI nsHttpChannelInternal_SetCorsIncludeCredentials(nsIHttpChannelInternal *iface,
+        cpp_bool aCorsIncludeCredentials)
 {
     nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
-    FIXME("(%p)\n", This);
+    FIXME("(%p)->(%x)\n", This, aCorsIncludeCredentials);
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+static nsresult NSAPI nsHttpChannelInternal_GetCorsMode(nsIHttpChannelInternal *iface, UINT32 *aCorsMode)
+{
+    nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
+    FIXME("(%p)->(%p)\n", This, aCorsMode);
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+static nsresult NSAPI nsHttpChannelInternal_SetCorsMode(nsIHttpChannelInternal *iface, UINT32 aCorsMode)
+{
+    nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
+    FIXME("(%p)->(%d)\n", This, aCorsMode);
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
@@ -1907,6 +1933,36 @@ static nsresult NSAPI nsHttpChannelInternal_GetTopWindowURI(nsIHttpChannelIntern
     return NS_ERROR_NOT_IMPLEMENTED;
 }
 
+static nsresult NSAPI nsHttpChannelInternal_GetNetworkInterfaceId(nsIHttpChannelInternal *iface,
+        nsACString *aNetworkInterfaceId)
+{
+    nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
+    FIXME("(%p)->(%p)\n", This, aNetworkInterfaceId);
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+static nsresult NSAPI nsHttpChannelInternal_SetNetworkInterfaceId(nsIHttpChannelInternal *iface,
+        const nsACString *aNetworkInterfaceId)
+{
+    nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
+    FIXME("(%p)->(%s)\n", This, debugstr_nsacstr(aNetworkInterfaceId));
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+static nsresult NSAPI nsHttpChannelInternal_ContinueBeginConnect(nsIHttpChannelInternal *iface)
+{
+    nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
+    FIXME("(%p)\n", This);
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+static nsresult NSAPI nsHttpChannelInternal_GetProxyURI(nsIHttpChannelInternal *iface, nsIURI **aProxyURI)
+{
+    nsChannel *This = impl_from_nsIHttpChannelInternal(iface);
+    FIXME("(%p)->(%p)\n", This, aProxyURI);
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
 static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = {
     nsHttpChannelInternal_QueryInterface,
     nsHttpChannelInternal_AddRef,
@@ -1931,17 +1987,23 @@ static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = {
     nsHttpChannelInternal_HTTPUpgrade,
     nsHttpChannelInternal_GetAllowSpdy,
     nsHttpChannelInternal_SetAllowSpdy,
-    nsHttpChannelInternal_GetLoadAsBlocking,
-    nsHttpChannelInternal_SetLoadAsBlocking,
-    nsHttpChannelInternal_GetLoadUnblocked,
-    nsHttpChannelInternal_SetLoadUnblocked,
     nsHttpChannelInternal_GetResponseTimeoutEnabled,
     nsHttpChannelInternal_SetResponseTimeoutEnabled,
     nsHttpChannelInternal_GetApiRedirectToURI,
+    nsHttpChannelInternal_GetAllowAltSvc,
+    nsHttpChannelInternal_SetAllowAltSvc,
     nsHttpChannelInternal_AddRedirect,
     nsHttpChannelInternal_GetLastModifiedTime,
     nsHttpChannelInternal_ForceNoIntercept,
-    nsHttpChannelInternal_GetTopWindowURI
+    nsHttpChannelInternal_GetCorsIncludeCredentials,
+    nsHttpChannelInternal_SetCorsIncludeCredentials,
+    nsHttpChannelInternal_GetCorsMode,
+    nsHttpChannelInternal_SetCorsMode,
+    nsHttpChannelInternal_GetTopWindowURI,
+    nsHttpChannelInternal_GetNetworkInterfaceId,
+    nsHttpChannelInternal_SetNetworkInterfaceId,
+    nsHttpChannelInternal_ContinueBeginConnect,
+    nsHttpChannelInternal_GetProxyURI
 };
 
 
@@ -3581,7 +3643,7 @@ static nsresult NSAPI nsIOService_NewFileURI(nsIIOService *iface, nsIFile *aFile
     return nsIIOService_NewFileURI(nsio, aFile, _retval);
 }
 
-static nsresult new_channel_from_uri(nsIURI *uri, nsIChannel **_retval)
+static nsresult new_channel_from_uri(nsIURI *uri, nsILoadInfo *load_info, nsIChannel **_retval)
 {
     nsWineURI *wine_uri;
     nsChannel *ret;
@@ -3601,6 +3663,9 @@ static nsresult new_channel_from_uri(nsIURI *uri, nsIChannel **_retval)
     nsIURI_AddRef(uri);
     ret->original_uri = uri;
 
+    if(load_info)
+        nsIHttpChannel_SetLoadInfo(&ret->nsIHttpChannel_iface, load_info);
+
     *_retval = (nsIChannel*)&ret->nsIHttpChannel_iface;
     return NS_OK;
 }
@@ -3609,16 +3674,36 @@ static nsresult NSAPI nsIOService_NewChannelFromURI2(nsIIOService *iface, nsIURI
         nsIDOMNode *aLoadingNode, nsIPrincipal *aLoadingPrincipal, nsIPrincipal *aTriggeringPrincipal,
         UINT32 aSecurityFlags, UINT32 aContentPolicyType, nsIChannel **_retval)
 {
-    FIXME("(%p %p %p %p %x %d %p) semi-stub\n", aURI, aLoadingNode, aLoadingPrincipal, aTriggeringPrincipal,
+    nsILoadInfo *load_info = NULL;
+    nsresult nsres;
+
+    TRACE("(%p %p %p %p %x %d %p)\n", aURI, aLoadingNode, aLoadingPrincipal, aTriggeringPrincipal,
           aSecurityFlags, aContentPolicyType, _retval);
-    return new_channel_from_uri(aURI, _retval);
+
+    if(aLoadingNode || aLoadingPrincipal) {
+        nsres = nsIIOService_NewLoadInfo(nsio, aLoadingPrincipal, aTriggeringPrincipal, aLoadingNode,
+                aSecurityFlags, aContentPolicyType, &load_info);
+        assert(nsres == NS_OK);
+    }
+
+    nsres = new_channel_from_uri(aURI, load_info, _retval);
+    if(load_info)
+        nsISupports_Release(load_info);
+    return nsres;
+}
+
+static nsresult NSAPI nsIOService_NewChannelFromURIWithLoadInfo(nsIIOService *iface, nsIURI *aURI,
+        nsILoadInfo *aLoadInfo, nsIChannel **_retval)
+{
+    TRACE("(%p %p %p)\n", aURI, aLoadInfo, _retval);
+    return new_channel_from_uri(aURI, aLoadInfo, _retval);
 }
 
 static nsresult NSAPI nsIOService_NewChannelFromURI(nsIIOService *iface, nsIURI *aURI,
         nsIChannel **_retval)
 {
     TRACE("(%p %p)\n", aURI, _retval);
-    return new_channel_from_uri(aURI, _retval);
+    return new_channel_from_uri(aURI, NULL, _retval);
 }
 
 static nsresult NSAPI nsIOService_NewChannel2(nsIIOService *iface, const nsACString *aSpec,
@@ -3650,6 +3735,12 @@ static nsresult NSAPI nsIOService_SetOffline(nsIIOService *iface, cpp_bool aOffl
     return nsIIOService_SetOffline(nsio, aOffline);
 }
 
+static nsresult NSAPI nsIOService_GetConnectivity(nsIIOService *iface, cpp_bool *aConnectivity)
+{
+    TRACE("(%p)\n", aConnectivity);
+    return nsIIOService_GetConnectivity(nsio, aConnectivity);
+}
+
 static nsresult NSAPI nsIOService_SetAppOffline(nsIIOService *iface, UINT32 appId, INT32 state)
 {
     TRACE("(%d %x)\n", appId, state);
@@ -3691,11 +3782,13 @@ static const nsIIOServiceVtbl nsIOServiceVtbl = {
     nsIOService_NewURI,
     nsIOService_NewFileURI,
     nsIOService_NewChannelFromURI2,
+    nsIOService_NewChannelFromURIWithLoadInfo,
     nsIOService_NewChannelFromURI,
     nsIOService_NewChannel2,
     nsIOService_NewChannel,
     nsIOService_GetOffline,
     nsIOService_SetOffline,
+    nsIOService_GetConnectivity,
     nsIOService_SetAppOffline,
     nsIOService_IsAppOffline,
     nsIOService_GetAppOfflineState,
-- 
1.9.1