diff --git a/dlls/appwiz.cpl/addons.c b/dlls/appwiz.cpl/addons.c
index 82a6797..b569705 100644
--- a/dlls/appwiz.cpl/addons.c
+++ b/dlls/appwiz.cpl/addons.c
@@ -51,7 +51,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(appwizcpl);
 
-#define GECKO_VERSION "1.7"
+#define GECKO_VERSION "1.8-beta1"
 
 #ifdef __i386__
 #define ARCH_STRING "x86"
diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index 86615df..5ac8e4e 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -1022,24 +1022,12 @@ static HRESULT WINAPI HTMLDocument_createElement(IHTMLDocument2 *iface, BSTR eTa
                                                  IHTMLElement **newElem)
 {
     HTMLDocument *This = impl_from_IHTMLDocument2(iface);
-    HTMLDocumentNode *doc_node;
-    nsIDOMHTMLElement *nselem;
     HTMLElement *elem;
     HRESULT hres;
 
     TRACE("(%p)->(%s %p)\n", This, debugstr_w(eTag), newElem);
 
-    /* Use owner doc if called on document fragment */
-    doc_node = This->doc_node;
-    if(!doc_node->nsdoc)
-        doc_node = doc_node->node.doc;
-
-    hres = create_nselem(doc_node, eTag, &nselem);
-    if(FAILED(hres))
-        return hres;
-
-    hres = HTMLElement_Create(doc_node, (nsIDOMNode*)nselem, TRUE, &elem);
-    nsIDOMHTMLElement_Release(nselem);
+    hres = create_element(This->doc_node, eTag, &elem);
     if(FAILED(hres))
         return hres;
 
@@ -1443,11 +1431,55 @@ static HRESULT WINAPI HTMLDocument_createStyleSheet(IHTMLDocument2 *iface, BSTR
                                             LONG lIndex, IHTMLStyleSheet **ppnewStyleSheet)
 {
     HTMLDocument *This = impl_from_IHTMLDocument2(iface);
+    nsIDOMHTMLHeadElement *head_elem;
+    IHTMLStyleElement *style_elem;
+    HTMLElement *elem;
+    nsresult nsres;
+    HRESULT hres;
 
-    FIXME("(%p)->(%s %d %p) semi-stub\n", This, debugstr_w(bstrHref), lIndex, ppnewStyleSheet);
+    static const WCHAR styleW[] = {'s','t','y','l','e',0};
 
-    *ppnewStyleSheet = HTMLStyleSheet_Create(NULL);
-    return S_OK;
+    TRACE("(%p)->(%s %d %p)\n", This, debugstr_w(bstrHref), lIndex, ppnewStyleSheet);
+
+    if(!This->doc_node->nsdoc) {
+        FIXME("not a real doc object\n");
+        return E_NOTIMPL;
+    }
+
+    if(lIndex != -1)
+        FIXME("Unsupported lIndex %d\n", lIndex);
+
+    if(bstrHref) {
+        FIXME("semi-stub for href %s\n", debugstr_w(bstrHref));
+        *ppnewStyleSheet = HTMLStyleSheet_Create(NULL);
+        return S_OK;
+    }
+
+    hres = create_element(This->doc_node, styleW, &elem);
+    if(FAILED(hres))
+        return hres;
+
+    nsres = nsIDOMHTMLDocument_GetHead(This->doc_node->nsdoc, &head_elem);
+    if(NS_SUCCEEDED(nsres)) {
+        nsIDOMNode *tmp_node;
+
+        nsres = nsIDOMHTMLHeadElement_AppendChild(head_elem, (nsIDOMNode*)elem->nselem, &tmp_node);
+        nsIDOMHTMLHeadElement_Release(head_elem);
+        if(NS_SUCCEEDED(nsres) && tmp_node)
+            nsIDOMNode_Release(tmp_node);
+    }
+    if(NS_FAILED(nsres)) {
+        IHTMLElement_Release(&elem->IHTMLElement_iface);
+        return E_FAIL;
+    }
+
+    hres = IHTMLElement_QueryInterface(&elem->IHTMLElement_iface, &IID_IHTMLStyleElement, (void**)&style_elem);
+    assert(hres == S_OK);
+    IHTMLElement_Release(&elem->IHTMLElement_iface);
+
+    hres = IHTMLStyleElement_get_styleSheet(style_elem, ppnewStyleSheet);
+    IHTMLStyleElement_Release(style_elem);
+    return hres;
 }
 
 static const IHTMLDocument2Vtbl HTMLDocumentVtbl = {
diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 4ce064d..222d3bb 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -199,6 +199,24 @@ HRESULT create_nselem(HTMLDocumentNode *doc, const WCHAR *tag, nsIDOMHTMLElement
     return S_OK;
 }
 
+HRESULT create_element(HTMLDocumentNode *doc, const WCHAR *tag, HTMLElement **ret)
+{
+    nsIDOMHTMLElement *nselem;
+    HRESULT hres;
+
+    /* Use owner doc if called on document fragment */
+    if(!doc->nsdoc)
+        doc = doc->node.doc;
+
+    hres = create_nselem(doc, tag, &nselem);
+    if(FAILED(hres))
+        return hres;
+
+    hres = HTMLElement_Create(doc, (nsIDOMNode*)nselem, TRUE, ret);
+    nsIDOMHTMLElement_Release(nselem);
+    return hres;
+}
+
 static HRESULT WINAPI HTMLElement_QueryInterface(IHTMLElement *iface,
                                                  REFIID riid, void **ppv)
 {
diff --git a/dlls/mshtml/htmlstyleelem.c b/dlls/mshtml/htmlstyleelem.c
index d0eb9c0..3ddbe1a 100644
--- a/dlls/mshtml/htmlstyleelem.c
+++ b/dlls/mshtml/htmlstyleelem.c
@@ -183,8 +183,24 @@ static HRESULT WINAPI HTMLStyleElement_get_onerror(IHTMLStyleElement *iface, VAR
 static HRESULT WINAPI HTMLStyleElement_get_styleSheet(IHTMLStyleElement *iface, IHTMLStyleSheet **p)
 {
     HTMLStyleElement *This = impl_from_IHTMLStyleElement(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+    nsIDOMStyleSheet *ss;
+    nsresult nsres;
+
+    TRACE("(%p)->(%p)\n", This, p);
+
+    if(!This->nsstyle)
+        return E_FAIL;
+
+    nsres = nsIDOMHTMLStyleElement_GetDOMStyleSheet(This->nsstyle, &ss);
+    assert(nsres == NS_OK);
+
+    if(ss) {
+        *p = HTMLStyleSheet_Create(ss);
+        nsIDOMStyleSheet_Release(ss);
+    }else {
+        *p = NULL;
+    }
+    return S_OK;
 }
 
 static HRESULT WINAPI HTMLStyleElement_put_disabled(IHTMLStyleElement *iface, VARIANT_BOOL v)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 39b491e..baada4e 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -232,7 +232,7 @@ typedef struct {
 } nsCycleCollectingAutoRefCnt;
 
 typedef struct {
-    void *x[3];
+    void *x[9];
 } nsXPCOMCycleCollectionParticipant;
 
 typedef struct nsCycleCollectionTraversalCallback nsCycleCollectionTraversalCallback;
@@ -823,6 +823,7 @@ HRESULT get_node_text(HTMLDOMNode*,BSTR*) DECLSPEC_HIDDEN;
 HRESULT replace_node_by_html(nsIDOMHTMLDocument*,nsIDOMNode*,const WCHAR*) DECLSPEC_HIDDEN;
 
 HRESULT create_nselem(HTMLDocumentNode*,const WCHAR*,nsIDOMHTMLElement**) DECLSPEC_HIDDEN;
+HRESULT create_element(HTMLDocumentNode*,const WCHAR*,HTMLElement**) DECLSPEC_HIDDEN;
 
 HRESULT HTMLDOMTextNode_Create(HTMLDocumentNode*,nsIDOMNode*,HTMLDOMNode**) DECLSPEC_HIDDEN;
 
diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl
index d19d5df..7894dfc 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 \"1.7\"")
+cpp_quote("#define GECKO_VERSION \"1.8-beta1\"")
 cpp_quote("#define GECKO_VERSION_STRING \"Wine Gecko \" GECKO_VERSION")
 
 import "wtypes.idl";
@@ -148,7 +148,6 @@ typedef nsISupports nsISecureBrowserUI;
 typedef nsISupports nsIDOMStorage;
 typedef nsISupports nsIDOMDOMTokenList;
 typedef nsISupports nsITransferable;
-typedef nsISupports nsIDOMHTMLHeadElement;
 typedef nsISupports nsIDOMFileList;
 typedef nsISupports nsIDOMFile;
 typedef nsISupports nsIControllers;
@@ -183,6 +182,9 @@ typedef nsISupports nsICycleCollectorListener;
 typedef nsISupports nsIDOMHTMLCanvasElement;
 typedef nsISupports nsIQueryContentEventResult;
 typedef nsISupports nsIDOMBlob;
+typedef nsISupports nsIPrivacyTransitionObserver;
+typedef nsISupports nsIDOMHTMLPropertiesCollection;
+typedef nsISupports mozIDOMApplication;
 
 typedef void *JSContext;
 typedef void *JSObject;
@@ -214,23 +216,6 @@ interface nsIFactory : nsISupports
 
 [
     object,
-    uuid(1d940426-5fe5-42c3-84ae-a300f2d9ebd5),
-    local
-]
-interface nsIComponentManager : nsISupports
-{
-    nsresult GetClassObject(nsCIDRef aClass, nsIIDRef aIID, void **result);
-    nsresult GetClassObjectByContractID(const char *aContractID, nsIIDRef aIID, void **result);
-    nsresult CreateInstance(nsCIDRef aClass, nsISupports *aDelegate, nsIIDRef aIID,
-            void **result);
-    nsresult CreateInstanceByContractID(const char *aContractID, nsISupports *aDelegate,
-            nsIIDRef aIID, void **result);
-    nsresult AddBootstrappedManifestLocation(nsILocalFile *aLocation);
-    nsresult RemoveBootstrappedManifestLocation(nsILocalFile *aLocation);
-}
-
-[
-    object,
     uuid(59e7e77a-38e4-11d4-8cf5-0060b0fc14a3),
     local
 ]
@@ -967,6 +952,8 @@ interface nsIDOMElement : nsIDOMNode
     nsresult GetClientLeft(PRInt32 *aClientLeft);
     nsresult GetClientWidth(PRInt32 *aClientWidth);
     nsresult GetClientHeight(PRInt32 *aClientHeight);
+    nsresult GetScrollLeftMax(PRInt32 *aScrollLeftMax);
+    nsresult GetScrollTopMax(PRInt32 *aScrollTopMax);
     nsresult MozMatchesSelector(const nsAString *selector, bool *_retval);
     nsresult SetCapture(bool retargetToElement);
     nsresult ReleaseCapture();
@@ -988,7 +975,7 @@ cpp_quote("#undef GetClassName")
 
 [
     object,
-    uuid(5c8b21bc-ef6e-4599-a26f-facc05b4adbe),
+    uuid(9a677a5b-e6f7-4e2e-9ef9-22c2ac9967b3),
     local
 ]
 interface nsIDOMHTMLElement : nsIDOMElement
@@ -1004,6 +991,19 @@ interface nsIDOMHTMLElement : nsIDOMElement
     nsresult GetClassName(nsAString *aClassName);
     nsresult SetClassName(const nsAString *aClassName);
     nsresult GetDataset(nsIDOMDOMStringMap **aDataset);
+    nsresult GetItemScope(bool *aItemScope);
+    nsresult SetItemScope(bool aItemScope);
+    nsresult GetItemType(nsIVariant **aItemType);
+    nsresult SetItemType(nsIVariant *aItemType);
+    nsresult GetItemId(nsAString *aItemId);
+    nsresult SetItemId(const nsAString *aItemId);
+    nsresult GetProperties(nsIDOMHTMLPropertiesCollection **aProperties);
+    nsresult GetItemValue(nsIVariant **aItemValue);
+    nsresult SetItemValue(nsIVariant *aItemValue);
+    nsresult GetItemProp(nsIVariant **aItemProp);
+    nsresult SetItemProp(nsIVariant *aItemProp);
+    nsresult GetItemRef(nsIVariant **aItemRef);
+    nsresult SetItemRef(nsIVariant *aItemRef);
     nsresult GetHidden(bool *aHidden);
     nsresult SetHidden(bool aHidden);
     nsresult Click();
@@ -1037,6 +1037,16 @@ interface nsIDOMHTMLElement : nsIDOMElement
 
 [
     object,
+    uuid(8b38545f-7fa5-47d5-a902-c8ea8e78fb0d),
+    local
+]
+interface nsIDOMHTMLHeadElement : nsIDOMHTMLElement
+{
+}
+
+
+[
+    object,
     uuid(b7ccd7b3-86aa-4322-a50c-b972643bb662),
     local
 ]
@@ -1171,7 +1181,7 @@ interface nsIDOMDocument : nsIDOMNode
 
 [
     object,
-    uuid(1b93973f-28cc-4f33-8e7b-b89c63aa9200),
+    uuid(ecae54c6-2ab9-4167-b0ef-61960aadbb68),
     local
 ]
 interface nsIDOMHTMLDocument : nsIDOMDocument
@@ -1192,6 +1202,7 @@ interface nsIDOMHTMLDocument : nsIDOMDocument
     nsresult GetForms(nsIDOMHTMLCollection **aForms);
     nsresult GetScripts(nsIDOMHTMLCollection **aScripts);
     nsresult GetElementsByName(const nsAString *elementName, nsIDOMNodeList **_retval);
+    nsresult GetItems(const nsAString *types, nsIDOMNodeList **_retval);
     nsresult Open(const nsAString *aContentTypeOrUrl, const nsAString *aReplaceOrName, const nsAString *aFeatures,
             JSContext *cx, PRUint8 _argc, nsISupports **_retval);
     nsresult Close();
@@ -1271,7 +1282,7 @@ interface nsIDOMRange : nsISupports
 
 [
     object,
-    uuid(5ac0cd5d-3c08-4c4c-8e70-230c433f5d5c),
+    uuid(12cf5a4d-fffb-4f2f-9cec-c65195661d76),
     local
 ]
 interface nsISelection : nsISupports
@@ -1281,11 +1292,13 @@ interface nsISelection : nsISupports
     nsresult GetFocusNode(nsIDOMNode **aFocusNode);
     nsresult GetFocusOffset(PRInt32 *aFocusOffset);
     nsresult GetIsCollapsed(bool *aIsCollapsed);
+    bool /* don't use */ Collapsed();
     nsresult GetRangeCount(PRInt32 *aRangeCount);
     nsresult GetRangeAt(PRInt32 index, nsIDOMRange **_retval);
     nsresult Collapse(nsIDOMNode *parentNode, PRInt32 offset);
     nsresult CollapseNative(nsINode *parentNode, PRInt32 offset);
     nsresult Extend(nsIDOMNode *parentNode, PRInt32 offset);
+    nsresult ExtendNative(nsINode *parentNode, PRInt32 offset);
     nsresult CollapseToStart();
     nsresult CollapseToEnd();
     nsresult ContainsNode(nsIDOMNode *node, bool entirelyContained, bool *_retval);
@@ -1295,7 +1308,7 @@ interface nsISelection : nsISupports
     nsresult RemoveAllRanges();
     nsresult DeleteFromDocument();
     nsresult SelectionLanguageChange(bool langRTL);
-    nsresult ToString(PRUnichar **_retval);
+    nsresult ToString(nsAString *_retval);
     nsresult Modify(const nsAString *alter, const nsAString *direction, const nsAString *granularity);
 }
 
@@ -1313,7 +1326,7 @@ interface nsIDOMWindowCollection : nsISupports
 
 [
     object,
-    uuid(f6e3b10d-d5f4-4fcd-aa4c-5f98626d428a),
+    uuid(a1af6cd9-c6e7-4037-99f8-dbca1b03e345),
     local
 ]
 interface nsIDOMWindow : nsISupports
@@ -1338,11 +1351,14 @@ interface nsIDOMWindow : nsISupports
     nsresult Focus();
     nsresult Blur();
     nsresult GetLength(PRUint32 *aLength);
-    nsresult GetTop(nsIDOMWindow **aTop);
+    nsresult GetScriptableTop(nsIDOMWindow **aTop);
+    nsresult GetRealTop(nsIDOMWindow **aTop);
+    nsresult GetScriptableParent(nsIDOMWindow **aParent);
+    nsresult GetRealParent(nsIDOMWindow **aParent);
     nsresult GetOpener(nsIDOMWindow **aOpener);
     nsresult SetOpener(nsIDOMWindow *aOpener);
-    nsresult GetParent(nsIDOMWindow **aParent);
-    nsresult GetFrameElement(nsIDOMElement **aFrameElement);
+    nsresult GetScriptableFrameElement(nsIDOMElement **aFrameElement);
+    nsresult GetRealFrameElement(nsIDOMElement **aFrameElement);
     nsresult GetNavigator(nsIDOMNavigator **aNavigator);
     nsresult GetApplicationCache(nsIDOMOfflineResourceList **aApplicationCache);
     nsresult Alert(const nsAString *text);
@@ -1446,6 +1462,12 @@ interface nsIDOMWindow : nsISupports
     nsresult SetOndevicemotion(JSContext *cx, const jsval *aOndevicemotion);
     nsresult GetOndeviceorientation(JSContext *cx, jsval *aOndeviceorientation);
     nsresult SetOndeviceorientation(JSContext *cx, const jsval *aOndeviceorientation);
+    nsresult GetOndeviceproximity(JSContext* cx, jsval *aOndeviceproximity);
+    nsresult SetOndeviceproximity(JSContext* cx, const jsval *aOndeviceproximity);
+    nsresult GetOnuserproximity(JSContext* cx, jsval *aOndeviceproximity);
+    nsresult SetOnuserproximity(JSContext* cx, const jsval *aOndeviceproximity);
+    nsresult GetOndevicelight(JSContext* cx, jsval *aOndevicelight);
+    nsresult SetOndevicelight(JSContext* cx, const jsval *aOndevicelight);
     nsresult GetOnmouseenter(JSContext* cx, jsval *aOnmouseenter);
     nsresult SetOnmouseenter(JSContext* cx, const jsval *aOnmouseenter);
     nsresult GetOnmouseleave(JSContext* cx, jsval *aOnmouseleave) = 0;
@@ -1531,7 +1553,7 @@ interface nsIDOMHTMLFormElement : nsIDOMHTMLElement
 
 [
     object,
-    uuid(05fedf7e-3050-4143-ab97-b994f3cc9329),
+    uuid(c12471c8-155f-4368-9e8b-13a231e85f3b),
     local
 ]
 interface nsIDOMHTMLInputElement : nsIDOMHTMLElement
@@ -1562,11 +1584,17 @@ interface nsIDOMHTMLInputElement : nsIDOMHTMLElement
     nsresult GetFormTarget(nsAString *aFormTarget);
     nsresult SetFormTarget(const nsAString *aFormTarget);
     nsresult GetFiles(nsIDOMFileList **aFiles);
+    nsresult GetHeight(PRUint32 *aHeight);
+    nsresult SetHeight(PRUint32 aHeight);
     nsresult GetIndeterminate(bool *aIndeterminate);
     nsresult SetIndeterminate(bool aIndeterminate);
     nsresult GetList(nsIDOMHTMLElement **aList);
+    nsresult GetMax(nsAString *aMax);
+    nsresult SetMax(const nsAString *aMax);
     nsresult GetMaxLength(PRInt32 *aMaxLength);
     nsresult SetMaxLength(PRInt32 aMaxLength);
+    nsresult GetMin(nsAString *aMin);
+    nsresult SetMin(const nsAString *aMin);
     nsresult GetMultiple(bool *aMultiple);
     nsresult SetMultiple(bool aMultiple);
     nsresult GetName(nsAString *aName);
@@ -1579,10 +1607,14 @@ interface nsIDOMHTMLInputElement : nsIDOMHTMLElement
     nsresult SetReadOnly(bool aReadOnly);
     nsresult GetRequired(bool *aRequired);
     nsresult SetRequired(bool aRequired);
+    nsresult GetStep(nsAString *aStep);
+    nsresult SetStep(const nsAString *aStep);
     nsresult GetAlign(nsAString *aAlign);
     nsresult SetAlign(const nsAString *aAlign);
     nsresult GetSize(PRUint32 *aSize);
     nsresult SetSize(PRUint32 aSize);
+    nsresult GetWidth(PRUint32 *aWidth);
+    nsresult SetWidth(PRUint32 aWidth);
     nsresult GetSrc(nsAString *aSrc);
     nsresult SetSrc(const nsAString *aSrc);
     nsresult GetType(nsAString *aType);
@@ -1591,6 +1623,10 @@ interface nsIDOMHTMLInputElement : nsIDOMHTMLElement
     nsresult SetDefaultValue(const nsAString *aDefaultValue);
     nsresult GetValue(nsAString *aValue);
     nsresult SetValue(const nsAString *aValue);
+    nsresult GetValueAsNumber(double *aValueAsNumber);
+    nsresult SetValueAsNumber(double aValueAsNumber);
+    nsresult StepDown(PRInt32 n, PRUint8 _argc);
+    nsresult StepUp(PRInt32 n, PRUint8 _argc);
     nsresult GetWillValidate(bool *aWillValidate);
     nsresult GetValidity(nsIDOMValidityState **aValidity);
     nsresult GetValidationMessage(nsAString *aValidationMessage);
@@ -1660,7 +1696,7 @@ interface nsIDOMHTMLOptionsCollection : nsISupports
 
 [
     object,
-    uuid(2a50d295-8db8-4223-ae0d-070c6eb6c76e),
+    uuid(e85194cf-56e6-44a6-92d9-0096c9d2536e),
     local
 ]
 interface nsIDOMHTMLSelectElement : nsIDOMHTMLElement
@@ -1674,8 +1710,8 @@ interface nsIDOMHTMLSelectElement : nsIDOMHTMLElement
     nsresult SetMultiple(bool aMultiple);
     nsresult GetName(nsAString *aName);
     nsresult SetName(const nsAString *aName);
-    nsresult GetSize(PRInt32 *aSize);
-    nsresult SetSize(PRInt32 aSize);
+    nsresult GetSize(PRUint32 *aSize);
+    nsresult SetSize(PRUint32 aSize);
     nsresult GetType(nsAString *aType);
     nsresult GetOptions(nsIDOMHTMLOptionsCollection **aOptions);
     nsresult GetLength(PRUint32 *aLength);
@@ -1776,7 +1812,7 @@ interface nsIDOMHTMLScriptElement : nsIDOMHTMLElement
 
 [
     object,
-    uuid(c4ef8a40-dd56-4b95-a007-630a0ac04341),
+    uuid(76cf0381-19fd-442d-bb18-c794fd8b5c25),
     local
 ]
 interface nsIDOMHTMLImageElement : nsIDOMHTMLElement
@@ -2069,6 +2105,7 @@ interface nsIDOMHTMLStyleElement : nsIDOMHTMLElement
     nsresult SetMedia(const nsAString *aMedia);
     nsresult GetType(nsAString *aType);
     nsresult SetType(const nsAString *aType);
+    nsresult GetDOMStyleSheet(nsIDOMStyleSheet **aDOMStyleSheet);
 }
 
 [
@@ -2121,6 +2158,7 @@ interface nsIWebBrowser : nsISupports
 
 cpp_quote("#define SETUP_ALLOW_JAVASCRIPT  2")
 cpp_quote("#define SETUP_IS_CHROME_WRAPPER 7")
+cpp_quote("#define SETUP_DISABLE_NOSCRIPT  16")
 
 [
     object,
@@ -2478,6 +2516,23 @@ interface nsIFile : nsISupports
 
 [
     object,
+    uuid(1d940426-5fe5-42c3-84ae-a300f2d9ebd5),
+    local
+]
+interface nsIComponentManager : nsISupports
+{
+    nsresult GetClassObject(nsCIDRef aClass, nsIIDRef aIID, void **result);
+    nsresult GetClassObjectByContractID(const char *aContractID, nsIIDRef aIID, void **result);
+    nsresult CreateInstance(nsCIDRef aClass, nsISupports *aDelegate, nsIIDRef aIID,
+            void **result);
+    nsresult CreateInstanceByContractID(const char *aContractID, nsISupports *aDelegate,
+            nsIIDRef aIID, void **result);
+    nsresult AddBootstrappedManifestLocation(nsIFile *aLocation);
+    nsresult RemoveBootstrappedManifestLocation(nsIFile *aLocation);
+}
+
+[
+    object,
     uuid(7df46a54-d8b0-448e-903c-4341a1b2499c),
     local
 ]
@@ -2656,7 +2711,7 @@ interface nsIDOMEventTarget : nsISupports
 
 [
     object,
-    uuid(e85cff74-951f-45c1-be0c-89442ea2f500),
+    uuid(a7dc0284-5832-4034-a8a5-d860ce0f21d3),
     local
 ]
 interface nsIDOMEvent : nsISupports
@@ -2673,11 +2728,18 @@ interface nsIDOMEvent : nsISupports
     nsresult InitEvent(const nsAString *eventTypeArg, bool canBubbleArg, bool cancelableArg);
     nsresult GetDefaultPrevented(bool *aDefaultPrevented);
     nsresult StopImmediatePropagation();
+    nsresult DuplicatePrivateData();
+    nsresult SetTarget(nsIDOMEventTarget *aTarget);
+    bool IsDispatchStopped();
+    /*nsEvent*/ void *GetInternalNSEvent();
+    nsresult SetTrusted(bool aTrusted);
+    void Serialize(/*IPC::Message*/ void *aMsg, bool aSerializeInterfaceType);
+    bool Deserialize(const /*IPC::Message*/ void *aMsg, void **aIter);
 }
 
 [
     object,
-    uuid(2b3ac53c-2a88-421f-af09-f10665c88acf),
+    uuid(858578f1-9653-4d5c-821a-07479bf2d9b2),
     local
 ]
 interface nsIDOMWindowUtils : nsISupports
@@ -2703,7 +2765,7 @@ interface nsIDOMWindowUtils : nsISupports
     nsresult SendMouseScrollEvent(const nsAString *aType, float aX, float aY, PRInt32 aButton, PRInt32 aScrollFlags,
            PRInt32 aDelta, PRInt32 aModifiers);
     nsresult SendKeyEvent(const nsAString *aType, PRInt32 aKeyCode, PRInt32 aCharCode, PRInt32 aModifiers,
-           bool aPreventDefault, bool *_retval);
+           PRUint32 aAdditionalFlags, bool *_retval);
     nsresult SendNativeKeyEvent(PRInt32 aNativeKeyboardLayout, PRInt32 aNativeKeyCode, PRInt32 aModifierFlags,
            const nsAString *aCharacters, const nsAString *aUnmodifiedCharacters);
     nsresult SendNativeMouseEvent(PRInt32 aScreenX, PRInt32 aScreenY, PRInt32 aNativeMessage, PRInt32 aModifierFlags,
@@ -2716,7 +2778,7 @@ interface nsIDOMWindowUtils : nsISupports
     nsresult GarbageCollect(nsICycleCollectorListener *aListener, PRInt32 aExtraForgetSkippableCalls);
     nsresult CycleCollect(nsICycleCollectorListener *aListener, PRInt32 aExtraForgetSkippableCalls);
     nsresult SendSimpleGestureEvent(const nsAString *aType, float aX, float aY, PRUint32 aDirection, double aDelta,
-           PRInt32 aModifiers);
+           PRInt32 aModifiers, PRUint32 aClickCount);
     nsresult ElementFromPoint(float aX, float aY, bool aIgnoreRootScrollFrame, bool aFlushLayout, nsIDOMElement **_retval);
     nsresult NodesFromRect(float aX, float aY, float aTopSize, float aRightSize, float aBottomSize, float aLeftSize,
            bool aIgnoreRootScrollFrame, bool aFlushLayout, nsIDOMNodeList **_retval);
@@ -2771,7 +2833,11 @@ interface nsIDOMWindowUtils : nsISupports
     nsresult LeafLayersPartitionWindow(bool *_retval);
     nsresult GetMayHaveTouchEventListeners(bool *aMayHaveTouchEventListeners);
     nsresult CheckAndClearPaintedState(nsIDOMElement *aElement, bool *_retval);
-    nsresult GetFileId(nsIDOMBlob *aBlob, PRInt64 *_retval);
+    nsresult GetFile(const nsAString *aName, const /*JS::Value*/ void *aBlobParts, const /*JS::Value*/ void *aParameters,
+           JSContext* cx, PRUint8 _argc, nsIDOMFile **_retval);
+    nsresult GetBlob(const /*JS::Value*/ void *aBlobParts, const /*JS::Value*/ void *aParameters, JSContext *cx,
+           PRUint8 _argc, nsIDOMBlob * _retval);
+    nsresult GetFileId(const /*JS::Value*/ void *aFile, JSContext *cx, PRInt64 *_retval);
     nsresult GetFileReferences(const nsAString *aDatabaseName, PRInt64 aId, PRInt32 *aRefCnt, PRInt32 *aDBRefCnt,
            PRInt32 *aSliceRefCnt, bool *_retval);
     nsresult IsIncrementalGCEnabled(JSContext *cx, bool *_retval);
@@ -2784,6 +2850,9 @@ interface nsIDOMWindowUtils : nsISupports
     nsresult GetPaintingSuppressed(bool *aPaintingSuppressed);
     nsresult GetPlugins(JSContext *cx, /*JS::Value*/ void *aPlugins);
     nsresult SetScrollPositionClampingScrollPortSize(float aWidth, float aHeight);
+    nsresult SetIsApp(bool value);
+    nsresult SetApp(const nsAString *manifestURL);
+    nsresult GetApp(mozIDOMApplication **_retval);
 }
 
 cpp_quote("#define CONTEXT_NONE              0x00")
@@ -2806,7 +2875,7 @@ interface nsIContextMenuListener : nsISupports
 
 [
     object,
-    uuid(af3f130e-0c22-4613-a150-780a46c22e3a),
+    uuid(6e6f00c2-29d9-452c-b804-5abb2dc429f3),
     local
 ]
 interface nsIDOMUIEvent : nsIDOMEvent
@@ -2829,7 +2898,7 @@ interface nsIDOMUIEvent : nsIDOMEvent
 
 [
     object,
-    uuid(53e29996-f851-4032-b896-8aafbd0Bdf25),
+    uuid(6f4bc64b-1aac-4251-82d3-fd2dc76654a0),
     local
 ]
 interface nsIDOMMouseEvent : nsIDOMUIEvent
@@ -2845,6 +2914,7 @@ interface nsIDOMMouseEvent : nsIDOMUIEvent
     nsresult GetAltKey(bool *aAltKey);
     nsresult GetMetaKey(bool *aMetaKey);
     nsresult GetButton(PRUint16 *aButton);
+    nsresult GetButtons(PRUint16 *aButtons);
     nsresult GetRelatedTarget(nsIDOMEventTarget **aRelatedTarget);
     nsresult InitMouseEvent(const nsAString *typeArg, bool canBubbleArg, bool cancelableArg,
             nsIDOMWindow *viewArg, PRInt32 detailArg, PRInt32 screenXArg, PRInt32 screenYArg,
@@ -2858,11 +2928,12 @@ interface nsIDOMMouseEvent : nsIDOMUIEvent
             PRInt32 clientXArg, PRInt32 clientYArg, bool ctrlKeyArg, bool altKeyArg, bool shiftKeyArg,
             bool metaKeyArg, PRUint16 buttonArg, nsIDOMEventTarget *relatedTargetArg, float pressure,
             PRUint16 inputSourceArg);
+    nsresult GetModifierState(const nsAString *keyArg, bool *_retval);
 }
 
 [
     object,
-    uuid(def974c3-b491-481b-bc67-29174af4b26a),
+    uuid(c43c4852-5bb6-409f-82cd-4f5e842b7208),
     local
 ]
 interface nsIDOMKeyEvent : nsIDOMUIEvent
