Module: wine Branch: master Commit: 9e2700b2fc04dc4c7cfafc671d820d9ea83d52b1 URL: https://source.winehq.org/git/wine.git/?a=commit;h=9e2700b2fc04dc4c7cfafc671...
Author: Jacek Caban jacek@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@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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");