Jacek Caban : vbscript: Added SetInterfaceSafetyOptions implementation.

Alexandre Julliard julliard at winehq.org
Fri Sep 2 13:13:37 CDT 2011


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Sep  2 13:16:00 2011 +0200

vbscript: Added SetInterfaceSafetyOptions implementation.

---

 dlls/vbscript/vbscript.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/dlls/vbscript/vbscript.c b/dlls/vbscript/vbscript.c
index 3f963a3..70b35f2 100644
--- a/dlls/vbscript/vbscript.c
+++ b/dlls/vbscript/vbscript.c
@@ -53,6 +53,7 @@ struct VBScript {
 
     LONG ref;
 
+    DWORD safeopt;
     SCRIPTSTATE state;
     IActiveScriptSite *site;
     script_ctx_t *ctx;
@@ -431,6 +432,8 @@ static ULONG WINAPI VBScriptSafety_Release(IObjectSafety *iface)
     return IActiveScript_Release(&This->IActiveScript_iface);
 }
 
+#define SUPPORTED_OPTIONS (INTERFACESAFE_FOR_UNTRUSTED_DATA|INTERFACE_USES_DISPEX|INTERFACE_USES_SECURITY_MANAGER)
+
 static HRESULT WINAPI VBScriptSafety_GetInterfaceSafetyOptions(IObjectSafety *iface, REFIID riid,
         DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions)
 {
@@ -443,8 +446,14 @@ static HRESULT WINAPI VBScriptSafety_SetInterfaceSafetyOptions(IObjectSafety *if
         DWORD dwOptionSetMask, DWORD dwEnabledOptions)
 {
     VBScript *This = impl_from_IObjectSafety(iface);
-    FIXME("(%p)->(%s %x %x)\n", This, debugstr_guid(riid), dwOptionSetMask, dwEnabledOptions);
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%s %x %x)\n", This, debugstr_guid(riid), dwOptionSetMask, dwEnabledOptions);
+
+    if(dwOptionSetMask & ~SUPPORTED_OPTIONS)
+        return E_FAIL;
+
+    This->safeopt = (dwEnabledOptions & dwOptionSetMask) | (This->safeopt & ~dwOptionSetMask) | INTERFACE_USES_DISPEX;
+    return S_OK;
 }
 
 static const IObjectSafetyVtbl VBScriptSafetyVtbl = {
@@ -472,6 +481,7 @@ HRESULT WINAPI VBScriptFactory_CreateInstance(IClassFactory *iface, IUnknown *pU
 
     ret->ref = 1;
     ret->state = SCRIPTSTATE_UNINITIALIZED;
+    ret->safeopt = INTERFACE_USES_DISPEX;
 
     hres = IActiveScript_QueryInterface(&ret->IActiveScript_iface, riid, ppv);
     IActiveScript_Release(&ret->IActiveScript_iface);




More information about the wine-cvs mailing list