From 91d6288e35b9e801a0fd2b955031fbbced877106 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 15 Sep 2005 18:47:13 +0000 Subject: [PATCH] Added CoInternetGetSession implementation. --- dlls/urlmon/Makefile.in | 1 + dlls/urlmon/session.c | 151 ++++++++++++++++++++++++++++++++++++++++ dlls/urlmon/umon.c | 33 --------- 3 files changed, 152 insertions(+), 33 deletions(-) create mode 100644 dlls/urlmon/session.c diff --git a/dlls/urlmon/Makefile.in b/dlls/urlmon/Makefile.in index b6d448b8889..7d093d6d99d 100644 --- a/dlls/urlmon/Makefile.in +++ b/dlls/urlmon/Makefile.in @@ -15,6 +15,7 @@ C_SRCS = \ internet.c \ regsvr.c \ sec_mgr.c \ + session.c \ umon.c \ umstream.c \ urlmon_main.c diff --git a/dlls/urlmon/session.c b/dlls/urlmon/session.c new file mode 100644 index 00000000000..c516b7e0baf --- /dev/null +++ b/dlls/urlmon/session.c @@ -0,0 +1,151 @@ +/* + * Copyright 2005 Jacek Caban + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#define COBJMACROS + +#include "windef.h" +#include "winbase.h" +#include "winuser.h" +#include "ole2.h" +#include "urlmon.h" +#include "urlmon_main.h" + +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(urlmon); + +static HRESULT WINAPI InternetSession_QueryInterface(IInternetSession *iface, + REFIID riid, void **ppv) +{ + TRACE("(%s %p)\n", debugstr_guid(riid), ppv); + + if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IInternetSession, riid)) { + *ppv = iface; + IInternetSession_AddRef(iface); + return S_OK; + } + + *ppv = NULL; + return E_NOINTERFACE; +} + +static ULONG WINAPI InternetSession_AddRef(IInternetSession *iface) +{ + TRACE("()\n"); + URLMON_LockModule(); + return 2; +} + +static ULONG WINAPI InternetSession_Release(IInternetSession *iface) +{ + TRACE("()\n"); + URLMON_UnlockModule(); + return 1; +} + +static HRESULT WINAPI InternetSession_RegisterNameSpace(IInternetSession *iface, + IClassFactory *pCF, REFCLSID rclsid, LPCWSTR pwzProtocol, ULONG cPatterns, + const LPCWSTR *ppwzPatterns, DWORD dwReserved) +{ + FIXME("(%p %s %s %ld %p %ld)\n", pCF, debugstr_guid(rclsid), debugstr_w(pwzProtocol), + cPatterns, ppwzPatterns, dwReserved); + return E_NOTIMPL; +} + +static HRESULT WINAPI InternetSession_UnregisterNameSpace(IInternetSession *iface, + IClassFactory *pCF, LPCWSTR pszProtocol) +{ + FIXME("(%p %s)\n", pCF, debugstr_w(pszProtocol)); + return E_NOTIMPL; +} + +static HRESULT WINAPI InternetSession_RegisterMimeFilter(IInternetSession *iface, + IClassFactory *pCF, REFCLSID rclsid, LPCWSTR pwzType) +{ + FIXME("(%p %s %s)\n", pCF, debugstr_guid(rclsid), debugstr_w(pwzType)); + return E_NOTIMPL; +} + +static HRESULT WINAPI InternetSession_UnregisterMimeFilter(IInternetSession *iface, + IClassFactory *pCF, LPCWSTR pwzType) +{ + FIXME("(%p %s)\n", pCF, debugstr_w(pwzType)); + return E_NOTIMPL; +} + +static HRESULT WINAPI InternetSession_CreateBinding(IInternetSession *iface, + LPBC pBC, LPCWSTR szUrl, IUnknown *pUnkOuter, IUnknown **ppUnk, + IInternetProtocol **ppOInetProt, DWORD dwOption) +{ + FIXME("(%p %s %p %p %p %08lx)\n", pBC, debugstr_w(szUrl), pUnkOuter, ppUnk, + ppOInetProt, dwOption); + return E_NOTIMPL; +} + +static HRESULT WINAPI InternetSession_SetSessionOption(IInternetSession *iface, + DWORD dwOption, LPVOID pBuffer, DWORD dwBufferLength, DWORD dwReserved) +{ + FIXME("(%08lx %p %ld %ld)\n", dwOption, pBuffer, dwBufferLength, dwReserved); + return E_NOTIMPL; +} + +static const IInternetSessionVtbl InternetSessionVtbl = { + InternetSession_QueryInterface, + InternetSession_AddRef, + InternetSession_Release, + InternetSession_RegisterNameSpace, + InternetSession_UnregisterNameSpace, + InternetSession_RegisterMimeFilter, + InternetSession_UnregisterMimeFilter, + InternetSession_CreateBinding, + InternetSession_SetSessionOption +}; + +static IInternetSession InternetSession = { &InternetSessionVtbl }; + +/*********************************************************************** + * CoInternetGetSession (URLMON.@) + * + * Create a new internet session and return an IInternetSession interface + * representing it. + * + * PARAMS + * dwSessionMode [I] Mode for the internet session + * ppIInternetSession [O] Destination for creates IInternetSession object + * dwReserved [I] Reserved, must be 0. + * + * RETURNS + * Success: S_OK. ppIInternetSession contains the IInternetSession interface. + * Failure: E_INVALIDARG, if any argument is invalid, or + * E_OUTOFMEMORY if memory allocation fails. + */ +HRESULT WINAPI CoInternetGetSession(DWORD dwSessionMode, IInternetSession **ppIInternetSession, + DWORD dwReserved) +{ + TRACE("(%ld %p %ld)\n", dwSessionMode, ppIInternetSession, dwReserved); + + if(dwSessionMode) + ERR("dwSessionMode=%ld\n", dwSessionMode); + if(dwReserved) + ERR("dwReserved=%ld\n", dwReserved); + + *ppIInternetSession = &InternetSession; + return S_OK; +} diff --git a/dlls/urlmon/umon.c b/dlls/urlmon/umon.c index a3ec416be75..6bc28ac2591 100644 --- a/dlls/urlmon/umon.c +++ b/dlls/urlmon/umon.c @@ -1278,39 +1278,6 @@ HRESULT WINAPI CreateURLMoniker(IMoniker *pmkContext, LPCWSTR szURL, IMoniker ** return hres; } - -/*********************************************************************** - * CoInternetGetSession (URLMON.@) - * - * Create a new internet session and return an IInternetSession interface - * representing it. - * - * PARAMS - * dwSessionMode [I] Mode for the internet session - * ppIInternetSession [O] Destination for creates IInternetSession object - * dwReserved [I] Reserved, must be 0. - * - * RETURNS - * Success: S_OK. ppIInternetSession contains the IInternetSession interface. - * Failure: E_INVALIDARG, if any argument is invalid, or - * E_OUTOFMEMORY if memory allocation fails. - */ -HRESULT WINAPI CoInternetGetSession(DWORD dwSessionMode, IInternetSession **ppIInternetSession, DWORD dwReserved) -{ - FIXME("(%ld, %p, %ld): stub\n", dwSessionMode, ppIInternetSession, dwReserved); - - if(dwSessionMode) { - ERR("dwSessionMode: %ld, must be zero\n", dwSessionMode); - } - - if(dwReserved) { - ERR("dwReserved: %ld, must be zero\n", dwReserved); - } - - *ppIInternetSession=NULL; - return E_OUTOFMEMORY; -} - /*********************************************************************** * CoInternetQueryInfo (URLMON.@) *