Jacek Caban : vbscipt: Added IActiveScript::GetScriptState implementation.

Alexandre Julliard julliard at winehq.org
Wed Aug 31 13:19:21 CDT 2011


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

Author: Jacek Caban <jacek at 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)




More information about the wine-cvs mailing list