diff --git a/dlls/appwiz.cpl/addons.c b/dlls/appwiz.cpl/addons.c index c55806f..323d612 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.1.0" +#define GECKO_VERSION "1.2.0-rc1" #ifdef __i386__ #define ARCH_STRING "x86" @@ -64,7 +64,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(appwizcpl); #define GECKO_SHA "???" #endif -#define GECKO_FILE_NAME "wine_gecko-" GECKO_VERSION "-" ARCH_STRING ".cab" +#define GECKO_FILE_NAME "wine_gecko-" GECKO_VERSION "-" ARCH_STRING ".msi" static const WCHAR mshtml_keyW[] = {'S','o','f','t','w','a','r','e', diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index 6842b23..f9bc469 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -1923,7 +1923,7 @@ static void HTMLDocumentNode_destructor(HTMLDOMNode *iface) detach_plugin_host(LIST_ENTRY(list_head(&This->plugin_hosts), PluginHost, entry)); if(This->nsdoc) { - release_mutation(This); + release_document_mutation(This); nsIDOMHTMLDocument_Release(This->nsdoc); } @@ -2024,7 +2024,7 @@ HRESULT create_doc_from_nsdoc(nsIDOMHTMLDocument *nsdoc, HTMLDocumentObj *doc_ob nsIDOMHTMLDocument_AddRef(nsdoc); doc->nsdoc = nsdoc; - init_mutation(doc); + init_document_mutation(doc); HTMLDOMNode_Init(doc, &doc->node, (nsIDOMNode*)nsdoc); doc->node.vtbl = &HTMLDocumentNodeImplVtbl; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 11ab878..771c38e 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -659,8 +659,9 @@ NSContainer *NSContainer_Create(HTMLDocumentObj*,NSContainer*); void NSContainer_Release(NSContainer*); nsresult create_chrome_window(nsIWebBrowserChrome*,nsIWebBrowserChrome**); -void init_mutation(HTMLDocumentNode*); -void release_mutation(HTMLDocumentNode*); +void init_mutation(nsIComponentManager*); +void init_document_mutation(HTMLDocumentNode*); +void release_document_mutation(HTMLDocumentNode*); void HTMLDocument_LockContainer(HTMLDocumentObj*,BOOL); void show_context_menu(HTMLDocumentObj*,DWORD,POINT*,IDispatch*); diff --git a/dlls/mshtml/mutation.c b/dlls/mshtml/mutation.c index 3e528bf..2117e49 100644 --- a/dlls/mshtml/mutation.c +++ b/dlls/mshtml/mutation.c @@ -39,6 +39,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml); #define IE_MAJOR_VERSION 7 #define IE_MINOR_VERSION 0 +static const IID NS_ICONTENTUTILS_CID = + {0x762C4AE7,0xB923,0x422F,{0xB9,0x7E,0xB9,0xBF,0xC1,0xEF,0x7B,0xF0}}; + +static nsIContentUtils *content_utils; + static BOOL handle_insert_comment(HTMLDocumentNode *doc, const PRUnichar *comment) { DWORD len; @@ -305,9 +310,10 @@ static nsresult run_end_load(HTMLDocumentNode *This, nsISupports *arg1, nsISuppo return NS_OK; } -static nsresult run_insert_script(HTMLDocumentNode *doc, nsISupports *script_iface, nsISupports *arg) +static nsresult run_insert_script(HTMLDocumentNode *doc, nsISupports *script_iface, nsISupports *parser_iface) { nsIDOMHTMLScriptElement *nsscript; + nsIParser *nsparser = NULL; nsresult nsres; TRACE("(%p)->(%p)\n", doc, script_iface); @@ -318,7 +324,24 @@ static nsresult run_insert_script(HTMLDocumentNode *doc, nsISupports *script_ifa return nsres; } + if(parser_iface) { + nsres = nsISupports_QueryInterface(parser_iface, &IID_nsIParser, (void**)&nsparser); + if(NS_FAILED(nsres)) { + ERR("Could not get nsIParser iface: %08x\n", nsres); + nsparser = NULL; + } + } + + if(nsparser) + nsIParser_BeginEvaluatingParserInsertedScript(nsparser); + doc_insert_script(doc->basedoc.window, nsscript); + + if(nsparser) { + nsIParser_EndEvaluatingParserInsertedScript(nsparser); + nsIParser_Release(nsparser); + } + nsIDOMHTMLScriptElement_Release(nsscript); return NS_OK; } @@ -410,9 +433,7 @@ static const nsIRunnableVtbl nsRunnableVtbl = { static void add_script_runner(HTMLDocumentNode *This, runnable_proc_t proc, nsISupports *arg1, nsISupports *arg2) { - nsIDOMNSDocument *nsdoc; nsRunnable *runnable; - nsresult nsres; runnable = heap_alloc_zero(sizeof(*runnable)); if(!runnable) @@ -433,13 +454,7 @@ static void add_script_runner(HTMLDocumentNode *This, runnable_proc_t proc, nsIS nsISupports_AddRef(arg2); runnable->arg2 = arg2; - nsres = nsIDOMHTMLDocument_QueryInterface(This->nsdoc, &IID_nsIDOMNSDocument, (void**)&nsdoc); - if(NS_SUCCEEDED(nsres)) { - nsIDOMNSDocument_WineAddScriptRunner(nsdoc, &runnable->nsIRunnable_iface); - nsIDOMNSDocument_Release(nsdoc); - }else { - ERR("Could not get nsIDOMNSDocument: %08x\n", nsres); - } + nsIContentUtils_AddScriptRunner(content_utils, &runnable->nsIRunnable_iface); nsIRunnable_Release(&runnable->nsIRunnable_iface); } @@ -557,12 +572,12 @@ static void NSAPI nsDocumentObserver_EndLoad(nsIDocumentObserver *iface, nsIDocu } static void NSAPI nsDocumentObserver_ContentStatesChanged(nsIDocumentObserver *iface, nsIDocument *aDocument, - nsIContent *aContent1, nsIContent *aContent2, PRInt32 aStateMask) + nsIContent *aContent1, nsIContent *aContent2, nsEventStates aStateMask) { } static void NSAPI nsDocumentObserver_DocumentStatesChanged(nsIDocumentObserver *iface, nsIDocument *aDocument, - PRInt32 aStateMask) + nsEventStates aStateMask) { } @@ -639,8 +654,8 @@ static void NSAPI nsDocumentObserver_BindToDocument(nsIDocumentObserver *iface, } } -static void NSAPI nsDocumentObserver_DoneAddingChildren(nsIDocumentObserver *iface, nsIContent *aContent, - PRBool aHaveNotified) +static nsresult NSAPI nsDocumentObserver_DoneAddingChildren(nsIDocumentObserver *iface, nsIContent *aContent, + PRBool aHaveNotified, nsIParser *aParser) { HTMLDocumentNode *This = impl_from_nsIDocumentObserver(iface); nsIDOMHTMLScriptElement *nsscript; @@ -652,9 +667,11 @@ static void NSAPI nsDocumentObserver_DoneAddingChildren(nsIDocumentObserver *ifa if(NS_SUCCEEDED(nsres)) { TRACE("script node\n"); - add_script_runner(This, run_insert_script, (nsISupports*)nsscript, NULL); + add_script_runner(This, run_insert_script, (nsISupports*)nsscript, (nsISupports*)aParser); nsIDOMHTMLScriptElement_Release(nsscript); } + + return NS_OK; } static const nsIDocumentObserverVtbl nsDocumentObserverVtbl = { @@ -686,34 +703,60 @@ static const nsIDocumentObserverVtbl nsDocumentObserverVtbl = { nsDocumentObserver_DoneAddingChildren }; -void init_mutation(HTMLDocumentNode *doc) +void init_document_mutation(HTMLDocumentNode *doc) { - nsIDOMNSDocument *nsdoc; + nsIDocument *nsdoc; nsresult nsres; doc->nsIDocumentObserver_iface.lpVtbl = &nsDocumentObserverVtbl; - nsres = nsIDOMHTMLDocument_QueryInterface(doc->nsdoc, &IID_nsIDOMNSDocument, (void**)&nsdoc); + nsres = nsIDOMHTMLDocument_QueryInterface(doc->nsdoc, &IID_nsIDocument, (void**)&nsdoc); if(NS_FAILED(nsres)) { - ERR("Could not get nsIDOMNSDocument: %08x\n", nsres); + ERR("Could not get nsIDocument: %08x\n", nsres); return; } - nsIDOMNSDocument_WineAddObserver(nsdoc, &doc->nsIDocumentObserver_iface); - nsIDOMNSDocument_Release(nsdoc); + nsIContentUtils_AddDocumentObserver(content_utils, nsdoc, &doc->nsIDocumentObserver_iface); + nsIDocument_Release(nsdoc); } -void release_mutation(HTMLDocumentNode *doc) +void release_document_mutation(HTMLDocumentNode *doc) { - nsIDOMNSDocument *nsdoc; + nsIDocument *nsdoc; nsresult nsres; - nsres = nsIDOMHTMLDocument_QueryInterface(doc->nsdoc, &IID_nsIDOMNSDocument, (void**)&nsdoc); + nsres = nsIDOMHTMLDocument_QueryInterface(doc->nsdoc, &IID_nsIDocument, (void**)&nsdoc); if(NS_FAILED(nsres)) { - ERR("Could not get nsIDOMNSDocument: %08x\n", nsres); + ERR("Could not get nsIDocument: %08x\n", nsres); return; } - nsIDOMNSDocument_WineRemoveObserver(nsdoc, &doc->nsIDocumentObserver_iface); - nsIDOMNSDocument_Release(nsdoc); + nsIContentUtils_RemoveDocumentObserver(content_utils, nsdoc, &doc->nsIDocumentObserver_iface); + nsIDocument_Release(nsdoc); +} + +void init_mutation(nsIComponentManager *component_manager) +{ + nsIFactory *factory; + nsresult nsres; + + if(!component_manager) { + if(content_utils) { + nsIContentUtils_Release(content_utils); + content_utils = NULL; + } + return; + } + + nsres = nsIComponentManager_GetClassObject(component_manager, &NS_ICONTENTUTILS_CID, + &IID_nsIFactory, (void**)&factory); + if(NS_FAILED(nsres)) { + ERR("Could not create nsIContentUtils service: %08x\n", nsres); + return; + } + + nsres = nsIFactory_CreateInstance(factory, NULL, &IID_nsIContentUtils, (void**)&content_utils); + nsIFactory_Release(factory); + if(NS_FAILED(nsres)) + ERR("Could not create nsIContentUtils instance: %08x\n", nsres); } diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index 7592b62..c2332e0 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -394,7 +394,7 @@ static BOOL load_wine_gecko_v(PRUnichar *gre_path, HKEY mshtml_key, {'G','e','c','k','o','P','a','t','h',0}; if(version) { - /* @@ Wine registry key: HKCU\Software\Wine\MSHTML\ */ + /* @@ Wine registry key: HKLM\Software\Wine\MSHTML\ */ res = RegOpenKeyA(mshtml_key, version, &hkey); if(res != ERROR_SUCCESS) return FALSE; @@ -422,8 +422,8 @@ static BOOL load_wine_gecko(PRUnichar *gre_path) 'S','o','f','t','w','a','r','e','\\','W','i','n','e', '\\','M','S','H','T','M','L',0}; - /* @@ Wine registry key: HKCU\Software\Wine\MSHTML */ - res = RegOpenKeyW(HKEY_CURRENT_USER, wszMshtmlKey, &hkey); + /* @@ Wine registry key: HKLM\Software\Wine\MSHTML */ + res = RegOpenKeyW(HKEY_LOCAL_MACHINE, wszMshtmlKey, &hkey); if(res != ERROR_SUCCESS) return FALSE; @@ -599,6 +599,8 @@ static BOOL init_xpcom(const PRUnichar *gre_path) else ERR("NS_GetComponentRegistrar failed: %08x\n", nsres); + init_mutation(pCompMgr); + nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr, NS_APPSTARTUPNOTIFIER_CONTRACTID, NULL, &IID_nsIObserver, (void**)&pStartNotif); if(NS_SUCCEEDED(nsres)) { @@ -947,6 +949,7 @@ void close_gecko(void) TRACE("()\n"); release_nsio(); + init_mutation(NULL); if(profile_directory) { nsIFile_Release(profile_directory); diff --git a/dlls/mshtml/nsiface.idl b/dlls/mshtml/nsiface.idl index 7d8b5ce..550b0aa 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.1.0\"") +cpp_quote("#define GECKO_VERSION \"1.2.0-rc1\"") cpp_quote("#define GECKO_VERSION_STRING \"Wine Gecko \" GECKO_VERSION") import "wtypes.idl"; @@ -87,7 +87,6 @@ interface nsIEditActionListener; interface nsIDocumentStateListener; interface nsIDOMCSSStyleSheet; interface nsIDOMDocumentView; -interface nsIDocumentObserver; interface nsIDOMWindow; interface nsIDOMElement; @@ -148,8 +147,12 @@ typedef nsISupports nsITransferable; typedef nsISupports nsIDOMHTMLHeadElement; typedef nsISupports nsIDOMFileList; typedef nsISupports nsIControllers; +typedef nsISupports nsIDOMValidityState; typedef nsISupports nsIPluginInstanceOwner; typedef nsISupports nsIPluginStreamListener; +typedef nsISupports nsIContentSink; +typedef nsISupports nsIParserFilter; +typedef nsISupports nsIDTD; [ object, @@ -469,7 +472,7 @@ interface nsIHttpChannel : nsIChannel [ object, - uuid(91dbb42a-dffc-4f47-8b27-9579c0d92c3f), + uuid(9fb2a161-d075-4bf2-b07a-26bac650cc81), local ] interface nsIHttpChannelInternal : nsISupports @@ -483,6 +486,8 @@ interface nsIHttpChannelInternal : nsISupports nsresult GetForceAllowThirdPartyCookie(PRBool *aForceAllowThirdPartyCookie); nsresult SetForceAllowThirdPartyCookie(PRBool aForceAllowThirdPartyCookie); nsresult GetCanceled(PRBool *aCanceled); + nsresult GetChannelIsForDownload(PRBool *aChannelIsForDownload); + nsresult SetChannelIsForDownload(PRBool aChannelIsForDownload); } [ @@ -934,7 +939,7 @@ interface nsIDOMDocument : nsIDOMNode [ object, - uuid(7485b35e-d215-42a0-8a67-896f86c8afd9), + uuid(92f2c6f8-3668-4a47-8251-2a900afe11fa), local ] interface nsIDOMNSDocument : nsISupports @@ -951,15 +956,11 @@ interface nsIDOMNSDocument : nsISupports nsresult GetReferrer(nsAString *aReferrer); nsresult HasFocus(PRBool *_retval); nsresult GetActiveElement(nsIDOMElement **aActiveElement); + nsresult GetCurrentScript(nsIDOMElement **aActiveElement); nsresult GetElementsByClassName(const nsAString *classes, nsIDOMNodeList **_retval); nsresult ElementFromPoint(float x, float y, nsIDOMElement **_retval); nsresult ReleaseCapture(); nsresult MozSetImageElement(const nsAString *aImageElementId, nsIDOMElement *aImageElement); - - /* Wine extensions */ - nsresult WineAddObserver(nsIDocumentObserver *aObserver); - nsresult WineRemoveObserver(nsIDocumentObserver *aObserver); - nsresult WineAddScriptRunner(nsIRunnable *aRunnable); } [ @@ -1218,32 +1219,36 @@ interface nsIDOMHTMLBodyElement : nsIDOMHTMLElement [ object, - uuid(a6cf908f-15b3-11d2-932e-00805f8add32), + uuid(0884ce23-e069-499e-a13c-a91c8ae0fc98), local ] interface nsIDOMHTMLFormElement : nsIDOMHTMLElement { - nsresult GetElements(nsIDOMHTMLCollection **aElements); - nsresult GetLength(PRInt32 *aLength); nsresult GetName(nsAString *aName); nsresult SetName(const nsAString *aName); nsresult GetAcceptCharset(nsAString *aAcceptCharset); nsresult SetAcceptCharset(const nsAString *aAcceptCharset); nsresult GetAction(nsAString *aAction); nsresult SetAction(const nsAString *aAction); + nsresult GetAutocomplete(nsAString *aAutocomplete); + nsresult SetAutocomplete(const nsAString *aAutocomplete); nsresult GetEnctype(nsAString *aEnctype); nsresult SetEnctype(const nsAString *aEnctype); nsresult GetMethod(nsAString *aMethod); nsresult SetMethod(const nsAString *aMethod); + nsresult GetNoValidate(PRBool *aNoValidate); + nsresult SetNoValidate(PRBool aNoValidate); nsresult GetTarget(nsAString *aTarget); nsresult SetTarget(const nsAString *aTarget); + nsresult GetElements(nsIDOMHTMLCollection **aElements); + nsresult GetLength(PRInt32 *aLength); nsresult Submit(); nsresult Reset(); } [ object, - uuid(2480b6f0-094e-484f-8717-0c204ed23e69), + uuid(0805059d-f18f-4095-ae6b-0bf6df80b7b8), local ] interface nsIDOMHTMLInputElement : nsIDOMHTMLElement @@ -1252,6 +1257,8 @@ interface nsIDOMHTMLInputElement : nsIDOMHTMLElement nsresult SetAccept(const nsAString *aAccept); nsresult GetAlt(nsAString *aAlt); nsresult SetAlt(const nsAString *aAlt); + nsresult GetAutocomplete(nsAString *aAutocomplete); + nsresult SetAutocomplete(const nsAString *aAutocomplete); nsresult GetAutofocus(PRBool *aAutofocus); nsresult SetAutofocus(PRBool aAutofocus); nsresult GetDefaultChecked(PRBool *aDefaultChecked); @@ -1261,19 +1268,34 @@ interface nsIDOMHTMLInputElement : nsIDOMHTMLElement nsresult GetDisabled(PRBool *aDisabled); nsresult SetDisabled(PRBool aDisabled); nsresult GetForm(nsIDOMHTMLFormElement **aForm); + nsresult GetFormAction(nsAString *aFormAction); + nsresult SetFormAction(const nsAString *aFormAction); + nsresult GetFormEnctype(nsAString *aFormEnctype); + nsresult SetFormEnctype(const nsAString *aFormEnctype); + nsresult GetFormMethod(nsAString *aFormMethod); + nsresult SetFormMethod(const nsAString *aFormMethod); + nsresult GetFormNoValidate(PRBool *aFormNoValidate); + nsresult SetFormNoValidate(PRBool aFormNoValidate); + nsresult GetFormTarget(nsAString *aFormTarget); + nsresult SetFormTarget(const nsAString *aFormTarget); nsresult GetFiles(nsIDOMFileList **aFiles); nsresult GetIndeterminate(PRBool *aIndeterminate); nsresult SetIndeterminate(PRBool aIndeterminate); + nsresult GetList(nsIDOMHTMLElement **aList); nsresult GetMaxLength(PRInt32 *aMaxLength); nsresult SetMaxLength(PRInt32 aMaxLength); nsresult GetMultiple(PRBool *aMultiple); nsresult SetMultiple(PRBool aMultiple); nsresult GetName(nsAString *aName); nsresult SetName(const nsAString *aName); + nsresult GetPattern(nsAString *aPattern); + nsresult SetPattern(const nsAString *aPattern); nsresult GetPlaceholder(nsAString *aPlaceholder); nsresult SetPlaceholder(const nsAString *aPlaceholder); nsresult GetReadOnly(PRBool *aReadOnly); nsresult SetReadOnly(PRBool aReadOnly); + nsresult GetRequired(PRBool *aRequired); + nsresult SetRequired(PRBool aRequired); nsresult GetAccessKey(nsAString *aAccessKey); nsresult SetAccessKey(const nsAString *aAccessKey); nsresult GetAlign(nsAString *aAlign); @@ -1288,6 +1310,11 @@ interface nsIDOMHTMLInputElement : nsIDOMHTMLElement nsresult SetDefaultValue(const nsAString *aDefaultValue); nsresult GetValue(nsAString *aValue); nsresult SetValue(const nsAString *aValue); + nsresult GetWillValidate(PRBool *aWillValidate); + nsresult GetValidity(nsIDOMValidityState **aValidity); + nsresult GetValidationMessage(nsAString *aValidationMessage); + nsresult CheckValidity(PRBool *_retval); + nsresult SetCustomValidity(const nsAString *error); nsresult Select(); nsresult GetSelectionStart(PRInt32 *aSelectionStart); nsresult SetSelectionStart(PRInt32 aSelectionStart); @@ -1346,7 +1373,7 @@ interface nsIDOMHTMLOptionsCollection : nsISupports [ object, - uuid(110a4b15-e0a2-48d7-8e59-d8d94ef510ad), + uuid(e3c6d960-972c-4a5e-a8f4-6ca65d578abf), local ] interface nsIDOMHTMLSelectElement : nsIDOMHTMLElement @@ -1378,6 +1405,11 @@ interface nsIDOMHTMLSelectElement : nsIDOMHTMLElement nsresult SetTabIndex(PRInt32 aTabIndex); nsresult Blur(); nsresult Focus(); + nsresult GetWillValidate(PRBool *aWillValidate); + nsresult GetValidity(nsIDOMValidityState **aValidity); + nsresult GetValidationMessage(nsAString *aValidationMessage); + nsresult CheckValidity(PRBool *_retval); + nsresult SetCustomValidity(const nsAString *error); } [ @@ -1656,7 +1688,7 @@ interface nsIDOMHTMLFrameElement : nsIDOMHTMLElement [ object, - uuid(a6cf90ac-15b3-11d2-932e-00805f8add32), + uuid(9b93aab4-7fe8-4f79-9ad2-0623178a0c46), local ] interface nsIDOMHTMLObjectElement : nsIDOMHTMLElement @@ -1697,6 +1729,11 @@ interface nsIDOMHTMLObjectElement : nsIDOMHTMLElement nsresult GetWidth(nsAString *aWidth); nsresult SetWidth(const nsAString *aWidth); nsresult GetContentDocument(nsIDOMDocument **aContentDocument); + nsresult GetWillValidate(PRBool *aWillValidate); + nsresult GetValidity(nsIDOMValidityState **aValidity); + nsresult GetValidationMessage(nsAString *aValidationMessage); + nsresult CheckValidity(PRBool *_retval); + nsresult SetCustomValidity(const nsAString *error); } [ @@ -2610,7 +2647,7 @@ interface nsIController : nsISupports [ object, - uuid(dd254504-e273-4923-9ec1-d8421a6635f1), + uuid(71afb9e6-e8a7-475d-89c4-e46221ebe1a4), local ] interface nsIContent : nsISupports @@ -2620,7 +2657,7 @@ interface nsIContent : nsISupports [ object, - uuid(b2274bc3-4a1c-4e64-8de4-3bc650288438), + uuid(c38a7935-c854-4df7-8fd4-a26f0d279f31), local ] interface nsIDocument : nsISupports @@ -2810,7 +2847,7 @@ interface nsIHTMLEditor : nsISupports [ object, - uuid(bf6db598-3833-400b-9e53-ec220cb2496c), + uuid(98cdbcc4-2d81-4191-a63f-b6c52085edbc), local ] interface nsIDocShell : nsISupports @@ -2893,6 +2930,9 @@ interface nsIDocShell : nsISupports nsresult GetCanExecuteScripts(PRBool *aCanExecuteScripts); nsresult GetIsActive(PRBool *aIsActive); nsresult SetIsActive(PRBool aIsActive); + nsresult GetHistoryID(PRUint64 *aHistoryID); + nsresult GetIsAppTab(PRBool *aIsAppTab); + nsresult SetIsAppTab(PRBool aIsAppTab); } [ @@ -2922,20 +2962,69 @@ interface nsIMutationObserver : nsISupports [ object, - uuid(4e14e321-a4bb-49f8-a57a-2363668d14d0), + uuid(cbc0cbd8-bbb7-46d6-a551-378a6953a714), + local +] +interface nsIParser : nsISupports +{ + typedef int nsDTDMode; + typedef int eParserCommands; + + void SetContentSink(nsIContentSink *aSink); + nsIContentSink *GetContentSink(); + void GetCommand(nsACString *aCommand); + void SetCommand2(const char *aCommand); + void SetCommand(eParserCommands aParserCommand); + void SetDocumentCharset(const nsACString *aCharset, PRInt32 aSource); + void GetDocumentCharset(nsACString *oCharset, PRInt32 *oSource); + void SetParserFilter(nsIParserFilter *aFilter); + nsresult GetChannel(nsIChannel **aChannel); + nsresult GetDTD(nsIDTD **aDTD); + nsresult GetStreamListener(nsIStreamListener **aListener); + nsresult ContinueInterruptedParsing(); + void BlockParser(); + void UnblockParser(); + PRBool IsParserEnabled(); + PRBool IsComplete(); + nsresult Parse(nsIURI *aURL, nsIRequestObserver *aListener, void *aKey, nsDTDMode aMode); + nsresult Parse2(const nsAString *aSourceBuffer, void *aKey, const nsACString *aMimeType, PRBool aLastCall, nsDTDMode aMode); + void *GetRootContextKey(); + nsresult Terminate(); + nsresult ParseFragment(const nsAString *aSourceBuffer, void *aKey, void /*nsTArray*/ *aTagStack, + PRBool aXMLMode, const nsACString *aContentType, nsDTDMode aMode); + nsresult ParseFragment2(const nsAString *aSourceBuffer, nsIContent *aTargetNode, nsIAtom *aContextLocalName, + PRInt32 aContextNamespace, PRBool aQuirks); + nsresult BuildModel(); + nsresult CancelParsingEvents(); + void Reset(); + PRBool CanInterrupt(); + PRBool IsInsertionPointDefined(); + void BeginEvaluatingParserInsertedScript(); + void EndEvaluatingParserInsertedScript(); + void MarkAsNotScriptCreated(); + PRBool IsScriptCreated(); +} + +[ + object, + uuid(3d005225-210f-4b07-b1d9-96020574c437), local ] interface nsIDocumentObserver : nsIMutationObserver { typedef int nsUpdateType; + typedef struct { + PRUint64 mStates; + } nsEventStates; + void BeginUpdate(nsIDocument *aDocument, nsUpdateType aUpdateType); void EndUpdate(nsIDocument *aDocument, nsUpdateType aUpdateType); void BeginLoad(nsIDocument *aDocument); void EndLoad(nsIDocument *aDocument); void ContentStatesChanged(nsIDocument *aDocument, nsIContent *aContent1, nsIContent *aContent2, - PRInt32 aStateMask); - void DocumentStatesChanged(nsIDocument* aDocument, PRInt32 aStateMask); + nsEventStates aStateMask); + void DocumentStatesChanged(nsIDocument* aDocument, nsEventStates aStateMask); void StyleSheetAdded(nsIDocument *aDocument, nsIStyleSheet *aStyleSheet, PRBool aDocumentSheet); void StyleSheetRemoved(nsIDocument *aDocument, nsIStyleSheet *aStyleSheet, PRBool aDocumentSheet); void StyleSheetApplicableStateChanged(nsIDocument *aDocument, nsIStyleSheet *aStyleSheet, @@ -2945,7 +3034,25 @@ interface nsIDocumentObserver : nsIMutationObserver void StyleRuleAdded(nsIDocument *aDocument, nsIStyleSheet *aStyleSheet, nsIStyleRule *aStyleRule); void StyleRuleRemoved(nsIDocument *aDocument, nsIStyleSheet *aStyleSheet, nsIStyleRule *aStyleRule); void BindToDocument(nsIDocument *aDocument, nsIContent *aContent); - void DoneAddingChildren(nsIContent *aContent, PRBool aHaveNotified); + nsresult DoneAddingChildren(nsIContent *aContent, PRBool aHaveNotified, nsIParser *aParser); +} + +[ + object, + uuid(3682dd99-8560-44f4-9b8f-ccce9d7b96fb), + local +] +interface nsIContentUtils : nsISupports +{ + PRBool IsSafeToRunScript(); + PRBool ParseIntMarginValue(const nsAString *aString, nsIntMargin *result); + void /*already_AddRefed*/ FindInternalContentViewer( + const char *aType, int /*ContentViewerType*/ *aLoaderType); + nsresult AddDocumentObserver(nsIDocument *aDocument, nsIDocumentObserver *aObserver); + nsresult RemoveDocumentObserver(nsIDocument *aDocument, nsIDocumentObserver *aObserver); + nsresult AddMutationObserver(nsINode *aNode, nsIMutationObserver *aObserver); + nsresult RemoveMutationObserver(nsINode *aNode, nsIMutationObserver *aObserver); + nsresult AddScriptRunner(nsIRunnable *aRunnable); } /* Parts of npapi.h */ @@ -3078,6 +3185,7 @@ interface nsIPluginInstance : nsISupports { typedef void *JSContext; typedef void *JSObject; + typedef void *gfxASurface; nsresult Initialize(nsIPluginInstanceOwner *aOwner, const char *aMIMEType); nsresult Start(); @@ -3107,6 +3215,11 @@ interface nsIPluginInstance : nsISupports nsresult IsTransparent(PRBool *_retval); nsresult GetValueFromPlugin(NPPVariable variable, void *aValue); nsresult GetDrawingModel(PRInt32 *_retval); + nsresult AsyncSetWindow(NPWindow *aWindow); + nsresult NotifyPainted(); + nsresult GetSurface(gfxASurface **aSurface); + nsresult UseAsyncPainting(PRBool *_retval); + } [ diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c index 327b191..e442c9f 100644 --- a/dlls/mshtml/nsio.c +++ b/dlls/mshtml/nsio.c @@ -1462,6 +1462,24 @@ static nsresult NSAPI nsHttpChannelInternal_GetCanceled(nsIHttpChannelInternal * return NS_ERROR_NOT_IMPLEMENTED; } +static nsresult NSAPI nsHttpChannelInternal_GetChannelIsForDownload(nsIHttpChannelInternal *iface, PRBool *aCanceled) +{ + nsChannel *This = impl_from_nsIHttpChannelInternal(iface); + + FIXME("(%p)->(%p)\n", This, aCanceled); + + return NS_ERROR_NOT_IMPLEMENTED; +} + +static nsresult NSAPI nsHttpChannelInternal_SetChannelIsForDownload(nsIHttpChannelInternal *iface, PRBool aCanceled) +{ + nsChannel *This = impl_from_nsIHttpChannelInternal(iface); + + FIXME("(%p)->(%x)\n", This, aCanceled); + + return NS_ERROR_NOT_IMPLEMENTED; +} + static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = { nsHttpChannelInternal_QueryInterface, nsHttpChannelInternal_AddRef, @@ -1474,7 +1492,9 @@ static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = { nsHttpChannelInternal_SetupFallbackChannel, nsHttpChannelInternal_GetForceAllowThirdPartyCookie, nsHttpChannelInternal_SetForceAllowThirdPartyCookie, - nsHttpChannelInternal_GetCanceled + nsHttpChannelInternal_GetCanceled, + nsHttpChannelInternal_GetChannelIsForDownload, + nsHttpChannelInternal_SetChannelIsForDownload }; static BOOL ensure_uri(nsWineURI *This) diff --git a/dlls/mshtml/tests/exectest.html b/dlls/mshtml/tests/exectest.html index 65d3701..1d84917 100644 --- a/dlls/mshtml/tests/exectest.html +++ b/dlls/mshtml/tests/exectest.html @@ -15,12 +15,12 @@ ok(len === 3, "init length = " + len); document.write("