Jacek Caban : vbscript: Support changing script state to SCRIPTSTATE_INITIALIZED.
Alexandre Julliard
julliard at winehq.org
Tue Nov 5 16:11:44 CST 2019
Module: wine
Branch: master
Commit: 9e2700b2fc04dc4c7cfafc671d820d9ea83d52b1
URL: https://source.winehq.org/git/wine.git/?a=commit;h=9e2700b2fc04dc4c7cfafc671d820d9ea83d52b1
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Nov 5 14:08:22 2019 +0100
vbscript: Support changing script state to SCRIPTSTATE_INITIALIZED.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/vbscript/tests/vbscript.c | 29 +++++++++++++++++++++++++++++
dlls/vbscript/vbscript.c | 9 ++++-----
2 files changed, 33 insertions(+), 5 deletions(-)
diff --git a/dlls/vbscript/tests/vbscript.c b/dlls/vbscript/tests/vbscript.c
index fd769cc280..c0a582c361 100644
--- a/dlls/vbscript/tests/vbscript.c
+++ b/dlls/vbscript/tests/vbscript.c
@@ -796,6 +796,35 @@ static void test_vbscript_uninitializing(void)
test_state(script, SCRIPTSTATE_INITIALIZED);
+ SET_EXPECT(OnStateChange_STARTED);
+ hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_STARTED);
+ ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_UNINITIALIZED) failed: %08x\n", hres);
+ CHECK_CALLED(OnStateChange_STARTED);
+
+ SET_EXPECT(OnStateChange_INITIALIZED);
+ hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_INITIALIZED);
+ ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_UNINITIALIZED) failed: %08x\n", hres);
+ CHECK_CALLED(OnStateChange_INITIALIZED);
+
+ hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_INITIALIZED);
+ ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_UNINITIALIZED) failed: %08x\n", hres);
+
+ SET_EXPECT(OnStateChange_CLOSED);
+ hres = IActiveScript_Close(script);
+ ok(hres == S_OK, "Close failed: %08x\n", hres);
+ CHECK_CALLED(OnStateChange_CLOSED);
+
+ test_state(script, SCRIPTSTATE_CLOSED);
+
+ SET_EXPECT(GetLCID);
+ SET_EXPECT(OnStateChange_INITIALIZED);
+ hres = IActiveScript_SetScriptSite(script, &ActiveScriptSite);
+ ok(hres == S_OK, "SetScriptSite failed: %08x\n", hres);
+ CHECK_CALLED(GetLCID);
+ CHECK_CALLED(OnStateChange_INITIALIZED);
+
+ test_state(script, SCRIPTSTATE_INITIALIZED);
+
SET_EXPECT(OnStateChange_CLOSED);
hres = IActiveScript_Close(script);
ok(hres == S_OK, "Close failed: %08x\n", hres);
diff --git a/dlls/vbscript/vbscript.c b/dlls/vbscript/vbscript.c
index ebd100f4e5..886c9d01af 100644
--- a/dlls/vbscript/vbscript.c
+++ b/dlls/vbscript/vbscript.c
@@ -207,14 +207,13 @@ static void decrease_state(VBScript *This, SCRIPTSTATE state)
/* FALLTHROUGH */
case SCRIPTSTATE_STARTED:
case SCRIPTSTATE_DISCONNECTED:
- if(This->state == SCRIPTSTATE_DISCONNECTED)
- change_state(This, SCRIPTSTATE_INITIALIZED);
- if(state == SCRIPTSTATE_INITIALIZED)
- break;
+ change_state(This, SCRIPTSTATE_INITIALIZED);
/* FALLTHROUGH */
case SCRIPTSTATE_INITIALIZED:
case SCRIPTSTATE_UNINITIALIZED:
change_state(This, state);
+ if(state == SCRIPTSTATE_INITIALIZED)
+ break;
release_script(This->ctx);
This->thread_id = 0;
break;
@@ -469,7 +468,7 @@ static HRESULT WINAPI VBScript_SetScriptState(IActiveScript *iface, SCRIPTSTATE
exec_queued_code(This->ctx);
break;
case SCRIPTSTATE_INITIALIZED:
- FIXME("unimplemented SCRIPTSTATE_INITIALIZED\n");
+ decrease_state(This, SCRIPTSTATE_INITIALIZED);
return S_OK;
case SCRIPTSTATE_DISCONNECTED:
FIXME("unimplemented SCRIPTSTATE_DISCONNECTED\n");
More information about the wine-cvs
mailing list