jscript: Better checks for too old jscript.dll versions.
This commit is contained in:
parent
a7188842af
commit
a8e969236f
|
@ -701,7 +701,7 @@ static void _parse_script_a(unsigned line, IActiveScriptParse *parser, const cha
|
|||
ok_(__FILE__,line)(hres == S_OK, "ParseScriptText failed: %08x\n", hres);
|
||||
}
|
||||
|
||||
static IActiveScriptParse *create_script(void)
|
||||
static IActiveScriptParse *create_script(BOOL skip_tests)
|
||||
{
|
||||
IActiveScriptParse *parser;
|
||||
IActiveScript *script;
|
||||
|
@ -719,11 +719,13 @@ static IActiveScriptParse *create_script(void)
|
|||
|
||||
hres = CoCreateInstance(&CLSID_JScript, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||
&IID_IActiveScript, (void**)&script);
|
||||
ok(hres == S_OK, "CoCreateInstance failed: %08x\n", hres);
|
||||
if(!skip_tests)
|
||||
ok(hres == S_OK, "CoCreateInstance failed: %08x\n", hres);
|
||||
if(FAILED(hres))
|
||||
return NULL;
|
||||
|
||||
set_safety_options((IUnknown*)script);
|
||||
if(!skip_tests)
|
||||
set_safety_options((IUnknown*)script);
|
||||
|
||||
hres = IActiveScript_QueryInterface(script, &IID_IActiveScriptParse, (void**)&parser);
|
||||
ok(hres == S_OK, "Could not get IActiveScriptParse: %08x\n", hres);
|
||||
|
@ -743,17 +745,19 @@ static IActiveScriptParse *create_script(void)
|
|||
|
||||
IActiveScript_Release(script);
|
||||
|
||||
parse_script_a(parser,
|
||||
"function testException(func, type, number) {\n"
|
||||
"try {\n"
|
||||
" func();\n"
|
||||
"}catch(e) {\n"
|
||||
" ok(e.name === type, 'e.name = ' + e.name + ', expected ' + type)\n"
|
||||
" ok(e.number === number, 'e.number = ' + e.number + ', expected ' + number);\n"
|
||||
" return;\n"
|
||||
"}"
|
||||
"ok(false, 'exception expected');\n"
|
||||
"}");
|
||||
if(!skip_tests) {
|
||||
parse_script_a(parser,
|
||||
"function testException(func, type, number) {\n"
|
||||
" try {\n"
|
||||
" func();\n"
|
||||
" }catch(e) {\n"
|
||||
" ok(e.name === type, 'e.name = ' + e.name + ', expected ' + type)\n"
|
||||
" ok(e.number === number, 'e.number = ' + e.number + ', expected ' + number);\n"
|
||||
" return;\n"
|
||||
" }\n"
|
||||
" ok(false, 'exception expected');\n"
|
||||
"}");
|
||||
}
|
||||
|
||||
return parser;
|
||||
}
|
||||
|
@ -800,7 +804,7 @@ static void test_ActiveXObject(void)
|
|||
IActiveScriptParse *parser;
|
||||
IDispatchEx *proc;
|
||||
|
||||
parser = create_script();
|
||||
parser = create_script(FALSE);
|
||||
|
||||
SET_EXPECT(Host_QS_SecMgr);
|
||||
SET_EXPECT(ProcessUrlAction);
|
||||
|
@ -845,7 +849,7 @@ static void test_ActiveXObject(void)
|
|||
IDispatchEx_Release(proc);
|
||||
IUnknown_Release(parser);
|
||||
|
||||
parser = create_script();
|
||||
parser = create_script(FALSE);
|
||||
proc = parse_procedure_a(parser, "(new ActiveXObject('Wine.Test')).reportSuccess();");
|
||||
|
||||
SET_EXPECT(Host_QS_SecMgr);
|
||||
|
@ -867,7 +871,7 @@ static void test_ActiveXObject(void)
|
|||
IDispatchEx_Release(proc);
|
||||
IUnknown_Release(parser);
|
||||
|
||||
parser = create_script();
|
||||
parser = create_script(FALSE);
|
||||
QS_SecMgr_hres = E_NOINTERFACE;
|
||||
|
||||
SET_EXPECT(Host_QS_SecMgr);
|
||||
|
@ -876,7 +880,7 @@ static void test_ActiveXObject(void)
|
|||
|
||||
IUnknown_Release(parser);
|
||||
|
||||
parser = create_script();
|
||||
parser = create_script(FALSE);
|
||||
ProcessUrlAction_hres = E_FAIL;
|
||||
|
||||
SET_EXPECT(Host_QS_SecMgr);
|
||||
|
@ -887,7 +891,7 @@ static void test_ActiveXObject(void)
|
|||
|
||||
IUnknown_Release(parser);
|
||||
|
||||
parser = create_script();
|
||||
parser = create_script(FALSE);
|
||||
ProcessUrlAction_policy = URLPOLICY_DISALLOW;
|
||||
|
||||
SET_EXPECT(Host_QS_SecMgr);
|
||||
|
@ -898,7 +902,7 @@ static void test_ActiveXObject(void)
|
|||
|
||||
IUnknown_Release(parser);
|
||||
|
||||
parser = create_script();
|
||||
parser = create_script(FALSE);
|
||||
CreateInstance_hres = E_FAIL;
|
||||
|
||||
SET_EXPECT(Host_QS_SecMgr);
|
||||
|
@ -911,7 +915,7 @@ static void test_ActiveXObject(void)
|
|||
|
||||
IUnknown_Release(parser);
|
||||
|
||||
parser = create_script();
|
||||
parser = create_script(FALSE);
|
||||
QueryCustomPolicy_hres = E_FAIL;
|
||||
|
||||
SET_EXPECT(Host_QS_SecMgr);
|
||||
|
@ -926,7 +930,7 @@ static void test_ActiveXObject(void)
|
|||
|
||||
IUnknown_Release(parser);
|
||||
|
||||
parser = create_script();
|
||||
parser = create_script(FALSE);
|
||||
QueryCustomPolicy_psize = 6;
|
||||
|
||||
SET_EXPECT(Host_QS_SecMgr);
|
||||
|
@ -945,7 +949,7 @@ static void test_ActiveXObject(void)
|
|||
|
||||
IUnknown_Release(parser);
|
||||
|
||||
parser = create_script();
|
||||
parser = create_script(FALSE);
|
||||
QueryCustomPolicy_policy = URLPOLICY_DISALLOW;
|
||||
|
||||
SET_EXPECT(Host_QS_SecMgr);
|
||||
|
@ -981,7 +985,7 @@ static void test_ActiveXObject(void)
|
|||
|
||||
IUnknown_Release(parser);
|
||||
|
||||
parser = create_script();
|
||||
parser = create_script(FALSE);
|
||||
object_with_site = &ObjectWithSite;
|
||||
|
||||
SET_EXPECT(Host_QS_SecMgr);
|
||||
|
@ -1062,18 +1066,24 @@ static BOOL register_activex(void)
|
|||
|
||||
static BOOL check_jscript(void)
|
||||
{
|
||||
IActiveScriptProperty *script_prop;
|
||||
IActiveScriptParse *parser;
|
||||
BSTR str;
|
||||
HRESULT hres;
|
||||
|
||||
parser = create_script();
|
||||
parser = create_script(TRUE);
|
||||
if(!parser)
|
||||
return FALSE;
|
||||
|
||||
str = a2bstr("if(!('localeCompare' in String.prototype)) throw 1;");
|
||||
hres = IActiveScriptParse64_ParseScriptText(parser, str, NULL, NULL, NULL, 0, 0, 0, NULL, NULL);
|
||||
SysFreeString(str);
|
||||
|
||||
if(hres == S_OK)
|
||||
hres = IUnknown_QueryInterface(parser, &IID_IActiveScriptProperty, (void**)&script_prop);
|
||||
IUnknown_Release(parser);
|
||||
if(hres == S_OK)
|
||||
IActiveScriptProperty_Release(script_prop);
|
||||
|
||||
return hres == S_OK;
|
||||
}
|
||||
|
|
|
@ -335,10 +335,9 @@ static HRESULT set_script_prop(IActiveScript *engine, DWORD property, VARIANT *v
|
|||
|
||||
hres = IActiveScript_QueryInterface(engine, &IID_IActiveScriptProperty,
|
||||
(void**)&script_prop);
|
||||
if(FAILED(hres)) {
|
||||
win_skip("IActiveScriptProperty not supported\n");
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
ok(hres == S_OK, "Could not get IActiveScriptProperty: %08x\n", hres);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
hres = IActiveScriptProperty_SetProperty(script_prop, property, NULL, val);
|
||||
IActiveScriptProperty_Release(script_prop);
|
||||
|
@ -523,12 +522,29 @@ static void test_jscript2(void)
|
|||
ok(!ref, "ref = %d\n", ref);
|
||||
}
|
||||
|
||||
static BOOL check_jscript(void)
|
||||
{
|
||||
IActiveScriptProperty *script_prop;
|
||||
HRESULT hres;
|
||||
|
||||
hres = CoCreateInstance(&CLSID_JScript, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||
&IID_IActiveScriptProperty, (void**)&script_prop);
|
||||
if(SUCCEEDED(hres))
|
||||
IActiveScriptProperty_Release(script_prop);
|
||||
|
||||
return hres == S_OK;
|
||||
}
|
||||
|
||||
START_TEST(jscript)
|
||||
{
|
||||
CoInitialize(NULL);
|
||||
|
||||
test_jscript();
|
||||
test_jscript2();
|
||||
if(check_jscript()) {
|
||||
test_jscript();
|
||||
test_jscript2();
|
||||
}else {
|
||||
win_skip("Broken engine, probably too old\n");
|
||||
}
|
||||
|
||||
CoUninitialize();
|
||||
}
|
||||
|
|
|
@ -1090,9 +1090,16 @@ static void run_tests(void)
|
|||
|
||||
static BOOL check_jscript(void)
|
||||
{
|
||||
IActiveScriptProperty *script_prop;
|
||||
BSTR str;
|
||||
HRESULT hres;
|
||||
|
||||
hres = CoCreateInstance(&CLSID_JScript, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||
&IID_IActiveScriptProperty, (void**)&script_prop);
|
||||
if(FAILED(hres))
|
||||
return FALSE;
|
||||
IActiveScriptProperty_Release(script_prop);
|
||||
|
||||
str = a2bstr("if(!('localeCompare' in String.prototype)) throw 1;");
|
||||
hres = parse_script(0, str);
|
||||
SysFreeString(str);
|
||||
|
|
Loading…
Reference in New Issue