@@ -2877,11 +2948,13 @@ interface nsIDOMKeyEvent : nsIDOMUIEvent
             bool cancelableArg, nsIDOMWindow *viewArg, bool ctrlKeyArg,
             bool altKeyArg, bool shiftKeyArg, bool metaKeyArg, PRUint32 keyCodeArg,
             PRUint32 charCodeArg);
+    nsresult GetModifierState(const nsAString *keyArg, bool *_retval);
+    nsresult GetLocation(PRUint32 *aLocation);
 }
 
 [
     object,
-    uuid(3e5432cd-9568-4bd1-8cbe-d50aba110743),
+    uuid(0b976267-4aaa-4f36-a2d4-27b5ca8d73bb),
     local
 ]
 interface nsIEmbeddingSiteWindow : nsISupports
@@ -2894,6 +2967,7 @@ interface nsIEmbeddingSiteWindow : nsISupports
     nsresult GetTitle(PRUnichar **aTitle);
     nsresult SetTitle(const PRUnichar *aTitle);
     nsresult GetSiteWindow(void **aSiteWindow);
+    nsresult Blur();
 }
 
 [
@@ -3076,7 +3150,7 @@ interface nsIController : nsISupports
 
 [
     object,
-    uuid(a887c108-c25e-42ab-87ef-ad4bee502828),
+    uuid(98fb308d-c6dd-4c6d-b77c-91180cf06f23),
     local
 ]
 interface nsIContent : nsISupports
@@ -3086,7 +3160,7 @@ interface nsIContent : nsISupports
 
 [
     object,
-    uuid(8e51e6d9-914d-46ba-b311-2f273de60d19),
+    uuid(8c6a1e62-d5ad-4297-b941-6449222ec4f0),
     local
 ]
 interface nsIDocument : nsISupports
@@ -3120,7 +3194,7 @@ interface nsIContentSerializer : nsISupports
 
 [
     object,
-    uuid(2e14b183-29d4-4282-9475-589277a70654),
+    uuid(7ad59e28-f3d5-4e14-8ea3-794ad4a86de3),
     local
 ]
 interface nsIEditor  : nsISupports
@@ -3142,7 +3216,7 @@ interface nsIEditor  : nsISupports
     nsresult GetDocument([out] nsIDOMDocument **_retval);
     nsresult GetRootElement([out] nsIDOMElement **_retval);
     nsresult GetSelectionController([out] nsISelectionController **_retval);
-    nsresult DeleteSelection([in] PRInt16 action);
+    nsresult DeleteSelection(PRInt16 action, PRInt16 aStripWrappers);
     nsresult GetDocumentIsEmpty([out] bool *_retval);
     nsresult GetDocumentModified([out] bool *_retval);
     nsresult GetDocumentCharacterSet([out] nsACString *_retval);
@@ -3190,6 +3264,7 @@ interface nsIEditor  : nsISupports
     nsresult SplitNode([in] nsIDOMNode *existingRightNode, [in] PRInt32 offset, [out] nsIDOMNode **newLeftNode);
     nsresult JoinNodes([in] nsIDOMNode *leftNode, [in] nsIDOMNode *rightNode, [in] nsIDOMNode *parent);
     nsresult DeleteNode([in] nsIDOMNode *child);
+    bool OutputsMozDirty();
     nsresult MarkNodeDirty([in] nsIDOMNode *node);
     nsresult SwitchTextDirection();
     nsresult OutputToString([in] nsAString formatType, [in] PRUint32 flags, [out] nsAString *_retval);
@@ -3269,12 +3344,12 @@ interface nsIHTMLEditor : nsISupports
     nsresult GetReturnInParagraphCreatesNewParagraph([out] bool *_retval);
     nsresult SetReturnInParagraphCreatesNewParagraph([in] bool prb);
     nsresult BreakIsVisible(nsIDOMNode *aNode, bool *_retval);
-    nsIContent *GetActiveEditingHost();
+    void /*Element*/ *GetActiveEditingHost();
 }
 
 [
     object,
-    uuid(c7325422-817e-4321-957a-c0bdd764941d),
+    uuid(89ea9f32-18ec-413b-9e2c-ce9a4c851b1c),
     local
 ]
 interface nsIDocShell : nsISupports
