Module: wine Branch: master Commit: 4155136edbb93286021bf0745c5fc73e0cab8274 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4155136edbb93286021bf0745c...
Author: Piotr Caban piotr@codeweavers.com Date: Mon Sep 19 10:55:37 2011 +0200
urlmon: Added CoInternetIsFeatureZoneElevationEnabled implementation.
---
dlls/urlmon/internet.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++ dlls/urlmon/urlmon.spec | 1 + 2 files changed, 51 insertions(+), 0 deletions(-)
diff --git a/dlls/urlmon/internet.c b/dlls/urlmon/internet.c index 72830f5..d4a49b5 100644 --- a/dlls/urlmon/internet.c +++ b/dlls/urlmon/internet.c @@ -742,3 +742,53 @@ HRESULT WINAPI CoInternetIsFeatureEnabledForUrl(INTERNETFEATURELIST FeatureEntry } } } + +/*********************************************************************** + * CoInternetIsFeatureZoneElevationEnabled (URLMON.@) + */ +HRESULT WINAPI CoInternetIsFeatureZoneElevationEnabled(LPCWSTR szFromURL, LPCWSTR szToURL, + IInternetSecurityManager *pSecMgr, DWORD dwFlags) +{ + HRESULT hres; + + TRACE("(%s %s %p %x)\n", debugstr_w(szFromURL), debugstr_w(szToURL), pSecMgr, dwFlags); + + if(!pSecMgr || !szToURL) + return CoInternetIsFeatureEnabled(FEATURE_ZONE_ELEVATION, 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(FEATURE_ZONE_ELEVATION, dwFlags); + if(hres != S_OK) + return hres; + /* fall through */ + + default: { + DWORD policy = URLPOLICY_DISALLOW; + + hres = IInternetSecurityManager_ProcessUrlAction(pSecMgr, szToURL, + URLACTION_FEATURE_ZONE_ELEVATION, (BYTE*)&policy, sizeof(DWORD), + NULL, 0, PUAF_NOUI, 0); + if(FAILED(hres)) + return S_OK; + + switch(policy) { + case URLPOLICY_ALLOW: + return S_FALSE; + case URLPOLICY_QUERY: + FIXME("Ask user dialog not implemented\n"); + default: + return S_OK; + } + } + } +} diff --git a/dlls/urlmon/urlmon.spec b/dlls/urlmon/urlmon.spec index 28af3c5..76bf718 100644 --- a/dlls/urlmon/urlmon.spec +++ b/dlls/urlmon/urlmon.spec @@ -22,6 +22,7 @@ @ stdcall CoInternetGetSession(long ptr long) @ stdcall CoInternetIsFeatureEnabled(long long) @ stdcall CoInternetIsFeatureEnabledForUrl(long long wstr ptr) +@ stdcall CoInternetIsFeatureZoneElevationEnabled(wstr wstr ptr long) @ stdcall CoInternetParseUrl(wstr long long wstr long ptr long) @ stdcall CoInternetParseIUri(ptr long long wstr long ptr long) @ stdcall CoInternetQueryInfo(ptr long long ptr long ptr long)