[PATCH] urlmon: Partial InternetZoneManagerEx2 implementation

Detlef Riekenberg wine.dev at web.de
Tue Jul 7 16:55:00 CDT 2009


---
 dlls/urlmon/sec_mgr.c |  163 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 143 insertions(+), 20 deletions(-)

diff --git a/dlls/urlmon/sec_mgr.c b/dlls/urlmon/sec_mgr.c
index 47caf18..d54b2bf 100644
--- a/dlls/urlmon/sec_mgr.c
+++ b/dlls/urlmon/sec_mgr.c
@@ -671,7 +671,7 @@ HRESULT SecManagerImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj)
  *
  */
 typedef struct {
-    const IInternetZoneManagerVtbl* lpVtbl;
+    const IInternetZoneManagerEx2Vtbl* lpVtbl;
     LONG ref;
     LPDWORD *zonemaps;
     DWORD zonemap_count;
@@ -739,7 +739,7 @@ cleanup:
 /********************************************************************
  *      IInternetZoneManager_QueryInterface
  */
-static HRESULT WINAPI ZoneMgrImpl_QueryInterface(IInternetZoneManager* iface, REFIID riid, void** ppvObject)
+static HRESULT WINAPI ZoneMgrImpl_QueryInterface(IInternetZoneManagerEx2* iface, REFIID riid, void** ppvObject)
 {
     ZoneMgrImpl* This = (ZoneMgrImpl*)iface;
 
@@ -748,7 +748,17 @@ static HRESULT WINAPI ZoneMgrImpl_QueryInterface(IInternetZoneManager* iface, RE
     if(!This || !ppvObject)
         return E_INVALIDARG;
 
-    if(!IsEqualIID(&IID_IUnknown, riid) && !IsEqualIID(&IID_IInternetZoneManager, riid)) {
+    if(IsEqualIID(&IID_IUnknown, riid)) {
+        TRACE("(%p)->(IID_IUnknown %p)\n", This, ppvObject);
+    }else if(IsEqualIID(&IID_IInternetZoneManager, riid)) {
+        TRACE("(%p)->(IID_InternetZoneManager %p)\n", This, ppvObject);
+    }else if(IsEqualIID(&IID_IInternetZoneManagerEx, riid)) {
+        TRACE("(%p)->(IID_InternetZoneManagerEx %p)\n", This, ppvObject);
+    }else if(IsEqualIID(&IID_IInternetZoneManagerEx2, riid)) {
+        TRACE("(%p)->(IID_InternetZoneManagerEx2 %p)\n", This, ppvObject);
+    }
+    else
+    {
         FIXME("Unknown interface: %s\n", debugstr_guid(riid));
         *ppvObject = NULL;
         return E_NOINTERFACE;
@@ -756,14 +766,13 @@ static HRESULT WINAPI ZoneMgrImpl_QueryInterface(IInternetZoneManager* iface, RE
 
     *ppvObject = iface;
     IInternetZoneManager_AddRef(iface);
-
     return S_OK;
 }
 
 /********************************************************************
  *      IInternetZoneManager_AddRef
  */
-static ULONG WINAPI ZoneMgrImpl_AddRef(IInternetZoneManager* iface)
+static ULONG WINAPI ZoneMgrImpl_AddRef(IInternetZoneManagerEx2* iface)
 {
     ZoneMgrImpl* This = (ZoneMgrImpl*)iface;
     ULONG refCount = InterlockedIncrement(&This->ref);
@@ -776,7 +785,7 @@ static ULONG WINAPI ZoneMgrImpl_AddRef(IInternetZoneManager* iface)
 /********************************************************************
  *      IInternetZoneManager_Release
  */
-static ULONG WINAPI ZoneMgrImpl_Release(IInternetZoneManager* iface)
+static ULONG WINAPI ZoneMgrImpl_Release(IInternetZoneManagerEx2* iface)
 {
     ZoneMgrImpl* This = (ZoneMgrImpl*)iface;
     ULONG refCount = InterlockedDecrement(&This->ref);
@@ -796,7 +805,7 @@ static ULONG WINAPI ZoneMgrImpl_Release(IInternetZoneManager* iface)
 /********************************************************************
  *      IInternetZoneManager_GetZoneAttributes
  */
-static HRESULT WINAPI ZoneMgrImpl_GetZoneAttributes(IInternetZoneManager* iface,
+static HRESULT WINAPI ZoneMgrImpl_GetZoneAttributes(IInternetZoneManagerEx2* iface,
                                                     DWORD dwZone,
                                                     ZONEATTRIBUTES* pZoneAttributes)
 {
@@ -834,7 +843,7 @@ static HRESULT WINAPI ZoneMgrImpl_GetZoneAttributes(IInternetZoneManager* iface,
 /********************************************************************
  *      IInternetZoneManager_SetZoneAttributes
  */
-static HRESULT WINAPI ZoneMgrImpl_SetZoneAttributes(IInternetZoneManager* iface,
+static HRESULT WINAPI ZoneMgrImpl_SetZoneAttributes(IInternetZoneManagerEx2* iface,
                                                     DWORD dwZone,
                                                     ZONEATTRIBUTES* pZoneAttributes)
 {
@@ -845,7 +854,7 @@ static HRESULT WINAPI ZoneMgrImpl_SetZoneAttributes(IInternetZoneManager* iface,
 /********************************************************************
  *      IInternetZoneManager_GetZoneCustomPolicy
  */
-static HRESULT WINAPI ZoneMgrImpl_GetZoneCustomPolicy(IInternetZoneManager* iface,
+static HRESULT WINAPI ZoneMgrImpl_GetZoneCustomPolicy(IInternetZoneManagerEx2* iface,
                                                       DWORD dwZone,
                                                       REFGUID guidKey,
                                                       BYTE** ppPolicy,
@@ -860,7 +869,7 @@ static HRESULT WINAPI ZoneMgrImpl_GetZoneCustomPolicy(IInternetZoneManager* ifac
 /********************************************************************
  *      IInternetZoneManager_SetZoneCustomPolicy
  */
-static HRESULT WINAPI ZoneMgrImpl_SetZoneCustomPolicy(IInternetZoneManager* iface,
+static HRESULT WINAPI ZoneMgrImpl_SetZoneCustomPolicy(IInternetZoneManagerEx2* iface,
                                                       DWORD dwZone,
                                                       REFGUID guidKey,
                                                       BYTE* ppPolicy,
@@ -875,7 +884,7 @@ static HRESULT WINAPI ZoneMgrImpl_SetZoneCustomPolicy(IInternetZoneManager* ifac
 /********************************************************************
  *      IInternetZoneManager_GetZoneActionPolicy
  */
-static HRESULT WINAPI ZoneMgrImpl_GetZoneActionPolicy(IInternetZoneManager* iface,
+static HRESULT WINAPI ZoneMgrImpl_GetZoneActionPolicy(IInternetZoneManagerEx2* iface,
         DWORD dwZone, DWORD dwAction, BYTE* pPolicy, DWORD cbPolicy, URLZONEREG urlZoneReg)
 {
     TRACE("(%p)->(%d %08x %p %d %d)\n", iface, dwZone, dwAction, pPolicy,
@@ -890,7 +899,7 @@ static HRESULT WINAPI ZoneMgrImpl_GetZoneActionPolicy(IInternetZoneManager* ifac
 /********************************************************************
  *      IInternetZoneManager_SetZoneActionPolicy
  */
-static HRESULT WINAPI ZoneMgrImpl_SetZoneActionPolicy(IInternetZoneManager* iface,
+static HRESULT WINAPI ZoneMgrImpl_SetZoneActionPolicy(IInternetZoneManagerEx2* iface,
                                                       DWORD dwZone,
                                                       DWORD dwAction,
                                                       BYTE* pPolicy,
@@ -905,7 +914,7 @@ static HRESULT WINAPI ZoneMgrImpl_SetZoneActionPolicy(IInternetZoneManager* ifac
 /********************************************************************
  *      IInternetZoneManager_PromptAction
  */
-static HRESULT WINAPI ZoneMgrImpl_PromptAction(IInternetZoneManager* iface,
+static HRESULT WINAPI ZoneMgrImpl_PromptAction(IInternetZoneManagerEx2* iface,
                                                DWORD dwAction,
                                                HWND hwndParent,
                                                LPCWSTR pwszUrl,
@@ -920,7 +929,7 @@ static HRESULT WINAPI ZoneMgrImpl_PromptAction(IInternetZoneManager* iface,
 /********************************************************************
  *      IInternetZoneManager_LogAction
  */
-static HRESULT WINAPI ZoneMgrImpl_LogAction(IInternetZoneManager* iface,
+static HRESULT WINAPI ZoneMgrImpl_LogAction(IInternetZoneManagerEx2* iface,
                                             DWORD dwAction,
                                             LPCWSTR pwszUrl,
                                             LPCWSTR pwszText,
@@ -934,7 +943,7 @@ static HRESULT WINAPI ZoneMgrImpl_LogAction(IInternetZoneManager* iface,
 /********************************************************************
  *      IInternetZoneManager_CreateZoneEnumerator
  */
-static HRESULT WINAPI ZoneMgrImpl_CreateZoneEnumerator(IInternetZoneManager* iface,
+static HRESULT WINAPI ZoneMgrImpl_CreateZoneEnumerator(IInternetZoneManagerEx2* iface,
                                                        DWORD* pdwEnum,
                                                        DWORD* pdwCount,
                                                        DWORD dwFlags)
@@ -989,7 +998,7 @@ static HRESULT WINAPI ZoneMgrImpl_CreateZoneEnumerator(IInternetZoneManager* ifa
 /********************************************************************
  *      IInternetZoneManager_GetZoneAt
  */
-static HRESULT WINAPI ZoneMgrImpl_GetZoneAt(IInternetZoneManager* iface,
+static HRESULT WINAPI ZoneMgrImpl_GetZoneAt(IInternetZoneManagerEx2* iface,
                                             DWORD dwEnum,
                                             DWORD dwIndex,
                                             DWORD* pdwZone)
@@ -1014,7 +1023,7 @@ static HRESULT WINAPI ZoneMgrImpl_GetZoneAt(IInternetZoneManager* iface,
 /********************************************************************
  *      IInternetZoneManager_DestroyZoneEnumerator
  */
-static HRESULT WINAPI ZoneMgrImpl_DestroyZoneEnumerator(IInternetZoneManager* iface,
+static HRESULT WINAPI ZoneMgrImpl_DestroyZoneEnumerator(IInternetZoneManagerEx2* iface,
                                                         DWORD dwEnum)
 {
     ZoneMgrImpl* This = (ZoneMgrImpl*)iface;
@@ -1035,7 +1044,7 @@ static HRESULT WINAPI ZoneMgrImpl_DestroyZoneEnumerator(IInternetZoneManager* if
 /********************************************************************
  *      IInternetZoneManager_CopyTemplatePoliciesToZone
  */
-static HRESULT WINAPI ZoneMgrImpl_CopyTemplatePoliciesToZone(IInternetZoneManager* iface,
+static HRESULT WINAPI ZoneMgrImpl_CopyTemplatePoliciesToZone(IInternetZoneManagerEx2* iface,
                                                              DWORD dwTemplate,
                                                              DWORD dwZone,
                                                              DWORD dwReserved)
@@ -1045,12 +1054,118 @@ static HRESULT WINAPI ZoneMgrImpl_CopyTemplatePoliciesToZone(IInternetZoneManage
 }
 
 /********************************************************************
+ *      IInternetZoneManagerEx_GetZoneActionPolicyEx
+ */
+static HRESULT WINAPI ZoneMgrImpl_GetZoneActionPolicyEx(IInternetZoneManagerEx2* iface,
+                                                        DWORD dwZone,
+                                                        DWORD dwAction,
+                                                        BYTE* pPolicy,
+                                                        DWORD cbPolicy,
+                                                        URLZONEREG urlZoneReg,
+                                                        DWORD dwFlags)
+{
+    TRACE("(%p)->(%d, 0x%x, %p, %d, %d, 0x%x)\n", iface, dwZone,
+            dwAction, pPolicy, cbPolicy, urlZoneReg, dwFlags);
+
+    if(!pPolicy)
+        return E_INVALIDARG;
+
+    if (dwFlags)
+        FIXME("dwFlags 0x%x ignored\n", dwFlags);
+
+    return get_action_policy(dwZone, dwAction, pPolicy, cbPolicy, urlZoneReg);
+}
+
+/********************************************************************
+ *      IInternetZoneManagerEx_SetZoneActionPolicyEx
+ */
+static HRESULT WINAPI ZoneMgrImpl_SetZoneActionPolicyEx(IInternetZoneManagerEx2* iface,
+                                                        DWORD dwZone,
+                                                        DWORD dwAction,
+                                                        BYTE* pPolicy,
+                                                        DWORD cbPolicy,
+                                                        URLZONEREG urlZoneReg,
+                                                        DWORD dwFlags)
+{
+    FIXME("(%p)->(%d, 0x%x, %p, %d, %d, 0x%x) stub\n", iface, dwZone, dwAction, pPolicy,
+                                                       cbPolicy, urlZoneReg, dwFlags);
+    return E_NOTIMPL;
+}
+
+/********************************************************************
+ *      IInternetZoneManagerEx2_GetZoneAttributesEx
+ */
+static HRESULT WINAPI ZoneMgrImpl_GetZoneAttributesEx(IInternetZoneManagerEx2* iface,
+                                                      DWORD dwZone,
+                                                      ZONEATTRIBUTES* pZoneAttributes,
+                                                      DWORD dwFlags)
+{
+    TRACE("(%p)->(%d, %p, 0x%x)\n", iface, dwZone, pZoneAttributes, dwFlags);
+
+    if (dwFlags)
+        FIXME("dwFlags 0x%x ignored\n", dwFlags);
+
+    return IInternetZoneManager_GetZoneAttributes(iface, dwZone, pZoneAttributes);
+}
+
+
+/********************************************************************
+ *      IInternetZoneManagerEx2_GetZoneSecurityState
+ */
+static HRESULT WINAPI ZoneMgrImpl_GetZoneSecurityState(IInternetZoneManagerEx2* iface,
+                                                       DWORD dwZoneIndex,
+                                                       BOOL fRespectPolicy,
+                                                       LPDWORD pdwState,
+                                                       BOOL *pfPolicyEncountered)
+{
+    FIXME("(%p)->(%d, %d, %p, %p) stub\n", iface, dwZoneIndex, fRespectPolicy,
+                                           pdwState, pfPolicyEncountered);
+
+    *pdwState = SECURITY_IE_STATE_GREEN;
+
+    if (pfPolicyEncountered)
+        *pfPolicyEncountered = FALSE;
+
+    return S_OK;
+}
+
+/********************************************************************
+ *      IInternetZoneManagerEx2_GetIESecurityState
+ */
+static HRESULT WINAPI ZoneMgrImpl_GetIESecurityState(IInternetZoneManagerEx2* iface,
+                                                     BOOL fRespectPolicy,
+                                                     LPDWORD pdwState,
+                                                     BOOL *pfPolicyEncountered,
+                                                     BOOL fNoCache)
+{
+    FIXME("(%p)->(%d, %p, %p, %d) stub\n", iface, fRespectPolicy, pdwState,
+                                           pfPolicyEncountered, fNoCache);
+
+    *pdwState = SECURITY_IE_STATE_GREEN;
+
+    if (pfPolicyEncountered)
+        *pfPolicyEncountered = FALSE;
+
+    return S_OK;
+}
+
+/********************************************************************
+ *      IInternetZoneManagerEx2_FixInsecureSettings
+ */
+static HRESULT WINAPI ZoneMgrImpl_FixInsecureSettings(IInternetZoneManagerEx2* iface)
+{
+    FIXME("(%p) stub\n", iface);
+    return S_OK;
+}
+
+/********************************************************************
  *      IInternetZoneManager_Construct
  */
-static const IInternetZoneManagerVtbl ZoneMgrImplVtbl = {
+static const IInternetZoneManagerEx2Vtbl ZoneMgrImplVtbl = {
     ZoneMgrImpl_QueryInterface,
     ZoneMgrImpl_AddRef,
     ZoneMgrImpl_Release,
+    /* IInternetZoneManager */
     ZoneMgrImpl_GetZoneAttributes,
     ZoneMgrImpl_SetZoneAttributes,
     ZoneMgrImpl_GetZoneCustomPolicy,
@@ -1063,6 +1178,14 @@ static const IInternetZoneManagerVtbl ZoneMgrImplVtbl = {
     ZoneMgrImpl_GetZoneAt,
     ZoneMgrImpl_DestroyZoneEnumerator,
     ZoneMgrImpl_CopyTemplatePoliciesToZone,
+    /* IInternetZoneManagerEx */
+    ZoneMgrImpl_GetZoneActionPolicyEx,
+    ZoneMgrImpl_SetZoneActionPolicyEx,
+    /* IInternetZoneManagerEx2 */
+    ZoneMgrImpl_GetZoneAttributesEx,
+    ZoneMgrImpl_GetZoneSecurityState,
+    ZoneMgrImpl_GetIESecurityState,
+    ZoneMgrImpl_FixInsecureSettings,
 };
 
 HRESULT ZoneMgrImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj)
@@ -1072,7 +1195,7 @@ HRESULT ZoneMgrImpl_Construct(IUnknown *pUnkOuter, LPVOID *ppobj)
     TRACE("(%p %p)\n", pUnkOuter, ppobj);
     ret->lpVtbl = &ZoneMgrImplVtbl;
     ret->ref = 1;
-    *ppobj = (IInternetZoneManager*)ret;
+    *ppobj = (IInternetZoneManagerEx*)ret;
 
     URLMON_LockModule();
 
-- 
1.5.4.3


--=-aLJQFke1XAol5rc7Lf7d--




More information about the wine-patches mailing list