Module: wine Branch: master Commit: c21c8525f9e69cfd48906ecc33b909490bd82783 URL: https://source.winehq.org/git/wine.git/?a=commit;h=c21c8525f9e69cfd48906ecc3...
Author: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Mon Mar 12 22:08:09 2018 +0000
msscript: Implement IScriptControl get/set AllowUI.
Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msscript.ocx/msscript.c | 17 +++++++++++++---- dlls/msscript.ocx/tests/msscript.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 4 deletions(-)
diff --git a/dlls/msscript.ocx/msscript.c b/dlls/msscript.ocx/msscript.c index 1f706f5..e8cde9d 100644 --- a/dlls/msscript.ocx/msscript.c +++ b/dlls/msscript.ocx/msscript.c @@ -89,6 +89,7 @@ struct ScriptControl { IOleClientSite *site; SIZEL extent; LONG timeout; + VARIANT_BOOL allow_ui;
/* connection points */ ConnectionPoint *cp_list; @@ -816,15 +817,22 @@ static HRESULT WINAPI ScriptControl_put_Timeout(IScriptControl *iface, LONG time static HRESULT WINAPI ScriptControl_get_AllowUI(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->allow_ui; + return S_OK; }
static HRESULT WINAPI ScriptControl_put_AllowUI(IScriptControl *iface, VARIANT_BOOL allow_ui) { ScriptControl *This = impl_from_IScriptControl(iface); - FIXME("(%p)->(%x)\n", This, allow_ui); - return E_NOTIMPL; + TRACE("(%p)->(%x)\n", This, allow_ui); + + This->allow_ui = allow_ui; + return S_OK; }
static HRESULT WINAPI ScriptControl_get_UseSafeSubset(IScriptControl *iface, VARIANT_BOOL *p) @@ -1882,6 +1890,7 @@ static HRESULT WINAPI ScriptControl_CreateInstance(IClassFactory *iface, IUnknow script_control->timeout = 10000; script_control->view_sink_flags = 0; script_control->view_sink = NULL; + script_control->allow_ui = VARIANT_TRUE;
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 66e2611..576a6b1 100644 --- a/dlls/msscript.ocx/tests/msscript.c +++ b/dlls/msscript.ocx/tests/msscript.c @@ -1227,6 +1227,33 @@ static void test_AddObject(void) SysFreeString(objname); }
+static void test_AllowUI(void) +{ + IScriptControl *sc; + VARIANT_BOOL allow; + HRESULT hr; + + 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_AllowUI(sc, NULL); + ok(hr == E_POINTER, "got 0x%08x\n", hr); + + hr = IScriptControl_get_AllowUI(sc, &allow); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(allow == VARIANT_TRUE, "got %d\n", allow); + + hr = IScriptControl_put_AllowUI(sc, VARIANT_FALSE); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IScriptControl_get_AllowUI(sc, &allow); + ok(hr == S_OK, "got 0x%08x\n", hr); + ok(allow == VARIANT_FALSE, "got %d\n", allow); + + IScriptControl_Release(sc); +} + START_TEST(msscript) { IUnknown *unk; @@ -1253,6 +1280,7 @@ START_TEST(msscript) test_timeout(); test_Reset(); test_AddObject(); + test_AllowUI();
CoUninitialize(); }