33#define IActiveScriptParse_QueryInterface IActiveScriptParse64_QueryInterface
34#define IActiveScriptParse_Release IActiveScriptParse64_Release
35#define IActiveScriptParse_InitNew IActiveScriptParse64_InitNew
36#define IActiveScriptParse_ParseScriptText IActiveScriptParse64_ParseScriptText
40#define IActiveScriptParse_QueryInterface IActiveScriptParse32_QueryInterface
41#define IActiveScriptParse_Release IActiveScriptParse32_Release
42#define IActiveScriptParse_InitNew IActiveScriptParse32_InitNew
43#define IActiveScriptParse_ParseScriptText IActiveScriptParse32_ParseScriptText
48 {0xf414c260,0x6ac0,0x11cf,{0xb6,0xd1,0x00,0xaa,0x00,0xbb,0xbb,0x58}};
50#define DEFINE_EXPECT(func) \
51 static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
53#define SET_EXPECT(func) \
54 expect_ ## func = TRUE
56#define CHECK_EXPECT2(func) \
58 ok(expect_ ##func, "unexpected call " #func "\n"); \
59 called_ ## func = TRUE; \
62#define CHECK_EXPECT(func) \
64 CHECK_EXPECT2(func); \
65 expect_ ## func = FALSE; \
68#define CHECK_CALLED(func) \
70 ok(called_ ## func, "expected " #func "\n"); \
71 expect_ ## func = called_ ## func = FALSE; \
74#define CLEAR_CALLED(func) \
75 expect_ ## func = called_ ## func = FALSE
91#define DISPID_TEST_TESTARGCONV 0x1000
92#define DISPID_TEST_TESTGETCALLER 0x1001
93#define DISPID_TEST_TESTGETCALLERJS 0x1002
94#define DISPID_TEST_TESTGETCALLERNESTED 0x1003
104#define call_change_type(a,b,c,d) _call_change_type(__LINE__,a,b,c,d)
123#define change_type_fail(a,b,c,d) _change_type_fail(__LINE__,a,b,c,d)
131 ok_(__FILE__,
line)(
hres == exhres,
"ChangeType failed: %08lx, expected %08lx [%d]\n",
hres, exhres,
V_VT(
src));
139 ok(
V_I4(&
v) ==
ex->int_result,
"V_I4(v) = %ld, expected %d\n",
V_I4(&
v),
ex->int_result);
149 ok(
V_BOOL(&
v) ==
ex->bool_result,
"V_BOOL(v) = %x, expected %x\n",
V_BOOL(&
v),
ex->bool_result);
151 if(
ex->test_double) {
153 ok(
V_R8(&
v) ==
ex->double_result,
"V_R8(v) = %lf, expected %lf\n",
V_R8(&
v),
ex->double_result);
156 ok(
V_R4(&
v) == (
float)
ex->double_result,
"V_R4(v) = %f, expected %f\n",
V_R4(&
v), (
float)
ex->double_result);
196 {0,
L"false", VARIANT_FALSE, 1,0.0},
197 {1,
L"true", VARIANT_TRUE, 1,1.0}};
199 {0,
L"0", VARIANT_FALSE, 1,0.0},
200 {-100,
L"-100", VARIANT_TRUE, 1,-100.0},
201 {0x10010,
L"65552", VARIANT_TRUE, 1,65552.0}};
203 {0,
L"undefined", VARIANT_FALSE, 0,0};
205 {0,
L"null", VARIANT_FALSE, 0,0};
207 {10,
L"strval", VARIANT_TRUE, 1,10.0};
261 hres = IServiceProvider_QueryService(caller, &SID_VariantConversion, &IID_IVariantChangeType, (
void**)&
change_type);
262 ok(
hres ==
S_OK,
"Could not get SID_VariantConversion service: %08lx\n",
hres);
270 hres = IServiceProvider_QueryService(caller, &IID_IActiveScriptSite, &
IID_NULL, (
void**)&unk);
272 ok(!unk,
"unk != NULL\n");
332 ok(0,
"Unexpected IID_IObjectSafety query\n");
353 ok(0,
"unexpected call\n");
363 LPOLESTR *rgszNames,
UINT cNames,
366 ok(0,
"unexpected call\n");
372 VARIANT *pVarResult, EXCEPINFO *pExcepInfo,
UINT *puArgErr)
374 ok(0,
"unexpected call\n");
386 ok(0,
"unexpected call\n");
392 ok(0,
"unexpected call\n");
398 ok(0,
"unexpected call\n");
404 ok(0,
"unexpected call\n");
410 ok(0,
"unexpected call\n");
416 if(!
lstrcmpW(bstrName,
L"testArgConv")) {
417 ok(grfdex == fdexNameCaseSensitive,
"grfdex = %lx\n", grfdex);
421 if(!
lstrcmpW(bstrName,
L"testGetCaller")) {
422 ok(grfdex == fdexNameCaseSensitive,
"grfdex = %lx\n", grfdex);
426 if(!
lstrcmpW(bstrName,
L"testGetCallerJS")) {
427 ok(grfdex == fdexNameCaseSensitive,
"grfdex = %lx\n", grfdex);
431 if(!
lstrcmpW(bstrName,
L"testGetCallerNested")) {
432 ok(grfdex == fdexNameCaseSensitive,
"grfdex = %lx\n", grfdex);
446 ok(pspCaller !=
NULL,
"pspCaller == NULL\n");
453 ok(pdp !=
NULL,
"pdp == NULL\n");
454 ok(!pdp->rgdispidNamedArgs,
"rgdispidNamedArgs != NULL\n");
455 ok(!pvarRes,
"pvarRes != NULL\n");
456 ok(pei !=
NULL,
"pei == NULL\n");
458 ok(pdp->cArgs == 1,
"cArgs = %d\n", pdp->cArgs);
470 void *iface = (
void*)0xdeadbeef;
476 ok(pdp !=
NULL,
"pdp == NULL\n");
477 ok(!pdp->rgdispidNamedArgs,
"rgdispidNamedArgs != NULL\n");
478 ok(!pvarRes,
"pvarRes != NULL\n");
479 ok(pei !=
NULL,
"pei == NULL\n");
492 hres = IServiceProvider_QueryService(pspCaller, &SID_GetCaller, &IID_IServiceProvider, (
void**)&caller);
493 ok(
hres ==
S_OK,
"Could not get SID_GetCaller service: %08lx\n",
hres);
495 if(caller) IServiceProvider_Release(caller);
499 hres = IServiceProvider_QueryService(pspCaller, &SID_GetCaller, &
IID_NULL, &iface);
501 ok(iface ==
NULL,
"iface != NULL\n");
511 ok(pdp !=
NULL,
"pdp == NULL\n");
512 ok(pdp->cArgs == 1,
"cArgs = %d\n", pdp->cArgs);
513 ok(!pdp->rgdispidNamedArgs,
"rgdispidNamedArgs != NULL\n");
514 ok(!pvarRes,
"pvarRes != NULL\n");
515 ok(pei !=
NULL,
"pei == NULL\n");
516 ok(
V_VT(pdp->rgvarg) ==
VT_I4,
"V_VT(rgvarg) = %d\n",
V_VT(pdp->rgvarg));
517 ok(
V_I4(pdp->rgvarg) == 42,
"V_I4(rgvarg) = %ld\n",
V_I4(pdp->rgvarg));
519 hres = IServiceProvider_QueryService(pspCaller, &SID_GetCaller, &IID_IServiceProvider, (
void**)&caller);
521 ok(caller ==
NULL,
"caller != NULL\n");
528 ok(pdp !=
NULL,
"pdp == NULL\n");
529 ok(pdp->cArgs == 2,
"cArgs = %d\n", pdp->cArgs);
530 ok(!pdp->rgdispidNamedArgs,
"rgdispidNamedArgs != NULL\n");
531 ok(!pvarRes,
"pvarRes != NULL\n");
532 ok(pei !=
NULL,
"pei == NULL\n");
533 ok(
V_VT(&pdp->rgvarg[0]) ==
VT_I4,
"V_VT(rgvarg[0]) = %d\n",
V_VT(&pdp->rgvarg[0]));
534 ok(
V_VT(&pdp->rgvarg[1]) ==
VT_I4,
"V_VT(rgvarg[1]) = %d\n",
V_VT(&pdp->rgvarg[1]));
535 ok(
V_I4(&pdp->rgvarg[0]) == 2,
"V_I4(rgvarg[0]) = %ld\n",
V_I4(&pdp->rgvarg[0]));
536 ok(
V_I4(&pdp->rgvarg[1]) == 1,
"V_I4(rgvarg[1]) = %ld\n",
V_I4(&pdp->rgvarg[1]));
538 hres = IServiceProvider_QueryService(pspCaller, &SID_GetCaller, &IID_IServiceProvider, (
void**)&caller);
540 ok(caller ==
NULL,
"caller != NULL\n");
544 ok(0,
"unexpected call\n");
607 ok(dwReturnMask == SCRIPTINFO_IUNKNOWN,
"unexpected dwReturnMask %lx\n", dwReturnMask);
608 ok(!ppti,
"ppti != NULL\n");
621 const VARIANT *pvarResult,
const EXCEPINFO *pexcepinfo)
664#define parse_script(p,s) _parse_script(__LINE__,p,s)
675 IActiveScriptParse *
parser;
680 &IID_IActiveScript, (
void**)&
script);
684 hres = IActiveScript_QueryInterface(
script, &IID_IActiveScriptParse, (
void**)&
parser);
685 ok(
hres ==
S_OK,
"Could not get IActiveScriptParse: %08lx\n",
hres);
694 SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_GLOBALMEMBERS);
698 ok(
hres ==
S_OK,
"SetScriptState(SCRIPTSTATE_STARTED) failed: %08lx\n",
hres);
700 IActiveScript_Release(
script);
708 DISPPARAMS dp = { 0 };
719 ok(
hres ==
S_OK,
"Could not get IVariantChangeType iface: %08lx\n",
hres);
726 L" toString: function() { return 'strval'; },"
727 L" valueOf: function() { return 10; }"
730 L"function testGetCallerFunc() { testGetCaller(); };"
731 L"testGetCallerJS(42);");
745 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (
void**)&dispex);
747 IDispatch_Release(disp);
749 hres = IDispatchEx_GetDispID(dispex, bstr, 0, &dispid);
757 IDispatchEx_Release(dispex);
758 hres = IDispatch_QueryInterface(
V_DISPATCH(&
var), &IID_IDispatchEx, (
void**)&dispex);
777 IDispatchEx_Release(dispex);
786 IActiveScriptParse *
parser;
803 IActiveScriptProperty_Release(script_prop);
815 win_skip(
"Broken (too old) jscript\n");
enum tagSCRIPTSTATE SCRIPTSTATE
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
LCID WINAPI GetUserDefaultLCID(void)
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
static BOOL check_jscript(void)
static HRESULT WINAPI sp_caller_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppv)
static ULONG WINAPI ActiveScriptSite_Release(IActiveScriptSite *iface)
static IVariantChangeType * script_change_type
#define CLEAR_CALLED(func)
static HRESULT WINAPI ActiveScriptSite_OnLeaveScript(IActiveScriptSite *iface)
#define DISPID_TEST_TESTGETCALLERJS
static void test_change_type(IVariantChangeType *change_type, VARIANT *src, const conv_results_t *ex)
static HRESULT WINAPI ActiveScriptSite_OnStateChange(IActiveScriptSite *iface, SCRIPTSTATE ssScriptState)
static HRESULT WINAPI DispatchEx_GetMemberProperties(IDispatchEx *iface, DISPID id, DWORD grfdexFetch, DWORD *pgrfdex)
static void test_caller(IServiceProvider *caller, IDispatch *arg_obj)
#define call_change_type(a, b, c, d)
static ULONG WINAPI DispatchEx_Release(IDispatchEx *iface)
static HRESULT WINAPI DispatchEx_GetIDsOfNames(IDispatchEx *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
static const CLSID CLSID_JScript
static HRESULT WINAPI DispatchEx_DeleteMemberByDispID(IDispatchEx *iface, DISPID id)
static HRESULT WINAPI DispatchEx_GetNameSpaceParent(IDispatchEx *iface, IUnknown **ppunk)
static HRESULT WINAPI DispatchEx_Invoke(IDispatchEx *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static void run_scripts(void)
#define CHECK_EXPECT(func)
static HRESULT WINAPI ActiveScriptSite_GetDocVersionString(IActiveScriptSite *iface, BSTR *pbstrVersion)
static HRESULT WINAPI ActiveScriptSite_GetItemInfo(IActiveScriptSite *iface, LPCOLESTR pstrName, DWORD dwReturnMask, IUnknown **ppiunkItem, ITypeInfo **ppti)
static void _parse_script(unsigned line, IActiveScriptParse *parser, const WCHAR *script)
#define DEFINE_EXPECT(func)
static HRESULT WINAPI DispatchEx_GetMemberName(IDispatchEx *iface, DISPID id, BSTR *pbstrName)
static IServiceProvider sp_caller_obj
#define IActiveScriptParse_InitNew
#define IActiveScriptParse_ParseScriptText
static IActiveScriptParse * create_script(void)
#define IActiveScriptParse_Release
static ULONG WINAPI sp_caller_Release(IServiceProvider *iface)
#define change_type_fail(a, b, c, d)
#define parse_script(p, s)
static void test_change_types(IVariantChangeType *change_type, IDispatch *obj_disp)
static ULONG WINAPI sp_caller_AddRef(IServiceProvider *iface)
#define DISPID_TEST_TESTGETCALLER
static HRESULT WINAPI DispatchEx_GetNextDispID(IDispatchEx *iface, DWORD grfdex, DISPID id, DISPID *pid)
static HRESULT WINAPI Test_GetDispID(IDispatchEx *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
#define IActiveScriptParse_QueryInterface
static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, void **ppv)
static HRESULT WINAPI ActiveScriptSite_QueryInterface(IActiveScriptSite *iface, REFIID riid, void **ppv)
static HRESULT WINAPI ActiveScriptSite_OnEnterScript(IActiveScriptSite *iface)
static ULONG WINAPI DispatchEx_AddRef(IDispatchEx *iface)
static void _change_type_fail(unsigned line, IVariantChangeType *change_type, VARIANT *src, VARTYPE vt, HRESULT exhres)
static HRESULT WINAPI sp_caller_QueryService(IServiceProvider *iface, REFGUID guidService, REFIID riid, void **ppv)
#define CHECK_CALLED(func)
static ULONG WINAPI ActiveScriptSite_AddRef(IActiveScriptSite *iface)
static HRESULT WINAPI ActiveScriptSite_OnScriptTerminate(IActiveScriptSite *iface, const VARIANT *pvarResult, const EXCEPINFO *pexcepinfo)
static void _call_change_type(unsigned line, IVariantChangeType *change_type, VARIANT *dst, VARIANT *src, VARTYPE vt)
static HRESULT WINAPI DispatchEx_GetTypeInfo(IDispatchEx *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
static IServiceProvider * test_get_caller_sp
#define DISPID_TEST_TESTARGCONV
static IActiveScriptParse * active_script_parser
static IDispatch * stored_obj
static IDispatchEx testObj
static const IActiveScriptSiteVtbl ActiveScriptSiteVtbl
#define DISPID_TEST_TESTGETCALLERNESTED
static HRESULT WINAPI DispatchEx_DeleteMemberByName(IDispatchEx *iface, BSTR bstrName, DWORD grfdex)
static HRESULT WINAPI ActiveScriptSite_GetLCID(IActiveScriptSite *iface, LCID *plcid)
static IActiveScriptSite ActiveScriptSite
static HRESULT WINAPI ActiveScriptSite_OnScriptError(IActiveScriptSite *iface, IActiveScriptError *pscripterror)
static HRESULT WINAPI DispatchEx_GetTypeInfoCount(IDispatchEx *iface, UINT *pctinfo)
static IDispatchExVtbl testObjVtbl
static const IServiceProviderVtbl sp_caller_vtbl
static HRESULT WINAPI Test_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
static VARIANTARG static DISPID
static HRESULT change_type(VARIANT *dst, VARIANT *src, VARTYPE vt, IServiceProvider *caller)
BSTR WINAPI SysAllocString(LPCOLESTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
#define DISPATCH_PROPERTYGET
#define IsEqualGUID(rguid1, rguid2)
static __inline const char * wine_dbgstr_guid(const GUID *id)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
void WINAPI VariantInit(VARIANTARG *pVarg)
static IActiveScript * active_script
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
#define DISP_E_BADVARTYPE