Commit ccc5a575 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

mshtml: Fixed script tests on IE8.

parent 13b6a43d
...@@ -67,12 +67,30 @@ typedef struct { ...@@ -67,12 +67,30 @@ typedef struct {
#define ACTSCPWIN(x) (&(x)->lpIActiveScriptSiteWindowVtbl) #define ACTSCPWIN(x) (&(x)->lpIActiveScriptSiteWindowVtbl)
#define ACTSCPDBG32(x) (&(x)->lpIActiveScriptSiteDebug32Vtbl) #define ACTSCPDBG32(x) (&(x)->lpIActiveScriptSiteDebug32Vtbl)
static void set_script_prop(ScriptHost *script_host, DWORD property, VARIANT *val)
{
IActiveScriptProperty *script_prop;
HRESULT hres;
hres = IActiveScript_QueryInterface(script_host->script, &IID_IActiveScriptProperty,
(void**)&script_prop);
if(FAILED(hres)) {
WARN("Could not get IActiveScriptProperty iface: %08x\n", hres);
return;
}
hres = IActiveScriptProperty_SetProperty(script_prop, property, NULL, val);
IActiveScriptProperty_Release(script_prop);
if(FAILED(hres))
WARN("SetProperty(%x) failed: %08x\n", property, hres);
}
static BOOL init_script_engine(ScriptHost *script_host) static BOOL init_script_engine(ScriptHost *script_host)
{ {
IActiveScriptProperty *property;
IObjectSafety *safety; IObjectSafety *safety;
SCRIPTSTATE state; SCRIPTSTATE state;
DWORD supported_opts=0, enabled_opts=0; DWORD supported_opts=0, enabled_opts=0;
VARIANT var;
HRESULT hres; HRESULT hres;
hres = IActiveScript_QueryInterface(script_host->script, &IID_IActiveScriptParse, (void**)&script_host->parse); hres = IActiveScript_QueryInterface(script_host->script, &IID_IActiveScriptParse, (void**)&script_host->parse);
...@@ -104,20 +122,13 @@ static BOOL init_script_engine(ScriptHost *script_host) ...@@ -104,20 +122,13 @@ static BOOL init_script_engine(ScriptHost *script_host)
if(FAILED(hres)) if(FAILED(hres))
return FALSE; return FALSE;
hres = IActiveScript_QueryInterface(script_host->script, &IID_IActiveScriptProperty, (void**)&property); V_VT(&var) = VT_I4;
if(SUCCEEDED(hres)) { V_I4(&var) = 1;
VARIANT var; set_script_prop(script_host, SCRIPTPROP_INVOKEVERSIONING, &var);
V_VT(&var) = VT_BOOL;
V_BOOL(&var) = VARIANT_TRUE;
hres = IActiveScriptProperty_SetProperty(property, SCRIPTPROP_HACK_TRIDENTEVENTSINK, NULL, &var);
if(FAILED(hres))
WARN("SetProperty failed: %08x\n", hres);
IActiveScriptProperty_Release(property); V_VT(&var) = VT_BOOL;
}else { V_BOOL(&var) = VARIANT_TRUE;
WARN("Could not get IActiveScriptProperty: %08x\n", hres); set_script_prop(script_host, SCRIPTPROP_HACK_TRIDENTEVENTSINK, &var);
}
hres = IActiveScriptParse64_InitNew(script_host->parse); hres = IActiveScriptParse64_InitNew(script_host->parse);
if(FAILED(hres)) { if(FAILED(hres)) {
...@@ -146,8 +157,13 @@ static BOOL init_script_engine(ScriptHost *script_host) ...@@ -146,8 +157,13 @@ static BOOL init_script_engine(ScriptHost *script_host)
hres = IActiveScript_AddNamedItem(script_host->script, windowW, hres = IActiveScript_AddNamedItem(script_host->script, windowW,
SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_GLOBALMEMBERS); SCRIPTITEM_ISVISIBLE|SCRIPTITEM_ISSOURCE|SCRIPTITEM_GLOBALMEMBERS);
if(FAILED(hres)) if(SUCCEEDED(hres)) {
V_VT(&var) = VT_BOOL;
V_BOOL(&var) = VARIANT_TRUE;
set_script_prop(script_host, SCRIPTPROP_ABBREVIATE_GLOBALNAME_RESOLUTION, &var);
}else {
WARN("AddNamedItem failed: %08x\n", hres); WARN("AddNamedItem failed: %08x\n", hres);
}
hres = IActiveScript_QueryInterface(script_host->script, &IID_IActiveScriptParseProcedure2, hres = IActiveScript_QueryInterface(script_host->script, &IID_IActiveScriptParseProcedure2,
(void**)&script_host->parse_proc); (void**)&script_host->parse_proc);
......
...@@ -74,6 +74,12 @@ DEFINE_GUID(CLSID_IdentityUnmarshal,0x0000001b,0x0000,0x0000,0xc0,0x00,0x00,0x00 ...@@ -74,6 +74,12 @@ DEFINE_GUID(CLSID_IdentityUnmarshal,0x0000001b,0x0000,0x0000,0xc0,0x00,0x00,0x00
expect_ ## func = called_ ## func = FALSE; \ expect_ ## func = called_ ## func = FALSE; \
}while(0) }while(0)
#define CHECK_CALLED_BROKEN(func) \
do { \
ok(called_ ## func || broken(!called_ ## func), "expected " #func "\n"); \
expect_ ## func = called_ ## func = FALSE; \
}while(0)
#define CHECK_NOT_CALLED(func) \ #define CHECK_NOT_CALLED(func) \
do { \ do { \
ok(!called_ ## func, "unexpected " #func "\n"); \ ok(!called_ ## func, "unexpected " #func "\n"); \
...@@ -89,7 +95,9 @@ DEFINE_EXPECT(GetInterfaceSafetyOptions); ...@@ -89,7 +95,9 @@ DEFINE_EXPECT(GetInterfaceSafetyOptions);
DEFINE_EXPECT(SetInterfaceSafetyOptions); DEFINE_EXPECT(SetInterfaceSafetyOptions);
DEFINE_EXPECT(InitNew); DEFINE_EXPECT(InitNew);
DEFINE_EXPECT(Close); DEFINE_EXPECT(Close);
DEFINE_EXPECT(SetProperty); DEFINE_EXPECT(SetProperty_HACK_TRIDENTEVENTSINK);
DEFINE_EXPECT(SetProperty_INVOKEVERSIONING);
DEFINE_EXPECT(SetProperty_ABBREVIATE_GLOBALNAME_RESOLUTION);
DEFINE_EXPECT(SetScriptSite); DEFINE_EXPECT(SetScriptSite);
DEFINE_EXPECT(GetScriptState); DEFINE_EXPECT(GetScriptState);
DEFINE_EXPECT(SetScriptState_STARTED); DEFINE_EXPECT(SetScriptState_STARTED);
...@@ -504,15 +512,31 @@ static HRESULT WINAPI ActiveScriptProperty_GetProperty(IActiveScriptProperty *if ...@@ -504,15 +512,31 @@ static HRESULT WINAPI ActiveScriptProperty_GetProperty(IActiveScriptProperty *if
static HRESULT WINAPI ActiveScriptProperty_SetProperty(IActiveScriptProperty *iface, DWORD dwProperty, static HRESULT WINAPI ActiveScriptProperty_SetProperty(IActiveScriptProperty *iface, DWORD dwProperty,
VARIANT *pvarIndex, VARIANT *pvarValue) VARIANT *pvarIndex, VARIANT *pvarValue)
{ {
CHECK_EXPECT(SetProperty); switch(dwProperty) {
case SCRIPTPROP_HACK_TRIDENTEVENTSINK:
CHECK_EXPECT(SetProperty_HACK_TRIDENTEVENTSINK);
ok(V_VT(pvarValue) == VT_BOOL, "V_VT(pvarValue)=%d\n", V_VT(pvarValue));
ok(V_BOOL(pvarValue) == VARIANT_TRUE, "V_BOOL(pvarValue)=%x\n", V_BOOL(pvarValue));
break;
case SCRIPTPROP_INVOKEVERSIONING:
CHECK_EXPECT(SetProperty_INVOKEVERSIONING);
ok(V_VT(pvarValue) == VT_I4, "V_VT(pvarValue)=%d\n", V_VT(pvarValue));
ok(V_I4(pvarValue) == 1, "V_I4(pvarValue)=%d\n", V_I4(pvarValue));
break;
case SCRIPTPROP_ABBREVIATE_GLOBALNAME_RESOLUTION:
CHECK_EXPECT(SetProperty_ABBREVIATE_GLOBALNAME_RESOLUTION);
ok(V_VT(pvarValue) == VT_BOOL, "V_VT(pvarValue)=%d\n", V_VT(pvarValue));
ok(V_BOOL(pvarValue) == VARIANT_TRUE, "V_BOOL(pvarValue)=%x\n", V_BOOL(pvarValue));
break;
default:
ok(0, "unexpected property %x\n", dwProperty);
return E_NOTIMPL;
}
ok(dwProperty == SCRIPTPROP_HACK_TRIDENTEVENTSINK, "unexpected property %d\n", dwProperty);
ok(!pvarIndex, "pvarIndex != NULL\n"); ok(!pvarIndex, "pvarIndex != NULL\n");
ok(pvarValue != NULL, "pvarValue == NULL\n"); ok(pvarValue != NULL, "pvarValue == NULL\n");
ok(V_VT(pvarValue) == VT_BOOL, "V_VT(pvarValue)=%d\n", V_VT(pvarValue));
ok(V_BOOL(pvarValue) == VARIANT_TRUE, "V_BOOL(pvarValue)=%x\n", V_BOOL(pvarValue));
return E_NOTIMPL; return S_OK;
} }
static const IActiveScriptPropertyVtbl ActiveScriptPropertyVtbl = { static const IActiveScriptPropertyVtbl ActiveScriptPropertyVtbl = {
...@@ -1028,12 +1052,14 @@ static void test_simple_script(void) ...@@ -1028,12 +1052,14 @@ static void test_simple_script(void)
SET_EXPECT(CreateInstance); SET_EXPECT(CreateInstance);
SET_EXPECT(GetInterfaceSafetyOptions); SET_EXPECT(GetInterfaceSafetyOptions);
SET_EXPECT(SetInterfaceSafetyOptions); SET_EXPECT(SetInterfaceSafetyOptions);
SET_EXPECT(SetProperty); SET_EXPECT(SetProperty_INVOKEVERSIONING); /* IE8 */
SET_EXPECT(SetProperty_HACK_TRIDENTEVENTSINK);
SET_EXPECT(InitNew); SET_EXPECT(InitNew);
SET_EXPECT(SetScriptSite); SET_EXPECT(SetScriptSite);
SET_EXPECT(GetScriptState); SET_EXPECT(GetScriptState);
SET_EXPECT(SetScriptState_STARTED); SET_EXPECT(SetScriptState_STARTED);
SET_EXPECT(AddNamedItem); SET_EXPECT(AddNamedItem);
SET_EXPECT(SetProperty_ABBREVIATE_GLOBALNAME_RESOLUTION); /* IE8 */
SET_EXPECT(ParseScriptText); SET_EXPECT(ParseScriptText);
SET_EXPECT(SetScriptState_CONNECTED); SET_EXPECT(SetScriptState_CONNECTED);
...@@ -1043,12 +1069,14 @@ static void test_simple_script(void) ...@@ -1043,12 +1069,14 @@ static void test_simple_script(void)
CHECK_CALLED(CreateInstance); CHECK_CALLED(CreateInstance);
CHECK_CALLED(GetInterfaceSafetyOptions); CHECK_CALLED(GetInterfaceSafetyOptions);
CHECK_CALLED(SetInterfaceSafetyOptions); CHECK_CALLED(SetInterfaceSafetyOptions);
CHECK_CALLED(SetProperty); CHECK_CALLED_BROKEN(SetProperty_INVOKEVERSIONING); /* IE8 */
CHECK_CALLED(SetProperty_HACK_TRIDENTEVENTSINK);
CHECK_CALLED(InitNew); CHECK_CALLED(InitNew);
CHECK_CALLED(SetScriptSite); CHECK_CALLED(SetScriptSite);
CHECK_CALLED(GetScriptState); CHECK_CALLED(GetScriptState);
CHECK_CALLED(SetScriptState_STARTED); CHECK_CALLED(SetScriptState_STARTED);
CHECK_CALLED(AddNamedItem); CHECK_CALLED(AddNamedItem);
CHECK_CALLED_BROKEN(SetProperty_ABBREVIATE_GLOBALNAME_RESOLUTION); /* IE8 */
CHECK_CALLED(ParseScriptText); CHECK_CALLED(ParseScriptText);
CHECK_CALLED(SetScriptState_CONNECTED); CHECK_CALLED(SetScriptState_CONNECTED);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment