[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-devel
Subject:    Wine Gecko 1.8-beta1
From:       Jacek Caban <jacek () codeweavers ! com>
Date:       2012-08-31 15:19:53
Message-ID: 5040D619.90100 () codeweavers ! com
[Download RAW message or body]

Hi all,

It's time for another Gecko update. I've uploaded to SourceForge [1] new
Gecko builds. These are based on Firefox 16 beta. Other than tons of
changes inherited from Firefox and usual fixes to keep it working well
for us, it brings a few visible fixes:

- Proper <noscript> tag handling
- Synchronous ActiveX loading
- Possibility to properly call APIs requiring JSContext
- Possibility to implement HTMLStyleElement::styleSheet property

As usually, to test it you need the attached patch and Gecko build
placed in the right place [2]. Any help with testing is appreciated!


On related note, I seriously consider dropping debug builds and replace
them by unstripped release build or even just a separated package
containing only debug symbols for the release build. Here are my
thoughts about reasoning (in random order):

- People use debug build mostly to retrieve better backtraces.
Unstripped builds also give that ability.
- If someone really needs debug build, it's easy enough to build it
himself (and that's usually a good idea anyway)
- Debug builds are seriously different than release build, so it
occasionally exposes different set of problems, leading to invalid
assumptions. This is really something for developers rather than users.
- It costs my time spent builds and tests. And I consider it a serious
matter. Amount of work needed to keep Gecko relevant is constantly
growing. I try to mitigate it by doing long-term improvements upstream,
automating the process and improving my hardware, but that has its
limits. And the time spent on Gecko maintenance (as in pure maintenance,
not real improvements) costs Wine in terms of improvements I could make
in this time.

If someone has a reason to keep debug builds, let me know. Any comments
are welcomed.

Thanks,
Jacek

[1] http://sourceforge.net/projects/wine/files/Wine%20Gecko/1.8-beta1/
[2] http://wiki.winehq.org/Gecko


["wine-gecko-1.8-beta1.diff" (text/plain)]

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);





[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic