Jacek Caban : inetcomm: Added IInternetProtocolInfo stub implementation.
Alexandre Julliard
julliard at winehq.org
Thu Jan 26 14:53:15 CST 2017
Module: wine
Branch: master
Commit: fe3e5b9c31abdcfe1a3850800d07a9d9974b38a8
URL: http://source.winehq.org/git/wine.git/?a=commit;h=fe3e5b9c31abdcfe1a3850800d07a9d9974b38a8
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Jan 26 15:22:12 2017 +0100
inetcomm: Added IInternetProtocolInfo stub implementation.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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)
More information about the wine-cvs
mailing list