Piotr Caban : urlmon: Added partial CoInternetIsFeatureEnabledForUrl implementation.

Alexandre Julliard julliard at winehq.org
Mon Sep 19 13:48:42 CDT 2011


Module: wine
Branch: master
Commit: da55a13c0e7c3116f5ea47f95af81660bde20e48
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=da55a13c0e7c3116f5ea47f95af81660bde20e48

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Sep 19 10:55:15 2011 +0200

urlmon: Added partial CoInternetIsFeatureEnabledForUrl implementation.

---

 dlls/urlmon/internet.c |   43 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/dlls/urlmon/internet.c b/dlls/urlmon/internet.c
index 06a423a..72830f5 100644
--- a/dlls/urlmon/internet.c
+++ b/dlls/urlmon/internet.c
@@ -700,6 +700,45 @@ HRESULT WINAPI CoInternetIsFeatureEnabled(INTERNETFEATURELIST FeatureEntry, DWOR
 HRESULT WINAPI CoInternetIsFeatureEnabledForUrl(INTERNETFEATURELIST FeatureEntry, DWORD dwFlags, LPCWSTR szURL,
         IInternetSecurityManager *pSecMgr)
 {
-    FIXME("(%d %08x %s %p)\n", FeatureEntry, dwFlags, debugstr_w(szURL), pSecMgr);
-    return E_NOTIMPL;
+    DWORD urlaction = 0;
+    HRESULT hres;
+
+    TRACE("(%d %08x %s %p)\n", FeatureEntry, dwFlags, debugstr_w(szURL), pSecMgr);
+
+    if(FeatureEntry == FEATURE_MIME_SNIFFING)
+        urlaction = URLACTION_FEATURE_MIME_SNIFFING;
+    else if(FeatureEntry == FEATURE_WINDOW_RESTRICTIONS)
+        urlaction = URLACTION_FEATURE_WINDOW_RESTRICTIONS;
+    else if(FeatureEntry == FEATURE_ZONE_ELEVATION)
+        urlaction = URLACTION_FEATURE_ZONE_ELEVATION;
+
+    if(!szURL || !urlaction || !pSecMgr)
+        return CoInternetIsFeatureEnabled(FeatureEntry, dwFlags);
+
+    switch(dwFlags) {
+    case GET_FEATURE_FROM_THREAD:
+    case GET_FEATURE_FROM_THREAD_LOCALMACHINE:
+    case GET_FEATURE_FROM_THREAD_INTRANET:
+    case GET_FEATURE_FROM_THREAD_TRUSTED:
+    case GET_FEATURE_FROM_THREAD_INTERNET:
+    case GET_FEATURE_FROM_THREAD_RESTRICTED:
+        FIXME("unsupported flags %x\n", dwFlags);
+        return E_NOTIMPL;
+
+    case GET_FEATURE_FROM_PROCESS:
+        hres = CoInternetIsFeatureEnabled(FeatureEntry, dwFlags);
+        if(hres != S_OK)
+            return hres;
+        /* fall through */
+
+    default: {
+        DWORD policy = URLPOLICY_DISALLOW;
+
+        hres = IInternetSecurityManager_ProcessUrlAction(pSecMgr, szURL, urlaction,
+                (BYTE*)&policy, sizeof(DWORD), NULL, 0, PUAF_NOUI, 0);
+        if(hres!=S_OK || policy!=URLPOLICY_ALLOW)
+            return S_OK;
+        return S_FALSE;
+    }
+    }
 }




More information about the wine-cvs mailing list