@@ -3300,6 +3375,8 @@ interface nsIDocShell : nsISupports
     nsresult SetAllowPlugins(bool aAllowPlugins);
     nsresult GetAllowJavascript(bool *aAllowJavascript);
     nsresult SetAllowJavascript(bool aAllowJavascript);
+    nsresult GetDisableNoScript(bool *aDisableNoScript);
+    nsresult SetDisableNoScript(bool aDisableNoScript);
     nsresult GetAllowMetaRedirects(bool *aAllowMetaRedirects);
     nsresult SetAllowMetaRedirects(bool aAllowMetaRedirects);
     nsresult GetAllowSubframes(bool *aAllowSubframes);
@@ -3346,6 +3423,8 @@ interface nsIDocShell : nsISupports
     nsresult GetSessionStorageForPrincipal(nsIPrincipal *principal, const nsAString *documentURI,
             bool create, nsIDOMStorage **_retval);
     nsresult AddSessionStorage(nsIPrincipal *principal, nsIDOMStorage *storage);
+    nsresult CloneSessionStoragesTo(nsIDocShell *docShell);
+    nsresult ClearSessionStorages();
     nsresult GetCurrentDocumentChannel(nsIChannel **aCurrentDocumentChannel);
     nsresult SetChildOffset(PRUint32 offset);
     nsresult GetIsInUnload(bool *aIsInUnload);
