Update of /cvsroot/pywin32/pywin32/com/win32comext/internet/src
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv7290/com/win32comext/internet/src
Modified Files:
PyIInternetSecurityManager.cpp
Log Message:
ProcessUrlAction() uses bytes instead of a GUID.
Index: PyIInternetSecurityManager.cpp
===================================================================
RCS file: /cvsroot/pywin32/pywin32/com/win32comext/internet/src/PyIInternetSecurityManager.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** PyIInternetSecurityManager.cpp 10 Nov 2008 03:19:21 -0000 1.2
--- PyIInternetSecurityManager.cpp 24 Nov 2008 06:08:02 -0000 1.3
***************
*** 132,153 ****
// @pyparm <o unicode>|pwszUrl||Description for pwszUrl
// @pyparm int|dwAction||Description for dwAction
// @pyparm int|dwFlags||Description for dwFlags
PyObject *obpwszUrl;
LPWSTR pwszUrl;
DWORD dwAction;
! PyObject *obContext;
DWORD dwFlags;
! if ( !PyArg_ParseTuple(args, "OlOl:ProcessUrlAction", &obpwszUrl, &dwAction, &obContext, &dwFlags) )
return NULL;
BOOL bPythonIsHappy = TRUE;
! IID context;
! if (bPythonIsHappy && !PyWinObject_AsBstr(obpwszUrl, &pwszUrl)) bPythonIsHappy = FALSE;
! if (bPythonIsHappy && !PyWinObject_AsIID(obContext, &context)) bPythonIsHappy = FALSE;
! if (!bPythonIsHappy) return NULL;
DWORD dwPolicy = 0;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIISM->ProcessUrlAction( pwszUrl, dwAction, (BYTE *)&dwPolicy, sizeof(dwPolicy), (BYTE *)&context, sizeof(context), dwFlags, 0);
! SysFreeString(pwszUrl);
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
--- 132,153 ----
// @pyparm <o unicode>|pwszUrl||Description for pwszUrl
// @pyparm int|dwAction||Description for dwAction
+ // @pyparm bytes|context||
// @pyparm int|dwFlags||Description for dwFlags
PyObject *obpwszUrl;
LPWSTR pwszUrl;
DWORD dwAction;
! char *context;
! Py_ssize_t cbcontext;
DWORD dwFlags;
! if ( !PyArg_ParseTuple(args, "Olz#l:ProcessUrlAction", &obpwszUrl, &dwAction, &context, &cbcontext, &dwFlags) )
return NULL;
BOOL bPythonIsHappy = TRUE;
! if (!PyWinObject_AsWCHAR(obpwszUrl, &pwszUrl))
! return NULL;
DWORD dwPolicy = 0;
HRESULT hr;
PY_INTERFACE_PRECALL;
! hr = pIISM->ProcessUrlAction( pwszUrl, dwAction, (BYTE *)&dwPolicy, sizeof(dwPolicy), (BYTE *)context, cbcontext, dwFlags, 0);
! PyWinObject_FreeWCHAR(pwszUrl);
PY_INTERFACE_POSTCALL;
if ( FAILED(hr) )
***************
*** 359,372 ****
PyObject *obContext;
obpwszUrl = MakeOLECHARToObj(pwszUrl);
! if (cbContext==0 || pContext==NULL) {
! obContext = Py_None;
! Py_INCREF(Py_None);
! } else if (cbContext==sizeof(GUID))
! obContext = PyWinObject_FromIID(*((IID *)pContext));
! else {
! PyCom_LoggerWarning(NULL, "PyGInternetSecurityManager::ProcessUrlAction has %d bytes for context - what is that?", cbContext);
obContext = Py_None;
Py_INCREF(Py_None);
! }
PyObject *result;
HRESULT hr=InvokeViaPolicy("ProcessUrlAction", &result, "OlOll", obpwszUrl, dwAction, obContext, dwFlags, dwReserved);
--- 359,370 ----
PyObject *obContext;
obpwszUrl = MakeOLECHARToObj(pwszUrl);
! // pContext is documented as being a GUID - but markh has seen IE
! // call this with 78 and 54 bytes in some unusual cases. So
! // just use 'bytes' and the Python code must use magic to get a GUID.
! if (pContext==NULL) {
obContext = Py_None;
Py_INCREF(Py_None);
! } else
! obContext = PyString_FromStringAndSize((char *)pContext, cbContext);
PyObject *result;
HRESULT hr=InvokeViaPolicy("ProcessUrlAction", &result, "OlOll", obpwszUrl, dwAction, obContext, dwFlags, dwReserved);
|