itss: Added IInternetProtocolInfo interface stub implementation.
This commit is contained in:
parent
09cf4e5dcc
commit
a4cc844bec
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2006 Jacek Caban for CodeWeavers
|
* Copyright 2006-2007 Jacek Caban for CodeWeavers
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
@ -37,6 +37,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(itss);
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const IInternetProtocolVtbl *lpInternetProtocolVtbl;
|
const IInternetProtocolVtbl *lpInternetProtocolVtbl;
|
||||||
|
const IInternetProtocolInfoVtbl *lpInternetProtocolInfoVtbl;
|
||||||
|
|
||||||
LONG ref;
|
LONG ref;
|
||||||
|
|
||||||
@ -46,6 +47,7 @@ typedef struct {
|
|||||||
} ITSProtocol;
|
} ITSProtocol;
|
||||||
|
|
||||||
#define PROTOCOL(x) ((IInternetProtocol*) &(x)->lpInternetProtocolVtbl)
|
#define PROTOCOL(x) ((IInternetProtocol*) &(x)->lpInternetProtocolVtbl)
|
||||||
|
#define PROTINFO(x) ((IInternetProtocolInfo*) &(x)->lpInternetProtocolInfoVtbl)
|
||||||
|
|
||||||
static void release_chm(ITSProtocol *This)
|
static void release_chm(ITSProtocol *This)
|
||||||
{
|
{
|
||||||
@ -72,6 +74,9 @@ static HRESULT WINAPI ITSProtocol_QueryInterface(IInternetProtocol *iface, REFII
|
|||||||
}else if(IsEqualGUID(&IID_IInternetProtocol, riid)) {
|
}else if(IsEqualGUID(&IID_IInternetProtocol, riid)) {
|
||||||
TRACE("(%p)->(IID_IInternetProtocol %p)\n", This, ppv);
|
TRACE("(%p)->(IID_IInternetProtocol %p)\n", This, ppv);
|
||||||
*ppv = PROTOCOL(This);
|
*ppv = PROTOCOL(This);
|
||||||
|
}else if(IsEqualGUID(&IID_IInternetProtocolInfo, riid)) {
|
||||||
|
TRACE("(%p)->(IID_IInternetProtocolInfo %p)\n", This, ppv);
|
||||||
|
*ppv = PROTINFO(This);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(*ppv) {
|
if(*ppv) {
|
||||||
@ -338,6 +343,78 @@ static const IInternetProtocolVtbl ITSProtocolVtbl = {
|
|||||||
ITSProtocol_UnlockRequest
|
ITSProtocol_UnlockRequest
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define PROTINFO_THIS(iface) DEFINE_THIS(ITSProtocol, InternetProtocolInfo, iface)
|
||||||
|
|
||||||
|
static HRESULT WINAPI ITSProtocolInfo_QueryInterface(IInternetProtocolInfo *iface,
|
||||||
|
REFIID riid, void **ppv)
|
||||||
|
{
|
||||||
|
ITSProtocol *This = PROTINFO_THIS(iface);
|
||||||
|
return IInternetProtocol_QueryInterface(PROTOCOL(This), riid, ppv);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI ITSProtocolInfo_AddRef(IInternetProtocolInfo *iface)
|
||||||
|
{
|
||||||
|
ITSProtocol *This = PROTINFO_THIS(iface);
|
||||||
|
return IInternetProtocol_AddRef(PROTOCOL(This));
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI ITSProtocolInfo_Release(IInternetProtocolInfo *iface)
|
||||||
|
{
|
||||||
|
ITSProtocol *This = PROTINFO_THIS(iface);
|
||||||
|
return IInternetProtocol_Release(PROTOCOL(This));
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI ITSProtocolInfo_ParseUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl,
|
||||||
|
PARSEACTION ParseAction, DWORD dwParseFlags, LPWSTR pwzResult, DWORD cchResult,
|
||||||
|
DWORD *pcchResult, DWORD dwReserved)
|
||||||
|
{
|
||||||
|
ITSProtocol *This = PROTINFO_THIS(iface);
|
||||||
|
FIXME("(%p)->(%s %x %08x %p %d %p %d)\n", This, debugstr_w(pwzUrl), ParseAction,
|
||||||
|
dwParseFlags, pwzResult, cchResult, pcchResult, dwReserved);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI ITSProtocolInfo_CombineUrl(IInternetProtocolInfo *iface,
|
||||||
|
LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl, DWORD dwCombineFlags, LPWSTR pwzResult,
|
||||||
|
DWORD cchResult, DWORD* pcchResult, DWORD dwReserved)
|
||||||
|
{
|
||||||
|
ITSProtocol *This = PROTINFO_THIS(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 ITSProtocolInfo_CompareUrl(IInternetProtocolInfo *iface, LPCWSTR pwzUrl1,
|
||||||
|
LPCWSTR pwzUrl2, DWORD dwCompareFlags)
|
||||||
|
{
|
||||||
|
ITSProtocol *This = PROTINFO_THIS(iface);
|
||||||
|
FIXME("%p)->(%s %s %08x)\n", This, debugstr_w(pwzUrl1), debugstr_w(pwzUrl2), dwCompareFlags);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI ITSProtocolInfo_QueryInfo(IInternetProtocolInfo *iface, LPCWSTR pwzUrl,
|
||||||
|
QUERYOPTION QueryOption, DWORD dwQueryFlags, LPVOID pBuffer, DWORD cbBuffer, DWORD* pcbBuf,
|
||||||
|
DWORD dwReserved)
|
||||||
|
{
|
||||||
|
ITSProtocol *This = PROTINFO_THIS(iface);
|
||||||
|
FIXME("(%p)->(%s %08x %08x %p %d %p %d)\n", This, debugstr_w(pwzUrl), QueryOption,
|
||||||
|
dwQueryFlags, pBuffer, cbBuffer, pcbBuf, dwReserved);
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
#undef PROTINFO_THIS
|
||||||
|
|
||||||
|
static const IInternetProtocolInfoVtbl ITSProtocolInfoVtbl = {
|
||||||
|
ITSProtocolInfo_QueryInterface,
|
||||||
|
ITSProtocolInfo_AddRef,
|
||||||
|
ITSProtocolInfo_Release,
|
||||||
|
ITSProtocolInfo_ParseUrl,
|
||||||
|
ITSProtocolInfo_CombineUrl,
|
||||||
|
ITSProtocolInfo_CompareUrl,
|
||||||
|
ITSProtocolInfo_QueryInfo
|
||||||
|
};
|
||||||
|
|
||||||
HRESULT ITSProtocol_create(IUnknown *pUnkOuter, LPVOID *ppobj)
|
HRESULT ITSProtocol_create(IUnknown *pUnkOuter, LPVOID *ppobj)
|
||||||
{
|
{
|
||||||
ITSProtocol *ret;
|
ITSProtocol *ret;
|
||||||
@ -349,6 +426,7 @@ HRESULT ITSProtocol_create(IUnknown *pUnkOuter, LPVOID *ppobj)
|
|||||||
ret = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ITSProtocol));
|
ret = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ITSProtocol));
|
||||||
|
|
||||||
ret->lpInternetProtocolVtbl = &ITSProtocolVtbl;
|
ret->lpInternetProtocolVtbl = &ITSProtocolVtbl;
|
||||||
|
ret->lpInternetProtocolInfoVtbl = &ITSProtocolInfoVtbl;
|
||||||
ret->ref = 1;
|
ret->ref = 1;
|
||||||
|
|
||||||
*ppobj = PROTOCOL(ret);
|
*ppobj = PROTOCOL(ret);
|
||||||
|
@ -393,6 +393,19 @@ static void test_protocol_url(IClassFactory *factory, LPCWSTR url)
|
|||||||
read_protocol = NULL;
|
read_protocol = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_its_protocol_info(IInternetProtocol *protocol)
|
||||||
|
{
|
||||||
|
IInternetProtocolInfo *info;
|
||||||
|
HRESULT hres;
|
||||||
|
|
||||||
|
hres = IInternetProtocol_QueryInterface(protocol, &IID_IInternetProtocolInfo, (void**)&info);
|
||||||
|
ok(hres == S_OK, "Could not get IInternetProtocolInfo interface: %08x\n", hres);
|
||||||
|
if(FAILED(hres))
|
||||||
|
return;
|
||||||
|
|
||||||
|
IInternetProtocolInfo_Release(info);
|
||||||
|
}
|
||||||
|
|
||||||
static void test_its_protocol(void)
|
static void test_its_protocol(void)
|
||||||
{
|
{
|
||||||
IInternetProtocolInfo *info;
|
IInternetProtocolInfo *info;
|
||||||
@ -442,6 +455,8 @@ static void test_its_protocol(void)
|
|||||||
hres = IClassFactory_CreateInstance(factory, NULL, &IID_IInternetProtocol, (void**)&protocol);
|
hres = IClassFactory_CreateInstance(factory, NULL, &IID_IInternetProtocol, (void**)&protocol);
|
||||||
ok(hres == S_OK, "Could not get IInternetProtocol: %08x\n", hres);
|
ok(hres == S_OK, "Could not get IInternetProtocol: %08x\n", hres);
|
||||||
if(SUCCEEDED(hres)) {
|
if(SUCCEEDED(hres)) {
|
||||||
|
test_its_protocol_info(protocol);
|
||||||
|
|
||||||
test_protocol_fail(protocol, wrong_url1, STG_E_FILENOTFOUND);
|
test_protocol_fail(protocol, wrong_url1, STG_E_FILENOTFOUND);
|
||||||
test_protocol_fail(protocol, wrong_url2, STG_E_FILENOTFOUND);
|
test_protocol_fail(protocol, wrong_url2, STG_E_FILENOTFOUND);
|
||||||
test_protocol_fail(protocol, wrong_url3, STG_E_FILENOTFOUND);
|
test_protocol_fail(protocol, wrong_url3, STG_E_FILENOTFOUND);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user