@@ -3369,6 +3448,7 @@ interface nsIDocShell : nsISupports
     nsresult SetParentCharset(nsIAtom *aParentCharset);
     nsresult GetParentCharsetSource(PRInt32 *aParentCharsetSource);
     nsresult SetParentCharsetSource(PRInt32 aParentCharsetSource);
+    nsresult AddWeakPrivacyTransitionObserver(nsIPrivacyTransitionObserver *obs);
     nsresult GetIsBrowserFrame(bool *aIsBrowserFrame);
     nsresult SetIsBrowserFrame(bool aIsBrowserFrame);
 }
@@ -3490,6 +3570,7 @@ interface nsIContentUtils : nsISupports
     nsresult AddMutationObserver(nsINode *aNode, nsIMutationObserver *aObserver);
     nsresult RemoveMutationObserver(nsINode *aNode, nsIMutationObserver *aObserver);
     nsresult AddScriptRunner(nsIRunnable *aRunnable);
+    JSContext *GetContextFromDocument(nsIDocument *aDocument);
 }
 
 [
diff --git a/dlls/mshtml/script.c b/dlls/mshtml/script.c
index 0fe4f5a..52467b4 100644
--- a/dlls/mshtml/script.c
+++ b/dlls/mshtml/script.c
@@ -1023,6 +1023,10 @@ void set_script_mode(HTMLOuterWindow *window, SCRIPTMODE mode)
     if(NS_SUCCEEDED(nsres)) {
         nsres = nsIWebBrowserSetup_SetProperty(setup, SETUP_ALLOW_JAVASCRIPT,
                 window->scriptmode == SCRIPTMODE_GECKO);
+
+        if(NS_SUCCEEDED(nsres))
+            nsres = nsIWebBrowserSetup_SetProperty(setup, SETUP_DISABLE_NOSCRIPT, TRUE);
+
         nsIWebBrowserSetup_Release(setup);
     }
 
diff --git a/dlls/mshtml/tests/activex.c b/dlls/mshtml/tests/activex.c
index ebd2057..e729e36 100644
--- a/dlls/mshtml/tests/activex.c
+++ b/dlls/mshtml/tests/activex.c
@@ -71,6 +71,7 @@ DEFINE_EXPECT(Invoke_ENABLED);
 DEFINE_EXPECT(Invoke_VALID);
 DEFINE_EXPECT(Invoke_SECURITYCTX);
 DEFINE_EXPECT(Invoke_SCRIPTPROP);
+DEFINE_EXPECT(Invoke_SCRIPTCALL);
 DEFINE_EXPECT(GetIDsOfNames_scriptprop);
 DEFINE_EXPECT(DoVerb);
 DEFINE_EXPECT(SetExtent);
@@ -93,6 +94,7 @@ DEFINE_EXPECT(wrapped_func);
 DEFINE_EXPECT(OnAmbientPropertyChange_UNKNOWN);
 
 #define DISPID_SCRIPTPROP 1000
+#define DISPID_SCRIPTCALL 1001
 
 enum {
     TEST_FLASH,
@@ -118,6 +120,9 @@ static const char object_ax_str[] =
     "<param name=\"param_name\" value=\"param_value\">"
     "<param name=\"num_param\" value=\"3\">"
     "</object>"
+    "<script>"
+    "objid.scriptCall();"
+    "</script>"
     "</body></html>";
 
 static REFIID pluginhost_iids[] = {
@@ -599,14 +604,20 @@ static HRESULT WINAPI Dispatch_GetTypeInfo(IDispatch *iface, UINT iTInfo, LCID l
 static HRESULT WINAPI Dispatch_GetIDsOfNames(IDispatch *iface, REFIID riid, LPOLESTR *rgszNames,
         UINT cNames, LCID lcid, DISPID *rgDispId)
 {
-    CHECK_EXPECT(GetIDsOfNames_scriptprop);
     ok(IsEqualGUID(riid, &IID_NULL), "riid = %s\n", debugstr_guid(riid));
     ok(cNames == 1, "cNames = %d\n", cNames);
     ok(rgszNames != NULL, "rgszNames == NULL\n");
-    ok(!strcmp_wa(rgszNames[0], "scriptprop"), "rgszNames[0] = %s\n", wine_dbgstr_w(rgszNames[0]));
     ok(rgDispId != NULL, "rgDispId == NULL\n");
 
-    *rgDispId = DISPID_SCRIPTPROP;
+    if(!strcmp_wa(rgszNames[0], "scriptprop")) {
+        CHECK_EXPECT(GetIDsOfNames_scriptprop);
+        *rgDispId = DISPID_SCRIPTPROP;
+    }else if(!strcmp_wa(rgszNames[0], "scriptCall")) {
+        *rgDispId = DISPID_SCRIPTCALL;
+    }else {
+        ok(0, "rgszNames[0] = %s\n", wine_dbgstr_w(rgszNames[0]));
+    }
+
     return S_OK;
 }
 
@@ -618,7 +629,6 @@ static HRESULT WINAPI Dispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REF
     ok(pDispParams != NULL, "pDispParams == NULL\n");
     ok(!pDispParams->cNamedArgs, "pDispParams->cNamedArgs = %d\n", pDispParams->cNamedArgs);
     ok(!pDispParams->rgdispidNamedArgs, "pDispParams->rgdispidNamedArgs != NULL\n");
-    ok(pVarResult != NULL, "pVarResult == NULL\n");
 
     switch(dispIdMember) {
     case DISPID_READYSTATE:
@@ -628,6 +638,7 @@ static HRESULT WINAPI Dispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REF
         ok(!pDispParams->rgvarg, "pDispParams->rgvarg != NULL\n");
         ok(!pExcepInfo, "pExcepInfo != NULL\n");
         ok(puArgErr != NULL, "puArgErr == NULL\n");
+        ok(pVarResult != NULL, "pVarResult == NULL\n");
 
         V_VT(pVarResult) = VT_I4;
         V_I4(pVarResult) = plugin_readystate;
@@ -639,6 +650,7 @@ static HRESULT WINAPI Dispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REF
         ok(!pDispParams->rgvarg, "pDispParams->rgvarg != NULL\n");
         ok(!pExcepInfo, "pExcepInfo != NULL\n");
         ok(puArgErr != NULL, "puArgErr == NULL\n");
+        ok(pVarResult != NULL, "pVarResult == NULL\n");
         return DISP_E_MEMBERNOTFOUND;
     case DISPID_VALID:
         CHECK_EXPECT(Invoke_VALID);
@@ -647,6 +659,7 @@ static HRESULT WINAPI Dispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REF
         ok(!pDispParams->rgvarg, "pDispParams->rgvarg != NULL\n");
         ok(!pExcepInfo, "pExcepInfo != NULL\n");
         ok(puArgErr != NULL, "puArgErr == NULL\n");
+        ok(pVarResult != NULL, "pVarResult == NULL\n");
         return DISP_E_MEMBERNOTFOUND;
     case DISPID_SECURITYCTX:
         CHECK_EXPECT(Invoke_SECURITYCTX);
@@ -655,6 +668,7 @@ static HRESULT WINAPI Dispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REF
         ok(!pDispParams->rgvarg, "pDispParams->rgvarg != NULL\n");
         ok(!pExcepInfo, "pExcepInfo != NULL\n");
         ok(puArgErr != NULL, "puArgErr == NULL\n");
+        ok(pVarResult != NULL, "pVarResult == NULL\n");
         return DISP_E_MEMBERNOTFOUND;
     case DISPID_SCRIPTPROP:
         CHECK_EXPECT(Invoke_SCRIPTPROP);
@@ -663,10 +677,23 @@ static HRESULT WINAPI Dispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REF
         ok(!pDispParams->rgvarg, "pDispParams->rgvarg != NULL\n");
         ok(pExcepInfo != NULL, "pExcepInfo == NULL\n");
         ok(!puArgErr, "puArgErr != NULL\n");
+        ok(pVarResult != NULL, "pVarResult == NULL\n");
 
         V_VT(pVarResult) = VT_I4;
         V_I4(pVarResult) = 4;
         return S_OK;
+    case DISPID_SCRIPTCALL:
+        CHECK_EXPECT(Invoke_SCRIPTCALL);
+        ok(wFlags == DISPATCH_METHOD, "wFlags = %x\n", wFlags);
+        ok(!pDispParams->cArgs, "pDispParams->cArgs = %d\n", pDispParams->cArgs);
+        ok(pExcepInfo != NULL, "pExcepInfo == NULL\n");
+        ok(!puArgErr, "puArgErr != NULL\n");
+        ok(!pVarResult, "pVarResult != NULL\n");
+        /*
+        V_VT(pVarResult) = VT_I4;
+        V_I4(pVarResult) = 4;
+        */
+        return S_OK;
     default:
         ok(0, "unexpected call %d\n", dispIdMember);
     }
@@ -2158,11 +2185,13 @@ static void test_flash_ax(void)
     SET_EXPECT(FreezeEvents_FALSE);
     SET_EXPECT(IPersistPropertyBag_Load);
     SET_EXPECT(Invoke_READYSTATE);
+    SET_EXPECT(Invoke_SECURITYCTX);
+    SET_EXPECT(Invoke_SCRIPTCALL);
     SET_EXPECT(SetExtent);
     SET_EXPECT(GetExtent);
     SET_EXPECT(DoVerb);
 
-    doc = create_doc(object_ax_str, &called_CreateInstance);
+    doc = create_doc(object_ax_str, /*&called_CreateInstance*/ NULL);
 
     CHECK_CALLED(CreateInstance);
     todo_wine
@@ -2172,6 +2201,8 @@ static void test_flash_ax(void)
     CHECK_CALLED(FreezeEvents_FALSE);
     CHECK_CALLED(IPersistPropertyBag_Load);
     CHECK_CALLED(Invoke_READYSTATE);
+    CHECK_CALLED(Invoke_SECURITYCTX);
+    CHECK_CALLED(Invoke_SCRIPTCALL);
     todo_wine
     CHECK_CALLED(SetExtent);
     todo_wine
@@ -2217,11 +2248,13 @@ static void test_noquickact_ax(void)
     SET_EXPECT(GetViewStatus);
     SET_EXPECT(FreezeEvents_FALSE);
     SET_EXPECT(Invoke_READYSTATE);
+    SET_EXPECT(Invoke_SECURITYCTX);
+    SET_EXPECT(Invoke_SCRIPTCALL);
     SET_EXPECT(SetExtent);
     SET_EXPECT(GetExtent);
     SET_EXPECT(DoVerb);
 
-    doc = create_doc(object_ax_str, &called_CreateInstance);
+    doc = create_doc(object_ax_str, /*&called_CreateInstance*/ NULL);
 
     CHECK_CALLED(CreateInstance);
     todo_wine CHECK_CALLED(FreezeEvents_TRUE);
@@ -2231,6 +2264,8 @@ static void test_noquickact_ax(void)
     CHECK_CALLED(GetViewStatus);
     todo_wine CHECK_CALLED(FreezeEvents_FALSE);
     CHECK_CALLED(Invoke_READYSTATE);
+    CHECK_CALLED(Invoke_SECURITYCTX);
+    CHECK_CALLED(Invoke_SCRIPTCALL);
     todo_wine CHECK_CALLED(SetExtent);
     todo_wine CHECK_CALLED(GetExtent);
     CHECK_CALLED(DoVerb);
@@ -2256,11 +2291,15 @@ static void test_nooleobj_ax(void)
 
     SET_EXPECT(CreateInstance);
     SET_EXPECT(Invoke_READYSTATE);
+    SET_EXPECT(Invoke_SECURITYCTX);
+    SET_EXPECT(Invoke_SCRIPTCALL);
 
-    doc = create_doc(object_ax_str, &called_CreateInstance);
+    doc = create_doc(object_ax_str, /* &called_CreateInstance */ NULL);
 
     CHECK_CALLED(CreateInstance);
     CHECK_CALLED(Invoke_READYSTATE);
+    CHECK_CALLED(Invoke_SECURITYCTX);
+    CHECK_CALLED(Invoke_SCRIPTCALL);
 
     release_doc(doc);
 }
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 760580e..6267ec1 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -80,6 +80,9 @@ static const char frameset_str[] =
 static const char emptydiv_str[] =
     "<html><head><title>emptydiv test</title></head>"
     "<body><div id=\"divid\"></div></body></html>";
+static const char noscript_str[] =
+    "<html><head><title>noscript test</title><noscript><style>.body { margin-right: 0px; }</style></noscript></head>"
+    "<body><noscript><div>test</div></noscript></body></html>";
 
 static WCHAR characterW[] = {'c','h','a','r','a','c','t','e','r',0};
 static WCHAR texteditW[] = {'t','e','x','t','e','d','i','t',0};
@@ -115,7 +118,8 @@ typedef enum {
     ET_OBJECT,
     ET_EMBED,
     ET_DIV,
-    ET_META
+    ET_META,
+    ET_NOSCRIPT
 } elem_type_t;
 
 static const IID * const none_iids[] = {
@@ -426,7 +430,8 @@ static const elem_type_info_t elem_type_infos[] = {
     {"OBJECT",    object_iids,      &DIID_DispHTMLObjectElement},
     {"EMBED",     embed_iids,       &DIID_DispHTMLEmbed},
     {"DIV",       elem_iids,        NULL},
-    {"META",      meta_iids,        &DIID_DispHTMLMetaElement}
+    {"META",      meta_iids,        &DIID_DispHTMLMetaElement},
+    {"NOSCRIPT",  elem_iids,        NULL /*&DIID_DispHTMLNoShowElement*/}
 };
 
 static const char *dbgstr_guid(REFIID riid)
@@ -1974,6 +1979,19 @@ static void _test_elem_all(unsigned line, IUnknown *unk, const elem_type_t *elem
     IDispatch_Release(disp);
 }
 
+#define test_doc_all(a,b,c) _test_doc_all(__LINE__,a,b,c)
+static void _test_doc_all(unsigned line, IHTMLDocument2 *doc, const elem_type_t *elem_types, LONG exlen)
+{
+    IHTMLElementCollection *col;
+    HRESULT hres;
+
+    hres = IHTMLDocument2_get_all(doc, &col);
+    ok_(__FILE__,line)(hres == S_OK, "get_all failed: %08x\n", hres);
+
+    _test_elem_collection(line, (IUnknown*)col, elem_types, exlen);
+    IHTMLElementCollection_Release(col);
+}
+
 #define test_elem_getelembytag(u,t,l) _test_elem_getelembytag(__LINE__,u,t,l)
 static void _test_elem_getelembytag(unsigned line, IUnknown *unk, elem_type_t type, LONG exlen)
 {
@@ -2010,8 +2028,11 @@ static void _test_elem_innertext(unsigned line, IHTMLElement *elem, const char *
 
     hres = IHTMLElement_get_innerText(elem, &text);
     ok_(__FILE__,line) (hres == S_OK, "get_innerText failed: %08x\n", hres);
-    ok_(__FILE__,line) (!strcmp_wa(text, extext), "get_innerText returned %s expected %s\n",
-                        wine_dbgstr_w(text), extext);
+    if(extext)
+        ok_(__FILE__,line) (!strcmp_wa(text, extext), "get_innerText returned %s expected %s\n",
+                            wine_dbgstr_w(text), extext);
+    else
+        ok_(__FILE__,line) (!text, "get_innerText returned %s expected NULL\n", wine_dbgstr_w(text));
     SysFreeString(text);
 }
 
@@ -5993,6 +6014,37 @@ static void test_replacechild_elems(IHTMLDocument2 *doc)
     IHTMLElement_Release(body);
 }
 
+static void test_noscript(IHTMLDocument2 *doc)
+{
+    IHTMLElementCollection *col;
+    IHTMLElement *body;
+    HRESULT hres;
+
+    static const elem_type_t all_types[] = {
+        ET_HTML,
+        ET_HEAD,
+        ET_TITLE,
+        ET_NOSCRIPT,
+        ET_BODY,
+        ET_NOSCRIPT
+    };
+
+    static const elem_type_t body_all_types[] = {
+        ET_DIV,
+        ET_NOSCRIPT
+    };
+
+    hres = IHTMLDocument2_get_all(doc, &col);
+    ok(hres == S_OK, "get_all failed: %08x\n", hres);
+    test_elem_collection((IUnknown*)col, all_types, sizeof(all_types)/sizeof(all_types[0]));
+    IHTMLElementCollection_Release(col);
+
+    body = doc_get_body(doc);
+    test_elem_set_innerhtml((IUnknown*)body, "<div>test</div><noscript><a href=\"about:blank\">A</a></noscript>");
+    test_elem_all((IUnknown*)body, body_all_types, sizeof(body_all_types)/sizeof(*body_all_types));
+    IHTMLElement_Release(body);
+}
+
 static void test_null_write(IHTMLDocument2 *doc)
 {
     HRESULT hres;
@@ -6009,6 +6061,38 @@ static void test_null_write(IHTMLDocument2 *doc)
        "Expected IHTMLDocument2::writeln to return S_OK, got 0x%08x\n", hres);
 }
 
+static void test_create_stylesheet(IHTMLDocument2 *doc)
+{
+    IHTMLStyleSheet *stylesheet;
+    HRESULT hres;
+
+    static const elem_type_t all_types[] = {
+        ET_HTML,
+        ET_HEAD,
+        ET_TITLE,
+        ET_BODY,
+        ET_DIV
+    };
+
+    static const elem_type_t all_types2[] = {
+        ET_HTML,
+        ET_HEAD,
+        ET_TITLE,
+        ET_STYLE,
+        ET_BODY,
+        ET_DIV
+    };
+
+    test_doc_all(doc, all_types, sizeof(all_types)/sizeof(*all_types));
+
+    hres = IHTMLDocument2_createStyleSheet(doc, NULL, -1, &stylesheet);
+    ok(hres == S_OK, "createStyleSheet failed: %08x\n", hres);
+
+    IHTMLStyleSheet_Release(stylesheet);
+
+    test_doc_all(doc, all_types2, sizeof(all_types2)/sizeof(*all_types2));
+}
+
 static void test_exec(IUnknown *unk, const GUID *grpid, DWORD cmdid, VARIANT *in, VARIANT *out)
 {
     IOleCommandTarget *cmdtrg;
@@ -6478,11 +6562,13 @@ START_TEST(dom)
     run_domtest(doc_blank, test_create_elems);
     run_domtest(doc_blank, test_defaults);
     run_domtest(doc_blank, test_null_write);
+    run_domtest(emptydiv_str, test_create_stylesheet);
     run_domtest(indent_test_str, test_indent);
     run_domtest(cond_comment_str, test_cond_comment);
     run_domtest(frameset_str, test_frameset);
     run_domtest(emptydiv_str, test_docfrag);
     run_domtest(doc_blank, test_replacechild_elems);
+    run_domtest(noscript_str, test_noscript);
 
     CoUninitialize();
 }
diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index 4de1998..7f846fa 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -6879,7 +6879,7 @@ static void test_HTMLDocument_http(BOOL with_wbapp)
     test_put_href(doc, TRUE, NULL, "about:replace", FALSE, FALSE, 0);
 
     test_open_window(doc, TRUE);
-    if(!support_wbapp) /* FIXME */
+    if(!support_wbapp && sizeof(void*) != 8) /* FIXME */
         test_open_window(doc, FALSE);
 
     test_InPlaceDeactivate(doc, TRUE);


