Gijs Vermeulen : msscript: Implement IScriptControl_[get|put] _UseSafeSubset.
Alexandre Julliard
julliard at winehq.org
Fri Mar 16 13:53:07 CDT 2018
Module: wine
Branch: master
Commit: 0b4688e198be2e14d91f8b82c8269374d785eb22
URL: https://source.winehq.org/git/wine.git/?a=commit;h=0b4688e198be2e14d91f8b82c8269374d785eb22
Author: Gijs Vermeulen <gijsvrm at gmail.com>
Date: Thu Mar 15 21:28:40 2018 +0100
msscript: Implement IScriptControl_[get|put]_UseSafeSubset.
Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/msscript.ocx/msscript.c | 19 ++++++++++++++-----
dlls/msscript.ocx/tests/msscript.c | 38 ++++++++++++++++++++++++++++++++++++++
2 files changed, 52 insertions(+), 5 deletions(-)
diff --git a/dlls/msscript.ocx/msscript.c b/dlls/msscript.ocx/msscript.c
index e8cde9d..a020dd2 100644
--- a/dlls/msscript.ocx/msscript.c
+++ b/dlls/msscript.ocx/msscript.c
@@ -90,6 +90,7 @@ struct ScriptControl {
SIZEL extent;
LONG timeout;
VARIANT_BOOL allow_ui;
+ VARIANT_BOOL use_safe_subset;
/* connection points */
ConnectionPoint *cp_list;
@@ -838,15 +839,22 @@ static HRESULT WINAPI ScriptControl_put_AllowUI(IScriptControl *iface, VARIANT_B
static HRESULT WINAPI ScriptControl_get_UseSafeSubset(IScriptControl *iface, VARIANT_BOOL *p)
{
ScriptControl *This = impl_from_IScriptControl(iface);
- FIXME("(%p)->(%p)\n", This, p);
- return E_NOTIMPL;
+ TRACE("(%p)->(%p)\n", This, p);
+
+ if(!p)
+ return E_POINTER;
+
+ *p = This->use_safe_subset;
+ return S_OK;
}
-static HRESULT WINAPI ScriptControl_put_UseSafeSubset(IScriptControl *iface, VARIANT_BOOL v)
+static HRESULT WINAPI ScriptControl_put_UseSafeSubset(IScriptControl *iface, VARIANT_BOOL use_safe_subset)
{
ScriptControl *This = impl_from_IScriptControl(iface);
- FIXME("(%p)->(%x)\n", This, v);
- return E_NOTIMPL;
+ TRACE("(%p)->(%x)\n", This, use_safe_subset);
+
+ This->use_safe_subset = use_safe_subset;
+ return S_OK;
}
static HRESULT WINAPI ScriptControl_get_Modules(IScriptControl *iface, IScriptModuleCollection **p)
@@ -1891,6 +1899,7 @@ static HRESULT WINAPI ScriptControl_CreateInstance(IClassFactory *iface, IUnknow
script_control->view_sink_flags = 0;
script_control->view_sink = NULL;
script_control->allow_ui = VARIANT_TRUE;
+ script_control->use_safe_subset = VARIANT_FALSE;
ConnectionPoint_Init(&script_control->cp_scsource, script_control, &DIID_DScriptControlSource);
ConnectionPoint_Init(&script_control->cp_propnotif, script_control, &IID_IPropertyNotifySink);
diff --git a/dlls/msscript.ocx/tests/msscript.c b/dlls/msscript.ocx/tests/msscript.c
index 576a6b1..f6630c3 100644
--- a/dlls/msscript.ocx/tests/msscript.c
+++ b/dlls/msscript.ocx/tests/msscript.c
@@ -1254,6 +1254,43 @@ static void test_AllowUI(void)
IScriptControl_Release(sc);
}
+static void test_UseSafeSubset(void)
+{
+ IScriptControl *sc;
+ VARIANT_BOOL use_safe_subset;
+ HRESULT hr;
+ BSTR str;
+
+ hr = CoCreateInstance(&CLSID_ScriptControl, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
+ &IID_IScriptControl, (void**)&sc);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ hr = IScriptControl_get_UseSafeSubset(sc, NULL);
+ ok(hr == E_POINTER, "got 0x%08x\n", hr);
+
+ hr = IScriptControl_get_UseSafeSubset(sc, &use_safe_subset);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(use_safe_subset == VARIANT_FALSE, "got %d\n", use_safe_subset);
+
+ hr = IScriptControl_put_UseSafeSubset(sc, VARIANT_TRUE);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ hr = IScriptControl_get_UseSafeSubset(sc, &use_safe_subset);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(use_safe_subset == VARIANT_TRUE, "got %d\n", use_safe_subset);
+
+ str = SysAllocString(vbW);
+ hr = IScriptControl_put_Language(sc, str);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ SysFreeString(str);
+
+ hr = IScriptControl_get_UseSafeSubset(sc, &use_safe_subset);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(use_safe_subset == VARIANT_TRUE, "got %d\n", use_safe_subset);
+
+ IScriptControl_Release(sc);
+}
+
START_TEST(msscript)
{
IUnknown *unk;
@@ -1281,6 +1318,7 @@ START_TEST(msscript)
test_Reset();
test_AddObject();
test_AllowUI();
+ test_UseSafeSubset();
CoUninitialize();
}
More information about the wine-cvs
mailing list