Nikolay Sivov : msscript: Implement Timeout property.
Alexandre Julliard
julliard at winehq.org
Tue Jul 19 10:34:21 CDT 2016
Module: wine
Branch: master
Commit: 37757d5e6c263bf37db83a7d7dcf7be4ee68a1c7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=37757d5e6c263bf37db83a7d7dcf7be4ee68a1c7
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Mon Jul 18 22:46:37 2016 +0300
msscript: Implement Timeout property.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/msscript.ocx/msscript.c | 27 ++++++++++++++---
dlls/msscript.ocx/tests/msscript.c | 62 +++++++++++++++++++++++++++++++++++++-
2 files changed, 83 insertions(+), 6 deletions(-)
diff --git a/dlls/msscript.ocx/msscript.c b/dlls/msscript.ocx/msscript.c
index 4a1b378..319f901 100644
--- a/dlls/msscript.ocx/msscript.c
+++ b/dlls/msscript.ocx/msscript.c
@@ -76,6 +76,7 @@ struct ScriptControl {
LONG ref;
IOleClientSite *site;
SIZEL extent;
+ LONG timeout;
/* connection points */
ConnectionPoint *cp_list;
@@ -642,15 +643,30 @@ static HRESULT WINAPI ScriptControl_get_SitehWnd(IScriptControl *iface, LONG *p)
static HRESULT WINAPI ScriptControl_get_Timeout(IScriptControl *iface, LONG *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->timeout;
+ return S_OK;
}
-static HRESULT WINAPI ScriptControl_put_Timeout(IScriptControl *iface, LONG milliseconds)
+static HRESULT WINAPI ScriptControl_put_Timeout(IScriptControl *iface, LONG timeout)
{
ScriptControl *This = impl_from_IScriptControl(iface);
- FIXME("(%p)->(%d)\n", This, milliseconds);
- return E_NOTIMPL;
+
+ TRACE("(%p)->(%d)\n", This, timeout);
+
+ if (timeout < -1)
+ return CTL_E_INVALIDPROPERTYVALUE;
+
+ if (timeout != -1)
+ FIXME("execution timeout ignored\n");
+
+ This->timeout = timeout;
+ return S_OK;
}
static HRESULT WINAPI ScriptControl_get_AllowUI(IScriptControl *iface, VARIANT_BOOL *p)
@@ -1659,6 +1675,7 @@ static HRESULT WINAPI ScriptControl_CreateInstance(IClassFactory *iface, IUnknow
script_control->site = NULL;
script_control->cp_list = NULL;
script_control->host = NULL;
+ script_control->timeout = 10000;
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 0768174..427d0ca 100644
--- a/dlls/msscript.ocx/tests/msscript.c
+++ b/dlls/msscript.ocx/tests/msscript.c
@@ -33,6 +33,7 @@
#define TESTSCRIPT_CLSID "{178fc164-f585-4e24-9c13-4bb7faf80746}"
static const GUID CLSID_TestScript =
{0x178fc164,0xf585,0x4e24,{0x9c,0x13,0x4b,0xb7,0xfa,0xf8,0x07,0x46}};
+static const WCHAR vbW[] = {'V','B','S','c','r','i','p','t',0};
#ifdef _WIN64
@@ -672,7 +673,6 @@ static void test_olecontrol(void)
static void test_Language(void)
{
- static const WCHAR vbW[] = {'V','B','S','c','r','i','p','t',0};
static const WCHAR jsW[] = {'J','S','c','r','i','p','t',0};
static const WCHAR vb2W[] = {'v','B','s','c','r','i','p','t',0};
static const WCHAR dummyW[] = {'d','u','m','m','y',0};
@@ -920,6 +920,65 @@ static void test_pointerinactive(void)
IScriptControl_Release(sc);
}
+static void test_timeout(void)
+{
+ IScriptControl *sc;
+ HRESULT hr;
+ LONG val;
+ 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_Timeout(sc, NULL);
+ ok(hr == E_POINTER, "got 0x%08x\n", hr);
+
+ val = 0;
+ hr = IScriptControl_get_Timeout(sc, &val);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(val == 10000, "got %d\n", val);
+
+ hr = IScriptControl_put_Timeout(sc, -1);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ val = 0;
+ hr = IScriptControl_get_Timeout(sc, &val);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(val == -1, "got %d\n", val);
+
+ hr = IScriptControl_put_Timeout(sc, -2);
+ ok(hr == CTL_E_INVALIDPROPERTYVALUE, "got 0x%08x\n", hr);
+
+ val = 0;
+ hr = IScriptControl_get_Timeout(sc, &val);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(val == -1, "got %d\n", val);
+
+ hr = IScriptControl_put_Timeout(sc, 0);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ val = 1;
+ hr = IScriptControl_get_Timeout(sc, &val);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(val == 0, "got %d\n", val);
+
+ str = SysAllocString(vbW);
+ hr = IScriptControl_put_Language(sc, str);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ SysFreeString(str);
+
+ val = 1;
+ hr = IScriptControl_get_Timeout(sc, &val);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+ ok(val == 0, "got %d\n", val);
+
+ hr = IScriptControl_put_Timeout(sc, 10000);
+ ok(hr == S_OK, "got 0x%08x\n", hr);
+
+ IScriptControl_Release(sc);
+}
+
START_TEST(msscript)
{
IUnknown *unk;
@@ -943,6 +1002,7 @@ START_TEST(msscript)
test_quickactivate();
test_viewobject();
test_pointerinactive();
+ test_timeout();
CoUninitialize();
}
More information about the wine-cvs
mailing list