https://git.reactos.org/?p=reactos.git;a=commitdiff;h=c3cabdbf31f6e046aae4f…
commit c3cabdbf31f6e046aae4f4aa845b4b866c43fbb8
Author: Amine Khaldi <amine.khaldi(a)reactos.org>
AuthorDate: Sat Nov 2 18:32:59 2019 +0100
Commit: Amine Khaldi <amine.khaldi(a)reactos.org>
CommitDate: Sat Nov 2 18:32:59 2019 +0100
[IEFRAME] Sync with Wine Staging 4.18. CORE-16441
---
dll/win32/ieframe/dochost.c | 5 ++--
dll/win32/ieframe/ie.c | 55 ++++++++++++++++++++++++++++++++--------
dll/win32/ieframe/ieframe.h | 6 ++---
dll/win32/ieframe/ieframe_main.c | 2 --
dll/win32/ieframe/iexplore.c | 14 +++++-----
dll/win32/ieframe/intshcut.c | 12 ++++-----
dll/win32/ieframe/navigate.c | 13 +++++++---
dll/win32/ieframe/shellbrowser.c | 3 ---
media/doc/README.WINE | 2 +-
9 files changed, 73 insertions(+), 39 deletions(-)
diff --git a/dll/win32/ieframe/dochost.c b/dll/win32/ieframe/dochost.c
index d22ad3d18cd..61c8234952d 100644
--- a/dll/win32/ieframe/dochost.c
+++ b/dll/win32/ieframe/dochost.c
@@ -136,7 +136,6 @@ static void notif_complete(DocHost *This, DISPID dispid)
TRACE("%d <<<\n", dispid);
SysFreeString(V_BSTR(&url));
- This->busy = VARIANT_FALSE;
}
static void object_available(DocHost *This)
@@ -428,7 +427,7 @@ static void update_travellog(DocHost *This)
static const WCHAR about_schemeW[] =
{'a','b','o','u','t',':'};
- if(This->url && !strncmpiW(This->url, about_schemeW,
ARRAY_SIZE(about_schemeW))) {
+ if(This->url && !_wcsnicmp(This->url, about_schemeW,
ARRAY_SIZE(about_schemeW))) {
TRACE("Skipping about URL\n");
return;
}
@@ -681,6 +680,8 @@ static HRESULT WINAPI ClOleCommandTarget_Exec(IOleCommandTarget
*iface,
return E_NOTIMPL;
return IOleCommandTarget_Exec(This->olecmd, pguidCmdGroup, nCmdID,
nCmdexecopt, pvaIn, pvaOut);
case OLECMDID_SETDOWNLOADSTATE:
+ if(pvaIn && V_VT(pvaIn) == VT_I4)
+ This->busy = V_I4(pvaIn) ? VARIANT_TRUE : VARIANT_FALSE;
if(This->olecmd)
return IOleCommandTarget_Exec(This->olecmd, pguidCmdGroup, nCmdID,
nCmdexecopt, pvaIn, pvaOut);
diff --git a/dll/win32/ieframe/ie.c b/dll/win32/ieframe/ie.c
index d7e3aa150cc..5d9545e95d6 100644
--- a/dll/win32/ieframe/ie.c
+++ b/dll/win32/ieframe/ie.c
@@ -103,16 +103,29 @@ static ULONG WINAPI InternetExplorer_Release(IWebBrowser2 *iface)
static HRESULT WINAPI InternetExplorer_GetTypeInfoCount(IWebBrowser2 *iface, UINT
*pctinfo)
{
InternetExplorer *This = impl_from_IWebBrowser2(iface);
- FIXME("(%p)->(%p)\n", This, pctinfo);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%p)\n", This, pctinfo);
+
+ *pctinfo = 1;
+ return S_OK;
}
static HRESULT WINAPI InternetExplorer_GetTypeInfo(IWebBrowser2 *iface, UINT iTInfo, LCID
lcid,
LPTYPEINFO *ppTInfo)
{
InternetExplorer *This = impl_from_IWebBrowser2(iface);
- FIXME("(%p)->(%d %d %p)\n", This, iTInfo, lcid, ppTInfo);
- return E_NOTIMPL;
+ ITypeInfo *typeinfo;
+ HRESULT hres;
+
+ TRACE("(%p)->(%d %d %p)\n", This, iTInfo, lcid, ppTInfo);
+
+ hres = get_typeinfo(IWebBrowser2_tid, &typeinfo);
+ if(FAILED(hres))
+ return hres;
+
+ ITypeInfo_AddRef(typeinfo);
+ *ppTInfo = typeinfo;
+ return S_OK;
}
static HRESULT WINAPI InternetExplorer_GetIDsOfNames(IWebBrowser2 *iface, REFIID riid,
@@ -120,9 +133,17 @@ static HRESULT WINAPI InternetExplorer_GetIDsOfNames(IWebBrowser2
*iface, REFIID
LCID lcid, DISPID *rgDispId)
{
InternetExplorer *This = impl_from_IWebBrowser2(iface);
- FIXME("(%p)->(%s %p %d %d %p)\n", This, debugstr_guid(riid), rgszNames,
cNames,
- lcid, rgDispId);
- return E_NOTIMPL;
+ ITypeInfo *typeinfo;
+ HRESULT hres;
+
+ TRACE("(%p)->(%s %p %d %d %p)\n", This, debugstr_guid(riid), rgszNames,
cNames,
+ lcid, rgDispId);
+
+ hres = get_typeinfo(IWebBrowser2_tid, &typeinfo);
+ if(FAILED(hres))
+ return hres;
+
+ return ITypeInfo_GetIDsOfNames(typeinfo, rgszNames, cNames, rgDispId);
}
static HRESULT WINAPI InternetExplorer_Invoke(IWebBrowser2 *iface, DISPID dispIdMember,
@@ -131,9 +152,18 @@ static HRESULT WINAPI InternetExplorer_Invoke(IWebBrowser2 *iface,
DISPID dispId
EXCEPINFO *pExepInfo, UINT *puArgErr)
{
InternetExplorer *This = impl_from_IWebBrowser2(iface);
- FIXME("(%p)->(%d %s %d %08x %p %p %p %p)\n", This, dispIdMember,
debugstr_guid(riid),
+ ITypeInfo *typeinfo;
+ HRESULT hres;
+
+ TRACE("(%p)->(%d %s %d %08x %p %p %p %p)\n", This, dispIdMember,
debugstr_guid(riid),
lcid, wFlags, pDispParams, pVarResult, pExepInfo, puArgErr);
- return E_NOTIMPL;
+
+ hres = get_typeinfo(IWebBrowser2_tid, &typeinfo);
+ if(FAILED(hres))
+ return hres;
+
+ return ITypeInfo_Invoke(typeinfo, &This->IWebBrowser2_iface, dispIdMember,
wFlags, pDispParams,
+ pVarResult, pExepInfo, puArgErr);
}
static HRESULT WINAPI InternetExplorer_GoBack(IWebBrowser2 *iface)
@@ -318,8 +348,11 @@ static HRESULT WINAPI InternetExplorer_get_LocationURL(IWebBrowser2
*iface, BSTR
static HRESULT WINAPI InternetExplorer_get_Busy(IWebBrowser2 *iface, VARIANT_BOOL
*pBool)
{
InternetExplorer *This = impl_from_IWebBrowser2(iface);
- FIXME("(%p)->(%p)\n", This, pBool);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%p)\n", This, pBool);
+
+ *pBool = This->doc_host.busy;
+ return S_OK;
}
static HRESULT WINAPI InternetExplorer_Quit(IWebBrowser2 *iface)
diff --git a/dll/win32/ieframe/ieframe.h b/dll/win32/ieframe/ieframe.h
index fc56da9e46d..4e45918f78f 100644
--- a/dll/win32/ieframe/ieframe.h
+++ b/dll/win32/ieframe/ieframe.h
@@ -29,6 +29,7 @@
#include "wingdi.h"
#include "winuser.h"
#ifdef __REACTOS__
+#include <winnls.h>
#include <wincon.h>
#endif
@@ -42,7 +43,6 @@
#include "shdeprecated.h"
#include "docobjectservice.h"
-#include "wine/unicode.h"
#include "wine/heap.h"
#include "wine/list.h"
@@ -347,7 +347,7 @@ static inline LPWSTR heap_strdupW(LPCWSTR str)
if(str) {
DWORD size;
- size = (strlenW(str)+1)*sizeof(WCHAR);
+ size = (lstrlenW(str)+1)*sizeof(WCHAR);
ret = heap_alloc(size);
if(ret)
memcpy(ret, str, size);
@@ -358,7 +358,7 @@ static inline LPWSTR heap_strdupW(LPCWSTR str)
static inline LPWSTR co_strdupW(LPCWSTR str)
{
- WCHAR *ret = CoTaskMemAlloc((strlenW(str) + 1)*sizeof(WCHAR));
+ WCHAR *ret = CoTaskMemAlloc((lstrlenW(str) + 1)*sizeof(WCHAR));
if (ret)
lstrcpyW(ret, str);
return ret;
diff --git a/dll/win32/ieframe/ieframe_main.c b/dll/win32/ieframe/ieframe_main.c
index e207ce05751..5abe502f1e4 100644
--- a/dll/win32/ieframe/ieframe_main.c
+++ b/dll/win32/ieframe/ieframe_main.c
@@ -187,8 +187,6 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
switch(fdwReason)
{
- case DLL_WINE_PREATTACH:
- return FALSE; /* prefer native version */
case DLL_PROCESS_ATTACH:
ieframe_instance = hInstDLL;
register_iewindow_class();
diff --git a/dll/win32/ieframe/iexplore.c b/dll/win32/ieframe/iexplore.c
index 1a444b8406a..d544e4643c9 100644
--- a/dll/win32/ieframe/iexplore.c
+++ b/dll/win32/ieframe/iexplore.c
@@ -970,7 +970,7 @@ static BOOL create_ie_window(BOOL nohome, const WCHAR *cmdline)
VARIANT var_url;
int cmdlen;
- cmdlen = strlenW(cmdline);
+ cmdlen = lstrlenW(cmdline);
if(cmdlen > 2 && cmdline[0] == '"' &&
cmdline[cmdlen-1] == '"') {
cmdline++;
cmdlen -= 2;
@@ -1001,18 +1001,18 @@ static HDDEDATA open_dde_url(WCHAR *dde_url)
url = dde_url;
if(*url == '"') {
url++;
- url_end = strchrW(url, '"');
+ url_end = wcschr(url, '"');
if(!url_end) {
FIXME("missing string terminator\n");
return 0;
}
*url_end = 0;
}else {
- url_end = strchrW(url, ',');
+ url_end = wcschr(url, ',');
if(url_end)
*url_end = 0;
else
- url_end = url + strlenW(url);
+ url_end = url + lstrlenW(url);
}
LIST_FOR_EACH_ENTRY(iter, &ie_list, InternetExplorer, entry) {
@@ -1162,11 +1162,11 @@ DWORD WINAPI IEWinMain(const WCHAR *cmdline, int nShowWindow)
while (cmdline[length] && cmdline[length] != ' ' &&
cmdline[length] != '\t') length++;
- if (!strncmpiW(cmdline, embeddingW, length))
+ if (!_wcsnicmp(cmdline, embeddingW, length))
embedding = TRUE;
- else if (!strncmpiW(cmdline, nohomeW, length))
+ else if (!_wcsnicmp(cmdline, nohomeW, length))
nohome = TRUE;
- else if (!strncmpiW(cmdline, startmanagerW, length))
+ else if (!_wcsnicmp(cmdline, startmanagerW, length))
manager = TRUE;
else
break;
diff --git a/dll/win32/ieframe/intshcut.c b/dll/win32/ieframe/intshcut.c
index 8bf8ae87029..33584100a71 100644
--- a/dll/win32/ieframe/intshcut.c
+++ b/dll/win32/ieframe/intshcut.c
@@ -94,15 +94,15 @@ static BOOL run_winemenubuilder( const WCHAR *args )
void *redir;
GetSystemDirectoryW( app, MAX_PATH - ARRAY_SIZE( menubuilder ));
- strcatW( app, menubuilder );
+ lstrcatW( app, menubuilder );
- len = (strlenW( app ) + strlenW( args ) + 1) * sizeof(WCHAR);
+ len = (lstrlenW( app ) + lstrlenW( args ) + 1) * sizeof(WCHAR);
buffer = heap_alloc( len );
if( !buffer )
return FALSE;
- strcpyW( buffer, app );
- strcatW( buffer, args );
+ lstrcpyW( buffer, app );
+ lstrcatW( buffer, args );
TRACE("starting %s\n",debugstr_w(buffer));
@@ -136,7 +136,7 @@ static BOOL StartLinkProcessor( LPCOLESTR szLink )
if( !buffer )
return FALSE;
- sprintfW( buffer, szFormat, szLink );
+ swprintf( buffer, szFormat, szLink );
ret = run_winemenubuilder( buffer );
heap_free( buffer );
return ret;
@@ -521,7 +521,7 @@ static HRESULT WINAPI PersistFile_Load(IPersistFile *pFile, LPCOLESTR
pszFileNam
int iconindex;
PROPSPEC ps;
PROPVARIANT pv;
- iconindex = strtolW(iconindexstring, NULL, 10);
+ iconindex = wcstol(iconindexstring, NULL, 10);
ps.ulKind = PRSPEC_PROPID;
ps.u.propid = PID_IS_ICONINDEX;
pv.vt = VT_I4;
diff --git a/dll/win32/ieframe/navigate.c b/dll/win32/ieframe/navigate.c
index 96fb0830053..513444af73f 100644
--- a/dll/win32/ieframe/navigate.c
+++ b/dll/win32/ieframe/navigate.c
@@ -16,6 +16,10 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#ifdef __REACTOS__
+#include <wchar.h>
+#endif
+
#define NONAMELESSUNION
#include "ieframe.h"
@@ -111,7 +115,7 @@ static void set_status_text(BindStatusCallback *This, ULONG
statuscode, LPCWSTR
fmt[0] = 0;
/* the format string must have one "%s" for the str */
LoadStringW(ieframe_instance, IDS_STATUSFMT_FIRST + statuscode, fmt,
IDS_STATUSFMT_MAXLEN);
- snprintfW(buffer, ARRAY_SIZE(buffer), fmt, str);
+ swprintf(buffer, fmt, str);
}
V_VT(&arg) = VT_BSTR;
@@ -150,6 +154,7 @@ void notify_download_state(DocHost *dochost, BOOL is_downloading)
{
DISPPARAMS dwl_dp = {NULL};
TRACE("(%x)\n", is_downloading);
+ dochost->busy = is_downloading ? VARIANT_TRUE : VARIANT_FALSE;
call_sink(dochost->cps.wbe2, is_downloading ? DISPID_DOWNLOADBEGIN :
DISPID_DOWNLOADCOMPLETE, &dwl_dp);
}
@@ -465,7 +470,7 @@ static HRESULT WINAPI
HttpNegotiate_BeginningTransaction(IHttpNegotiate *iface,
dwReserved, pszAdditionalHeaders);
if(This->headers) {
- int size = (strlenW(This->headers)+1)*sizeof(WCHAR);
+ int size = (lstrlenW(This->headers)+1)*sizeof(WCHAR);
*pszAdditionalHeaders = CoTaskMemAlloc(size);
memcpy(*pszAdditionalHeaders, This->headers, size);
}
@@ -583,8 +588,6 @@ static void on_before_navigate2(DocHost *This, LPCWSTR url, SAFEARRAY
*post_data
dispparams.rgdispidNamedArgs = NULL;
dispparams.rgvarg = params;
- This->busy = VARIANT_TRUE;
-
V_VT(params) = VT_BOOL|VT_BYREF;
V_BOOLREF(params) = cancel;
@@ -888,6 +891,8 @@ static HRESULT navigate_bsc(DocHost *This, BindStatusCallback *bsc,
IMoniker *mo
}
notify_download_state(This, TRUE);
+ This->busy = VARIANT_FALSE;
+
on_commandstate_change(This, CSC_NAVIGATEBACK, FALSE);
on_commandstate_change(This, CSC_NAVIGATEFORWARD, FALSE);
diff --git a/dll/win32/ieframe/shellbrowser.c b/dll/win32/ieframe/shellbrowser.c
index 78e0e85a799..375f9caa1b1 100644
--- a/dll/win32/ieframe/shellbrowser.c
+++ b/dll/win32/ieframe/shellbrowser.c
@@ -786,7 +786,6 @@ static HRESULT WINAPI DocObjectService_FireNavigateComplete2(
SysFreeString(url);
- This->doc_host->busy = VARIANT_FALSE;
IShellBrowser_Release(&This->IShellBrowser_iface);
return S_OK;
}
@@ -850,8 +849,6 @@ static HRESULT WINAPI DocObjectService_FireDocumentComplete(
TRACE("<<<\n");
SysFreeString(url);
- if(This->doc_host)
- This->doc_host->busy = VARIANT_FALSE;
IShellBrowser_Release(&This->IShellBrowser_iface);
return S_OK;
diff --git a/media/doc/README.WINE b/media/doc/README.WINE
index 03b75aed8c2..21b3751e007 100644
--- a/media/doc/README.WINE
+++ b/media/doc/README.WINE
@@ -75,7 +75,7 @@ dll/win32/hlink # Synced to WineStaging-4.18
dll/win32/hnetcfg # Synced to WineStaging-4.18
dll/win32/httpapi # Synced to WineStaging-4.18
dll/win32/iccvid # Synced to WineStaging-4.0
-dll/win32/ieframe # Synced to WineStaging-4.0
+dll/win32/ieframe # Synced to WineStaging-4.18
dll/win32/imaadp32.acm # Synced to WineStaging-4.0
dll/win32/imagehlp # Synced to WineStaging-3.3
dll/win32/imm32 # Synced to WineStaging-4.0