Commit 699e41cd authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

mshtml: Wine Gecko 1.2.0 release.

parent e52f5773
...@@ -51,20 +51,20 @@ ...@@ -51,20 +51,20 @@
WINE_DEFAULT_DEBUG_CHANNEL(appwizcpl); WINE_DEFAULT_DEBUG_CHANNEL(appwizcpl);
#define GECKO_VERSION "1.1.0" #define GECKO_VERSION "1.2.0"
#ifdef __i386__ #ifdef __i386__
#define ARCH_STRING "x86" #define ARCH_STRING "x86"
#define GECKO_SHA "1b6c637207b6f032ae8a52841db9659433482714" #define GECKO_SHA "6964d1877668ab7da07a60f6dcf23fb0e261a808"
#elif defined(__x86_64__) #elif defined(__x86_64__)
#define ARCH_STRING "x86_64" #define ARCH_STRING "x86_64"
#define GECKO_SHA "55b4b60cd2a48631d6236fb411c3a94d806d9906" #define GECKO_SHA "3ac3c3e880e40f7763824866372ffc56128f0abd"
#else #else
#define ARCH_STRING "" #define ARCH_STRING ""
#define GECKO_SHA "???" #define GECKO_SHA "???"
#endif #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[] = static const WCHAR mshtml_keyW[] =
{'S','o','f','t','w','a','r','e', {'S','o','f','t','w','a','r','e',
......
...@@ -1923,7 +1923,7 @@ static void HTMLDocumentNode_destructor(HTMLDOMNode *iface) ...@@ -1923,7 +1923,7 @@ static void HTMLDocumentNode_destructor(HTMLDOMNode *iface)
detach_plugin_host(LIST_ENTRY(list_head(&This->plugin_hosts), PluginHost, entry)); detach_plugin_host(LIST_ENTRY(list_head(&This->plugin_hosts), PluginHost, entry));
if(This->nsdoc) { if(This->nsdoc) {
release_mutation(This); release_document_mutation(This);
nsIDOMHTMLDocument_Release(This->nsdoc); nsIDOMHTMLDocument_Release(This->nsdoc);
} }
...@@ -2024,7 +2024,7 @@ HRESULT create_doc_from_nsdoc(nsIDOMHTMLDocument *nsdoc, HTMLDocumentObj *doc_ob ...@@ -2024,7 +2024,7 @@ HRESULT create_doc_from_nsdoc(nsIDOMHTMLDocument *nsdoc, HTMLDocumentObj *doc_ob
nsIDOMHTMLDocument_AddRef(nsdoc); nsIDOMHTMLDocument_AddRef(nsdoc);
doc->nsdoc = nsdoc; doc->nsdoc = nsdoc;
init_mutation(doc); init_document_mutation(doc);
HTMLDOMNode_Init(doc, &doc->node, (nsIDOMNode*)nsdoc); HTMLDOMNode_Init(doc, &doc->node, (nsIDOMNode*)nsdoc);
doc->node.vtbl = &HTMLDocumentNodeImplVtbl; doc->node.vtbl = &HTMLDocumentNodeImplVtbl;
......
...@@ -661,8 +661,9 @@ NSContainer *NSContainer_Create(HTMLDocumentObj*,NSContainer*); ...@@ -661,8 +661,9 @@ NSContainer *NSContainer_Create(HTMLDocumentObj*,NSContainer*);
void NSContainer_Release(NSContainer*); void NSContainer_Release(NSContainer*);
nsresult create_chrome_window(nsIWebBrowserChrome*,nsIWebBrowserChrome**); nsresult create_chrome_window(nsIWebBrowserChrome*,nsIWebBrowserChrome**);
void init_mutation(HTMLDocumentNode*); void init_mutation(nsIComponentManager*);
void release_mutation(HTMLDocumentNode*); void init_document_mutation(HTMLDocumentNode*);
void release_document_mutation(HTMLDocumentNode*);
void HTMLDocument_LockContainer(HTMLDocumentObj*,BOOL); void HTMLDocument_LockContainer(HTMLDocumentObj*,BOOL);
void show_context_menu(HTMLDocumentObj*,DWORD,POINT*,IDispatch*); void show_context_menu(HTMLDocumentObj*,DWORD,POINT*,IDispatch*);
......
...@@ -39,6 +39,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml); ...@@ -39,6 +39,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
#define IE_MAJOR_VERSION 7 #define IE_MAJOR_VERSION 7
#define IE_MINOR_VERSION 0 #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) static BOOL handle_insert_comment(HTMLDocumentNode *doc, const PRUnichar *comment)
{ {
DWORD len; DWORD len;
...@@ -410,9 +415,7 @@ static const nsIRunnableVtbl nsRunnableVtbl = { ...@@ -410,9 +415,7 @@ static const nsIRunnableVtbl nsRunnableVtbl = {
static void add_script_runner(HTMLDocumentNode *This, runnable_proc_t proc, nsISupports *arg1, nsISupports *arg2) static void add_script_runner(HTMLDocumentNode *This, runnable_proc_t proc, nsISupports *arg1, nsISupports *arg2)
{ {
nsIDOMNSDocument *nsdoc;
nsRunnable *runnable; nsRunnable *runnable;
nsresult nsres;
runnable = heap_alloc_zero(sizeof(*runnable)); runnable = heap_alloc_zero(sizeof(*runnable));
if(!runnable) if(!runnable)
...@@ -433,13 +436,7 @@ static void add_script_runner(HTMLDocumentNode *This, runnable_proc_t proc, nsIS ...@@ -433,13 +436,7 @@ static void add_script_runner(HTMLDocumentNode *This, runnable_proc_t proc, nsIS
nsISupports_AddRef(arg2); nsISupports_AddRef(arg2);
runnable->arg2 = arg2; runnable->arg2 = arg2;
nsres = nsIDOMHTMLDocument_QueryInterface(This->nsdoc, &IID_nsIDOMNSDocument, (void**)&nsdoc); nsIContentUtils_AddScriptRunner(content_utils, &runnable->nsIRunnable_iface);
if(NS_SUCCEEDED(nsres)) {
nsIDOMNSDocument_WineAddScriptRunner(nsdoc, &runnable->nsIRunnable_iface);
nsIDOMNSDocument_Release(nsdoc);
}else {
ERR("Could not get nsIDOMNSDocument: %08x\n", nsres);
}
nsIRunnable_Release(&runnable->nsIRunnable_iface); nsIRunnable_Release(&runnable->nsIRunnable_iface);
} }
...@@ -557,12 +554,12 @@ static void NSAPI nsDocumentObserver_EndLoad(nsIDocumentObserver *iface, nsIDocu ...@@ -557,12 +554,12 @@ static void NSAPI nsDocumentObserver_EndLoad(nsIDocumentObserver *iface, nsIDocu
} }
static void NSAPI nsDocumentObserver_ContentStatesChanged(nsIDocumentObserver *iface, nsIDocument *aDocument, 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, static void NSAPI nsDocumentObserver_DocumentStatesChanged(nsIDocumentObserver *iface, nsIDocument *aDocument,
PRInt32 aStateMask) nsEventStates aStateMask)
{ {
} }
...@@ -639,8 +636,8 @@ static void NSAPI nsDocumentObserver_BindToDocument(nsIDocumentObserver *iface, ...@@ -639,8 +636,8 @@ static void NSAPI nsDocumentObserver_BindToDocument(nsIDocumentObserver *iface,
} }
} }
static void NSAPI nsDocumentObserver_DoneAddingChildren(nsIDocumentObserver *iface, nsIContent *aContent, static nsresult NSAPI nsDocumentObserver_DoneAddingChildren(nsIDocumentObserver *iface, nsIContent *aContent,
PRBool aHaveNotified) PRBool aHaveNotified, nsIParser *aParser)
{ {
HTMLDocumentNode *This = impl_from_nsIDocumentObserver(iface); HTMLDocumentNode *This = impl_from_nsIDocumentObserver(iface);
nsIDOMHTMLScriptElement *nsscript; nsIDOMHTMLScriptElement *nsscript;
...@@ -655,6 +652,8 @@ static void NSAPI nsDocumentObserver_DoneAddingChildren(nsIDocumentObserver *ifa ...@@ -655,6 +652,8 @@ static void NSAPI nsDocumentObserver_DoneAddingChildren(nsIDocumentObserver *ifa
add_script_runner(This, run_insert_script, (nsISupports*)nsscript, NULL); add_script_runner(This, run_insert_script, (nsISupports*)nsscript, NULL);
nsIDOMHTMLScriptElement_Release(nsscript); nsIDOMHTMLScriptElement_Release(nsscript);
} }
return NS_OK;
} }
static const nsIDocumentObserverVtbl nsDocumentObserverVtbl = { static const nsIDocumentObserverVtbl nsDocumentObserverVtbl = {
...@@ -686,34 +685,60 @@ static const nsIDocumentObserverVtbl nsDocumentObserverVtbl = { ...@@ -686,34 +685,60 @@ static const nsIDocumentObserverVtbl nsDocumentObserverVtbl = {
nsDocumentObserver_DoneAddingChildren nsDocumentObserver_DoneAddingChildren
}; };
void init_mutation(HTMLDocumentNode *doc) void init_document_mutation(HTMLDocumentNode *doc)
{ {
nsIDOMNSDocument *nsdoc; nsIDocument *nsdoc;
nsresult nsres; nsresult nsres;
doc->nsIDocumentObserver_iface.lpVtbl = &nsDocumentObserverVtbl; 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 nsIDocument: %08x\n", nsres);
return;
}
nsIContentUtils_AddDocumentObserver(content_utils, nsdoc, &doc->nsIDocumentObserver_iface);
nsIDocument_Release(nsdoc);
}
void release_document_mutation(HTMLDocumentNode *doc)
{
nsIDocument *nsdoc;
nsresult nsres;
nsres = nsIDOMHTMLDocument_QueryInterface(doc->nsdoc, &IID_nsIDocument, (void**)&nsdoc);
if(NS_FAILED(nsres)) { if(NS_FAILED(nsres)) {
ERR("Could not get nsIDOMNSDocument: %08x\n", nsres); ERR("Could not get nsIDocument: %08x\n", nsres);
return; return;
} }
nsIDOMNSDocument_WineAddObserver(nsdoc, &doc->nsIDocumentObserver_iface); nsIContentUtils_RemoveDocumentObserver(content_utils, nsdoc, &doc->nsIDocumentObserver_iface);
nsIDOMNSDocument_Release(nsdoc); nsIDocument_Release(nsdoc);
} }
void release_mutation(HTMLDocumentNode *doc) void init_mutation(nsIComponentManager *component_manager)
{ {
nsIDOMNSDocument *nsdoc; nsIFactory *factory;
nsresult nsres; nsresult nsres;
nsres = nsIDOMHTMLDocument_QueryInterface(doc->nsdoc, &IID_nsIDOMNSDocument, (void**)&nsdoc); 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)) { if(NS_FAILED(nsres)) {
ERR("Could not get nsIDOMNSDocument: %08x\n", nsres); ERR("Could not create nsIContentUtils service: %08x\n", nsres);
return; return;
} }
nsIDOMNSDocument_WineRemoveObserver(nsdoc, &doc->nsIDocumentObserver_iface); nsres = nsIFactory_CreateInstance(factory, NULL, &IID_nsIContentUtils, (void**)&content_utils);
nsIDOMNSDocument_Release(nsdoc); nsIFactory_Release(factory);
if(NS_FAILED(nsres))
ERR("Could not create nsIContentUtils instance: %08x\n", nsres);
} }
...@@ -394,7 +394,7 @@ static BOOL load_wine_gecko_v(PRUnichar *gre_path, HKEY mshtml_key, ...@@ -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}; {'G','e','c','k','o','P','a','t','h',0};
if(version) { if(version) {
/* @@ Wine registry key: HKCU\Software\Wine\MSHTML\<version> */ /* @@ Wine registry key: HKLM\Software\Wine\MSHTML\<version> */
res = RegOpenKeyA(mshtml_key, version, &hkey); res = RegOpenKeyA(mshtml_key, version, &hkey);
if(res != ERROR_SUCCESS) if(res != ERROR_SUCCESS)
return FALSE; return FALSE;
...@@ -422,8 +422,8 @@ static BOOL load_wine_gecko(PRUnichar *gre_path) ...@@ -422,8 +422,8 @@ static BOOL load_wine_gecko(PRUnichar *gre_path)
'S','o','f','t','w','a','r','e','\\','W','i','n','e', 'S','o','f','t','w','a','r','e','\\','W','i','n','e',
'\\','M','S','H','T','M','L',0}; '\\','M','S','H','T','M','L',0};
/* @@ Wine registry key: HKCU\Software\Wine\MSHTML */ /* @@ Wine registry key: HKLM\Software\Wine\MSHTML */
res = RegOpenKeyW(HKEY_CURRENT_USER, wszMshtmlKey, &hkey); res = RegOpenKeyW(HKEY_LOCAL_MACHINE, wszMshtmlKey, &hkey);
if(res != ERROR_SUCCESS) if(res != ERROR_SUCCESS)
return FALSE; return FALSE;
...@@ -599,6 +599,8 @@ static BOOL init_xpcom(const PRUnichar *gre_path) ...@@ -599,6 +599,8 @@ static BOOL init_xpcom(const PRUnichar *gre_path)
else else
ERR("NS_GetComponentRegistrar failed: %08x\n", nsres); ERR("NS_GetComponentRegistrar failed: %08x\n", nsres);
init_mutation(pCompMgr);
nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr, NS_APPSTARTUPNOTIFIER_CONTRACTID, nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr, NS_APPSTARTUPNOTIFIER_CONTRACTID,
NULL, &IID_nsIObserver, (void**)&pStartNotif); NULL, &IID_nsIObserver, (void**)&pStartNotif);
if(NS_SUCCEEDED(nsres)) { if(NS_SUCCEEDED(nsres)) {
...@@ -947,6 +949,7 @@ void close_gecko(void) ...@@ -947,6 +949,7 @@ void close_gecko(void)
TRACE("()\n"); TRACE("()\n");
release_nsio(); release_nsio();
init_mutation(NULL);
if(profile_directory) { if(profile_directory) {
nsIFile_Release(profile_directory); nsIFile_Release(profile_directory);
......
...@@ -1462,6 +1462,24 @@ static nsresult NSAPI nsHttpChannelInternal_GetCanceled(nsIHttpChannelInternal * ...@@ -1462,6 +1462,24 @@ static nsresult NSAPI nsHttpChannelInternal_GetCanceled(nsIHttpChannelInternal *
return NS_ERROR_NOT_IMPLEMENTED; 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 = { static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = {
nsHttpChannelInternal_QueryInterface, nsHttpChannelInternal_QueryInterface,
nsHttpChannelInternal_AddRef, nsHttpChannelInternal_AddRef,
...@@ -1474,7 +1492,9 @@ static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = { ...@@ -1474,7 +1492,9 @@ static const nsIHttpChannelInternalVtbl nsHttpChannelInternalVtbl = {
nsHttpChannelInternal_SetupFallbackChannel, nsHttpChannelInternal_SetupFallbackChannel,
nsHttpChannelInternal_GetForceAllowThirdPartyCookie, nsHttpChannelInternal_GetForceAllowThirdPartyCookie,
nsHttpChannelInternal_SetForceAllowThirdPartyCookie, nsHttpChannelInternal_SetForceAllowThirdPartyCookie,
nsHttpChannelInternal_GetCanceled nsHttpChannelInternal_GetCanceled,
nsHttpChannelInternal_GetChannelIsForDownload,
nsHttpChannelInternal_SetChannelIsForDownload
}; };
static BOOL ensure_uri(nsWineURI *This) static BOOL ensure_uri(nsWineURI *This)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment