Module: wine Branch: master Commit: 97556eb061d8c6ea6184883e5a5cd00187a76fbd URL: http://source.winehq.org/git/wine.git/?a=commit;h=97556eb061d8c6ea6184883e5a...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Aug 31 11:22:44 2011 +0200
vbscipt: Added IActiveScript::GetScriptState implementation.
---
dlls/vbscript/tests/vbscript.c | 19 +++++++++++++++++++ dlls/vbscript/vbscript.c | 13 +++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/dlls/vbscript/tests/vbscript.c b/dlls/vbscript/tests/vbscript.c index 71b56a5..9d0dbdf 100644 --- a/dlls/vbscript/tests/vbscript.c +++ b/dlls/vbscript/tests/vbscript.c @@ -64,6 +64,17 @@ DEFINE_EXPECT(OnLeaveScript);
DEFINE_GUID(CLSID_VBScript, 0xb54f3741, 0x5b07, 0x11cf, 0xa4,0xb0, 0x00,0xaa,0x00,0x4a,0x55,0xe8);
+#define test_state(s,ss) _test_state(__LINE__,s,ss) +static void _test_state(unsigned line, IActiveScript *script, SCRIPTSTATE exstate) +{ + SCRIPTSTATE state = -1; + HRESULT hres; + + hres = IActiveScript_GetScriptState(script, &state); + ok_(__FILE__,line) (hres == S_OK, "GetScriptState failed: %08x\n", hres); + ok_(__FILE__,line) (state == exstate, "state=%d, expected %d\n", state, exstate); +} + static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface, REFIID riid, void **ppv) { *ppv = NULL; @@ -201,16 +212,22 @@ static void test_vbscript(void) hres = IActiveScript_QueryInterface(vbscript, &IID_IActiveScriptParse, (void**)&parser); ok(hres == S_OK, "Could not get IActiveScriptParse iface: %08x\n", hres);
+ test_state(vbscript, SCRIPTSTATE_UNINITIALIZED); + SET_EXPECT(GetLCID); hres = IActiveScript_SetScriptSite(vbscript, &ActiveScriptSite); ok(hres == S_OK, "SetScriptSite failed: %08x\n", hres); CHECK_CALLED(GetLCID);
+ test_state(vbscript, SCRIPTSTATE_UNINITIALIZED); + SET_EXPECT(OnStateChange_INITIALIZED); hres = IActiveScriptParse64_InitNew(parser); ok(hres == S_OK, "InitNew failed: %08x\n", hres); CHECK_CALLED(OnStateChange_INITIALIZED);
+ test_state(vbscript, SCRIPTSTATE_INITIALIZED); + hres = IActiveScriptParse64_InitNew(parser); ok(hres == E_UNEXPECTED, "InitNew failed: %08x, expected E_UNEXPECTED\n", hres);
@@ -219,6 +236,8 @@ static void test_vbscript(void) ok(hres == S_OK, "Close failed: %08x\n", hres); CHECK_CALLED(OnStateChange_CLOSED);
+ test_state(vbscript, SCRIPTSTATE_CLOSED); + IActiveScriptParse64_Release(parser);
ref = IActiveScript_Release(vbscript); diff --git a/dlls/vbscript/vbscript.c b/dlls/vbscript/vbscript.c index 6160f3b..084337f 100644 --- a/dlls/vbscript/vbscript.c +++ b/dlls/vbscript/vbscript.c @@ -216,8 +216,17 @@ static HRESULT WINAPI VBScript_SetScriptState(IActiveScript *iface, SCRIPTSTATE static HRESULT WINAPI VBScript_GetScriptState(IActiveScript *iface, SCRIPTSTATE *pssState) { VBScript *This = impl_from_IActiveScript(iface); - FIXME("(%p)->(%p)\n", This, pssState); - return E_NOTIMPL; + + TRACE("(%p)->(%p)\n", This, pssState); + + if(!pssState) + return E_POINTER; + + if(This->thread_id && This->thread_id != GetCurrentThreadId()) + return E_UNEXPECTED; + + *pssState = This->state; + return S_OK; }
static HRESULT WINAPI VBScript_Close(IActiveScript *iface)