Jacek Caban : jscript: Added SCRIPTSTATE_CONNECTED implementation.

Alexandre Julliard julliard at winehq.org
Wed Nov 5 09:37:51 CST 2008


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Nov  5 01:03:19 2008 +0100

jscript: Added SCRIPTSTATE_CONNECTED implementation.

---

 dlls/jscript/jscript.c       |   11 +++++++++--
 dlls/jscript/tests/jscript.c |   19 +++++++++++++++++++
 2 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/dlls/jscript/jscript.c b/dlls/jscript/jscript.c
index 938b64e..c4bd890 100644
--- a/dlls/jscript/jscript.c
+++ b/dlls/jscript/jscript.c
@@ -264,6 +264,7 @@ static HRESULT WINAPI JScript_SetScriptState(IActiveScript *iface, SCRIPTSTATE s
 
     switch(ss) {
     case SCRIPTSTATE_STARTED:
+    case SCRIPTSTATE_CONNECTED: /* FIXME */
         if(This->ctx->state == SCRIPTSTATE_CLOSED)
             return E_UNEXPECTED;
 
@@ -308,9 +309,15 @@ static HRESULT WINAPI JScript_Close(IActiveScript *iface)
     if(This->thread_id != GetCurrentThreadId())
         return E_UNEXPECTED;
 
-    clear_script_queue(This);
-
     if(This->ctx) {
+        if(This->ctx->state == SCRIPTSTATE_CONNECTED)
+            change_state(This, SCRIPTSTATE_DISCONNECTED);
+
+        clear_script_queue(This);
+
+        if(This->ctx->state == SCRIPTSTATE_DISCONNECTED)
+            change_state(This, SCRIPTSTATE_INITIALIZED);
+
         if(This->ctx->named_items) {
             named_item_t *iter, *iter2;
 
diff --git a/dlls/jscript/tests/jscript.c b/dlls/jscript/tests/jscript.c
index 35818cc..4cc01c9 100644
--- a/dlls/jscript/tests/jscript.c
+++ b/dlls/jscript/tests/jscript.c
@@ -61,6 +61,8 @@ static const CLSID CLSID_JScript =
 
 DEFINE_EXPECT(GetLCID);
 DEFINE_EXPECT(OnStateChange_STARTED);
+DEFINE_EXPECT(OnStateChange_CONNECTED);
+DEFINE_EXPECT(OnStateChange_DISCONNECTED);
 DEFINE_EXPECT(OnStateChange_CLOSED);
 DEFINE_EXPECT(OnStateChange_INITIALIZED);
 DEFINE_EXPECT(OnEnterScript);
@@ -134,6 +136,12 @@ static HRESULT WINAPI ActiveScriptSite_OnStateChange(IActiveScriptSite *iface, S
     case SCRIPTSTATE_STARTED:
         CHECK_EXPECT(OnStateChange_STARTED);
         return S_OK;
+    case SCRIPTSTATE_CONNECTED:
+        CHECK_EXPECT(OnStateChange_CONNECTED);
+        return S_OK;
+    case SCRIPTSTATE_DISCONNECTED:
+        CHECK_EXPECT(OnStateChange_DISCONNECTED);
+        return S_OK;
     case SCRIPTSTATE_CLOSED:
         CHECK_EXPECT(OnStateChange_CLOSED);
         return S_OK;
@@ -376,9 +384,20 @@ static void test_jscript2(void)
     hres = IActiveScriptParse_InitNew(parse);
     ok(hres == E_UNEXPECTED, "InitNew failed: %08x, expected E_UNEXPECTED\n", hres);
 
+    SET_EXPECT(OnStateChange_CONNECTED);
+    hres = IActiveScript_SetScriptState(script, SCRIPTSTATE_CONNECTED);
+    ok(hres == S_OK, "SetScriptState(SCRIPTSTATE_CONNECTED) failed: %08x\n", hres);
+    CHECK_CALLED(OnStateChange_CONNECTED);
+
+    test_state(script, SCRIPTSTATE_CONNECTED);
+
+    SET_EXPECT(OnStateChange_DISCONNECTED);
+    SET_EXPECT(OnStateChange_INITIALIZED);
     SET_EXPECT(OnStateChange_CLOSED);
     hres = IActiveScript_Close(script);
     ok(hres == S_OK, "Close failed: %08x\n", hres);
+    CHECK_CALLED(OnStateChange_DISCONNECTED);
+    CHECK_CALLED(OnStateChange_INITIALIZED);
     CHECK_CALLED(OnStateChange_CLOSED);
 
     test_state(script, SCRIPTSTATE_CLOSED);




More information about the wine-cvs mailing list