Jacek Caban : vbscript: Added SetScriptState implementation.
Alexandre Julliard
julliard at winehq.org
Mon Sep 5 13:26:21 CDT 2011
Module: wine
Branch: master
Commit: 3d3504a6d72cf13ea16dc44d2ccfe01dee92d555
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3d3504a6d72cf13ea16dc44d2ccfe01dee92d555
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Sep 5 11:13:54 2011 +0200
vbscript: Added SetScriptState implementation.
---
dlls/vbscript/tests/vbscript.c | 13 +++++++++++++
dlls/vbscript/vbscript.c | 40 +++++++++++++++++++++++++++++++++++++++-
2 files changed, 52 insertions(+), 1 deletions(-)
diff --git a/dlls/vbscript/tests/vbscript.c b/dlls/vbscript/tests/vbscript.c
index ff167b7..76d90a9 100644
--- a/dlls/vbscript/tests/vbscript.c
+++ b/dlls/vbscript/tests/vbscript.c
@@ -326,9 +326,22 @@ static void test_vbscript(void)
hres = IActiveScriptParse64_InitNew(parser);
ok(hres == E_UNEXPECTED, "InitNew failed: %08x, expected E_UNEXPECTED\n", hres);
+ SET_EXPECT(OnStateChange_CONNECTED);
+ hres = IActiveScript_SetScriptState(vbscript, SCRIPTSTATE_CONNECTED);
+ ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_CONNECTED) failed: %08x\n", hres);
+ CHECK_CALLED(OnStateChange_CONNECTED);
+
+ test_state(vbscript, SCRIPTSTATE_CONNECTED);
+
+ SET_EXPECT(OnStateChange_DISCONNECTED);
+ SET_EXPECT(OnStateChange_INITIALIZED);
SET_EXPECT(OnStateChange_CLOSED);
hres = IActiveScript_Close(vbscript);
ok(hres == S_OK, "Close failed: %08x\n", hres);
+ todo_wine
+ CHECK_CALLED(OnStateChange_DISCONNECTED);
+ todo_wine
+ CHECK_CALLED(OnStateChange_INITIALIZED);
CHECK_CALLED(OnStateChange_CLOSED);
test_state(vbscript, SCRIPTSTATE_CLOSED);
diff --git a/dlls/vbscript/vbscript.c b/dlls/vbscript/vbscript.c
index b50cbd6..08e715a 100644
--- a/dlls/vbscript/vbscript.c
+++ b/dlls/vbscript/vbscript.c
@@ -63,6 +63,11 @@ static void change_state(VBScript *This, SCRIPTSTATE state)
IActiveScriptSite_OnStateChange(This->site, state);
}
+static void exec_queued_code(VBScript *This)
+{
+ FIXME("\n");
+}
+
static HRESULT set_ctx_site(VBScript *This)
{
This->ctx->lcid = This->lcid;
@@ -207,7 +212,40 @@ static HRESULT WINAPI VBScript_GetScriptSite(IActiveScript *iface, REFIID riid,
static HRESULT WINAPI VBScript_SetScriptState(IActiveScript *iface, SCRIPTSTATE ss)
{
VBScript *This = impl_from_IActiveScript(iface);
- FIXME("(%p)->(%d)\n", This, ss);
+
+ TRACE("(%p)->(%d)\n", This, ss);
+
+ if(This->thread_id && GetCurrentThreadId() != This->thread_id)
+ return E_UNEXPECTED;
+
+ if(ss == SCRIPTSTATE_UNINITIALIZED) {
+ if(This->state == SCRIPTSTATE_CLOSED)
+ return E_UNEXPECTED;
+
+ decrease_state(This, SCRIPTSTATE_UNINITIALIZED);
+ return S_OK;
+ }
+
+ if(!This->ctx)
+ return E_UNEXPECTED;
+
+ switch(ss) {
+ case SCRIPTSTATE_STARTED:
+ case SCRIPTSTATE_CONNECTED: /* FIXME */
+ if(This->state == SCRIPTSTATE_CLOSED)
+ return E_UNEXPECTED;
+
+ exec_queued_code(This);
+ break;
+ case SCRIPTSTATE_INITIALIZED:
+ FIXME("unimplemented SCRIPTSTATE_INITIALIZED\n");
+ return S_OK;
+ default:
+ FIXME("unimplemented state %d\n", ss);
+ return E_NOTIMPL;
+ }
+
+ change_state(This, ss);
return S_OK;
}
More information about the wine-cvs
mailing list