static HRESULT WINAPI ActiveScript_SetScriptSite(IActiveScript *iface, IActiveScriptSite *pass) { IActiveScriptSiteInterruptPoll *poll; IActiveScriptSiteDebug *debug; LCID lcid; HRESULT hres; CHECK_EXPECT(SetScriptSite); ok(pass != NULL, "pass == NULL\n"); hres = IActiveScriptSite_QueryInterface(pass, &IID_IActiveScriptSiteInterruptPoll, (void**)&poll); ok(hres == S_OK, "Could not get IActiveScriptSiteInterruptPoll interface: %08x\n", hres); if(FAILED(hres)) IActiveScriptSiteInterruptPoll_Release(poll); hres = IActiveScriptSite_GetLCID(pass, &lcid); ok(hres == S_OK, "GetLCID failed: %08x\n", hres); hres = IActiveScriptSite_OnStateChange(pass, (state = SCRIPTSTATE_INITIALIZED)); ok(hres == S_OK, "OnStateChange failed: %08x\n", hres); hres = IActiveScriptSite_QueryInterface(pass, &IID_IActiveScriptSiteDebug, (void**)&debug); ok(hres == S_OK, "Could not get IActiveScriptSiteDebug interface: %08x\n", hres); if(SUCCEEDED(hres)) IActiveScriptSiteDebug32_Release(debug); site = pass; IActiveScriptSite_AddRef(site); return S_OK; }
static void change_state(JScript *This, SCRIPTSTATE state) { if(This->ctx->state == state) return; This->ctx->state = state; IActiveScriptSite_OnStateChange(This->site, state); }
static HRESULT WINAPI ActiveScript_SetScriptState(IActiveScript *iface, SCRIPTSTATE ss) { HRESULT hres; switch(ss) { case SCRIPTSTATE_STARTED: CHECK_EXPECT(SetScriptState_STARTED); break; case SCRIPTSTATE_CONNECTED: CHECK_EXPECT(SetScriptState_CONNECTED); break; case SCRIPTSTATE_DISCONNECTED: CHECK_EXPECT(SetScriptState_DISCONNECTED); break; default: ok(0, "unexpected state %d\n", ss); return E_NOTIMPL; } hres = IActiveScriptSite_OnStateChange(site, (state = ss)); return S_OK; }
static HRESULT WINAPI ActiveScript_SetScriptSite(IActiveScript *iface, IActiveScriptSite *pass) { IActiveScriptSiteInterruptPoll *poll; IActiveScriptSiteDebug *debug; IServiceProvider *service; ICanHandleException *canexpection; LCID lcid; HRESULT hres; CHECK_EXPECT(SetScriptSite); ok(pass != NULL, "pass == NULL\n"); hres = IActiveScriptSite_QueryInterface(pass, &IID_IActiveScriptSiteInterruptPoll, (void**)&poll); ok(hres == E_NOINTERFACE, "Could not get IActiveScriptSiteInterruptPoll interface: %08x\n", hres); hres = IActiveScriptSite_GetLCID(pass, &lcid); ok(hres == S_OK, "GetLCID failed: %08x\n", hres); hres = IActiveScriptSite_OnStateChange(pass, (state = SCRIPTSTATE_INITIALIZED)); todo_wine ok(hres == E_NOTIMPL, "OnStateChange failed: %08x\n", hres); hres = IActiveScriptSite_QueryInterface(pass, &IID_IActiveScriptSiteDebug, (void**)&debug); ok(hres == E_NOINTERFACE, "Could not get IActiveScriptSiteDebug interface: %08x\n", hres); hres = IActiveScriptSite_QueryInterface(pass, &IID_ICanHandleException, (void**)&canexpection); ok(hres == E_NOINTERFACE, "Could not get IID_ICanHandleException interface: %08x\n", hres); hres = IActiveScriptSite_QueryInterface(pass, &IID_IServiceProvider, (void**)&service); todo_wine ok(hres == S_OK, "Could not get IServiceProvider interface: %08x\n", hres); if(SUCCEEDED(hres)) IServiceProvider_Release(service); site = pass; IActiveScriptSite_AddRef(site); return S_OK; }
static void decrease_state(JScript *This, SCRIPTSTATE state) { if(This->ctx) { switch(This->ctx->state) { case SCRIPTSTATE_CONNECTED: change_state(This, SCRIPTSTATE_DISCONNECTED); if(state == SCRIPTSTATE_DISCONNECTED) return; /* FALLTHROUGH */ case SCRIPTSTATE_STARTED: case SCRIPTSTATE_DISCONNECTED: clear_script_queue(This); if(This->ctx->state == SCRIPTSTATE_DISCONNECTED) change_state(This, SCRIPTSTATE_INITIALIZED); if(state == SCRIPTSTATE_INITIALIZED) return; /* FALLTHROUGH */ case SCRIPTSTATE_INITIALIZED: if(This->ctx->host_global) { IDispatch_Release(This->ctx->host_global); This->ctx->host_global = NULL; } if(This->ctx->named_items) { named_item_t *iter, *iter2; iter = This->ctx->named_items; while(iter) { iter2 = iter->next; if(iter->disp) IDispatch_Release(iter->disp); heap_free(iter->name); heap_free(iter); iter = iter2; } This->ctx->named_items = NULL; } if(This->ctx->secmgr) { IInternetHostSecurityManager_Release(This->ctx->secmgr); This->ctx->secmgr = NULL; } if(This->ctx->site) { IActiveScriptSite_Release(This->ctx->site); This->ctx->site = NULL; } if(This->ctx->global) { jsdisp_release(This->ctx->global); This->ctx->global = NULL; } /* FALLTHROUGH */ case SCRIPTSTATE_UNINITIALIZED: change_state(This, state); break; default: assert(0); } change_state(This, state); }else if(state == SCRIPTSTATE_UNINITIALIZED) { if(This->site) IActiveScriptSite_OnStateChange(This->site, state); }else { FIXME("NULL ctx\n"); } if(state == SCRIPTSTATE_UNINITIALIZED) This->thread_id = 0; if(This->site) { IActiveScriptSite_Release(This->site); This->site = NULL; } }