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