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