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[] = "" "" "" + "" ""; 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[] = "emptydiv test" "
"; +static const char noscript_str[] = + "noscript test" + ""; 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, "
test
"); + 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);