URLMON: Added CoInternetGetSession implementation

Jacek Caban jack at itma.pwr.wroc.pl
Thu Sep 15 13:00:45 CDT 2005


Changelog:
    Added CoInternetGetSession implementation
-------------- next part --------------
Index: dlls/urlmon/Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/urlmon/Makefile.in,v
retrieving revision 1.30
diff -u -p -r1.30 Makefile.in
--- dlls/urlmon/Makefile.in	14 Sep 2005 15:38:26 -0000	1.30
+++ dlls/urlmon/Makefile.in	15 Sep 2005 17:56:00 -0000
@@ -15,6 +15,7 @@ C_SRCS = \
 	internet.c \
 	regsvr.c \
 	sec_mgr.c \
+	session.c \
 	umon.c \
 	umstream.c \
 	urlmon_main.c
Index: dlls/urlmon/umon.c
===================================================================
RCS file: /home/wine/wine/dlls/urlmon/umon.c,v
retrieving revision 1.64
diff -u -p -r1.64 umon.c
--- dlls/urlmon/umon.c	12 Sep 2005 20:12:40 -0000	1.64
+++ dlls/urlmon/umon.c	15 Sep 2005 17:56:00 -0000
@@ -1278,39 +1278,6 @@ HRESULT WINAPI CreateURLMoniker(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.@)
  *
--- /dev/null	2005-09-15 17:09:51.292518250 +0200
+++ dlls/urlmon/session.c	2005-09-15 19:51:41.000000000 +0200
@@ -0,0 +1,152 @@
+/*
+ * 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 <stdarg.h>
+
+#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;
+}
+


More information about the wine-patches mailing list