Module: wine Branch: master Commit: fe3e5b9c31abdcfe1a3850800d07a9d9974b38a8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=fe3e5b9c31abdcfe1a3850800d...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Jan 26 15:22:12 2017 +0100
inetcomm: Added IInternetProtocolInfo stub implementation.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/inetcomm/protocol.c | 77 +++++++++++++++++++++++++++++++++++++++++++ dlls/inetcomm/tests/mimeole.c | 14 ++++++++ 2 files changed, 91 insertions(+)
diff --git a/dlls/inetcomm/protocol.c b/dlls/inetcomm/protocol.c index a722550..d560b90 100644 --- a/dlls/inetcomm/protocol.c +++ b/dlls/inetcomm/protocol.c @@ -29,6 +29,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(inetcomm);
typedef struct { IInternetProtocol IInternetProtocol_iface; + IInternetProtocolInfo IInternetProtocolInfo_iface; LONG ref; } MimeHtmlProtocol;
@@ -50,6 +51,9 @@ static HRESULT WINAPI MimeHtmlProtocol_QueryInterface(IInternetProtocol *iface, }else if(IsEqualGUID(&IID_IInternetProtocol, riid)) { TRACE("(%p)->(IID_IInternetProtocol %p)\n", iface, ppv); *ppv = &This->IInternetProtocol_iface; + }else if(IsEqualGUID(&IID_IInternetProtocolInfo, riid)) { + TRACE("(%p)->(IID_IInternetProtocolInfo %p)\n", iface, ppv); + *ppv = &This->IInternetProtocolInfo_iface; }else { FIXME("unknown interface %s\n", debugstr_guid(riid)); *ppv = NULL; @@ -173,6 +177,78 @@ static const IInternetProtocolVtbl MimeHtmlProtocolVtbl = { MimeHtmlProtocol_UnlockRequest };
+static inline MimeHtmlProtocol *impl_from_IInternetProtocolInfo(IInternetProtocolInfo *iface) +{ + return CONTAINING_RECORD(iface, MimeHtmlProtocol, IInternetProtocolInfo_iface); +} + +static HRESULT WINAPI MimeHtmlProtocolInfo_QueryInterface(IInternetProtocolInfo *iface, REFIID riid, void **ppv) +{ + MimeHtmlProtocol *This = impl_from_IInternetProtocolInfo(iface); + return IInternetProtocol_QueryInterface(&This->IInternetProtocol_iface, riid, ppv); +} + +static ULONG WINAPI MimeHtmlProtocolInfo_AddRef(IInternetProtocolInfo *iface) +{ + MimeHtmlProtocol *This = impl_from_IInternetProtocolInfo(iface); + return IInternetProtocol_AddRef(&This->IInternetProtocol_iface); +} + +static ULONG WINAPI MimeHtmlProtocolInfo_Release(IInternetProtocolInfo *iface) +{ + MimeHtmlProtocol *This = impl_from_IInternetProtocolInfo(iface); + return IInternetProtocol_Release(&This->IInternetProtocol_iface); +} + +static HRESULT WINAPI MimeHtmlProtocolInfo_ParseUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl, + PARSEACTION ParseAction, DWORD dwParseFlags, LPWSTR pwzResult, DWORD cchResult, + DWORD* pcchResult, DWORD dwReserved) +{ + MimeHtmlProtocol *This = impl_from_IInternetProtocolInfo(iface); + FIXME("(%p)->(%s %d %x %p %d %p %d)\n", This, debugstr_w(pwzUrl), ParseAction, + dwParseFlags, pwzResult, cchResult, pcchResult, dwReserved); + return INET_E_DEFAULT_ACTION; +} + +static HRESULT WINAPI MimeHtmlProtocolInfo_CombineUrl(IInternetProtocolInfo *iface, + LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pwzResult, + DWORD cchResult, DWORD* pcchResult, DWORD dwReserved) +{ + MimeHtmlProtocol *This = impl_from_IInternetProtocolInfo(iface); + FIXME("(%p)->(%s %s %08x %p %d %p %d)\n", This, debugstr_w(pwzBaseUrl), + debugstr_w(pwzRelativeUrl), dwCombineFlags, pwzResult, cchResult, + pcchResult, dwReserved); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeHtmlProtocolInfo_CompareUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl1, + LPCWSTR pwzUrl2, DWORD dwCompareFlags) +{ + MimeHtmlProtocol *This = impl_from_IInternetProtocolInfo(iface); + FIXME("(%p)->(%s %s %08x)\n", This, debugstr_w(pwzUrl1), debugstr_w(pwzUrl2), dwCompareFlags); + return E_NOTIMPL; +} + +static HRESULT WINAPI MimeHtmlProtocolInfo_QueryInfo(IInternetProtocolInfo *iface, LPCWSTR pwzUrl, + QUERYOPTION QueryOption, DWORD dwQueryFlags, LPVOID pBuffer, DWORD cbBuffer, DWORD* pcbBuf, + DWORD dwReserved) +{ + MimeHtmlProtocol *This = impl_from_IInternetProtocolInfo(iface); + FIXME("(%p)->(%s %08x %08x %p %d %p %d)\n", This, debugstr_w(pwzUrl), QueryOption, dwQueryFlags, pBuffer, + cbBuffer, pcbBuf, dwReserved); + return INET_E_USE_DEFAULT_PROTOCOLHANDLER; +} + +static const IInternetProtocolInfoVtbl MimeHtmlProtocolInfoVtbl = { + MimeHtmlProtocolInfo_QueryInterface, + MimeHtmlProtocolInfo_AddRef, + MimeHtmlProtocolInfo_Release, + MimeHtmlProtocolInfo_ParseUrl, + MimeHtmlProtocolInfo_CombineUrl, + MimeHtmlProtocolInfo_CompareUrl, + MimeHtmlProtocolInfo_QueryInfo +}; + HRESULT MimeHtmlProtocol_create(IUnknown *outer, void **obj) { MimeHtmlProtocol *protocol; @@ -185,6 +261,7 @@ HRESULT MimeHtmlProtocol_create(IUnknown *outer, void **obj) return E_OUTOFMEMORY;
protocol->IInternetProtocol_iface.lpVtbl = &MimeHtmlProtocolVtbl; + protocol->IInternetProtocolInfo_iface.lpVtbl = &MimeHtmlProtocolInfoVtbl; protocol->ref = 1;
*obj = &protocol->IInternetProtocol_iface; diff --git a/dlls/inetcomm/tests/mimeole.c b/dlls/inetcomm/tests/mimeole.c index fed5fbd..7d68a25 100644 --- a/dlls/inetcomm/tests/mimeole.c +++ b/dlls/inetcomm/tests/mimeole.c @@ -760,6 +760,18 @@ static void test_MimeOleGetPropertySchema(void) IMimePropertySchema_Release(schema); }
+static void test_mhtml_protocol_info(void) +{ + IInternetProtocolInfo *protocol_info; + HRESULT hres; + + hres = CoCreateInstance(&CLSID_IMimeHtmlProtocol, NULL, CLSCTX_INPROC_SERVER, + &IID_IInternetProtocolInfo, (void**)&protocol_info); + ok(hres == S_OK, "Could not create protocol info: %08x\n", hres); + + IInternetProtocolInfo_Release(protocol_info); +} + static void test_mhtml_protocol(void) { IUnknown *unk, *unk2; @@ -777,6 +789,8 @@ static void test_mhtml_protocol(void) ok(hres == E_NOINTERFACE, "IInternetProtocolInfo supported\n");
IUnknown_Release(unk); + + test_mhtml_protocol_info(); }
START_TEST(mimeole)