mshtml: Skip tests depending on iframe onload event on IEs older than IE9.
This commit is contained in:
parent
e5dbd6e9f0
commit
74067c56b1
|
@ -89,6 +89,7 @@ static HWND container_hwnd = NULL;
|
|||
static IHTMLWindow2 *window;
|
||||
static IOleDocumentView *view;
|
||||
static BOOL xy_todo;
|
||||
static BOOL is_ie9plus;
|
||||
|
||||
typedef struct {
|
||||
LONG x;
|
||||
|
@ -2170,13 +2171,11 @@ static IHTMLDocument2* get_iframe_doc(IHTMLIFrameElement *iframe)
|
|||
|
||||
static void test_iframe_connections(IHTMLDocument2 *doc)
|
||||
{
|
||||
IHTMLFrameBase2 *frame_base2;
|
||||
IHTMLIFrameElement *iframe;
|
||||
IHTMLDocument2 *iframes_doc;
|
||||
DWORD cookie;
|
||||
IConnectionPoint *cp;
|
||||
IHTMLElement *element;
|
||||
VARIANT v;
|
||||
BSTR str;
|
||||
HRESULT hres;
|
||||
|
||||
|
@ -2198,33 +2197,40 @@ static void test_iframe_connections(IHTMLDocument2 *doc)
|
|||
|
||||
unregister_cp((IUnknown*)iframes_doc, &IID_IDispatch, cookie);
|
||||
|
||||
hres = IHTMLIFrameElement_QueryInterface(iframe, &IID_IHTMLFrameBase2, (void**)&frame_base2);
|
||||
ok(hres == S_OK, "Could not get IHTMLFrameBase2 iface: %08x\n", hres);
|
||||
if(is_ie9plus) {
|
||||
IHTMLFrameBase2 *frame_base2;
|
||||
VARIANT v;
|
||||
|
||||
V_VT(&v) = VT_DISPATCH;
|
||||
V_DISPATCH(&v) = (IDispatch*)&iframe_onload_obj;
|
||||
hres = IHTMLFrameBase2_put_onload(frame_base2, v);
|
||||
ok(hres == S_OK, "put_onload failed: %08x\n", hres);
|
||||
hres = IHTMLIFrameElement_QueryInterface(iframe, &IID_IHTMLFrameBase2, (void**)&frame_base2);
|
||||
ok(hres == S_OK, "Could not get IHTMLFrameBase2 iface: %08x\n", hres);
|
||||
|
||||
IHTMLFrameBase2_Release(frame_base2);
|
||||
V_VT(&v) = VT_DISPATCH;
|
||||
V_DISPATCH(&v) = (IDispatch*)&iframe_onload_obj;
|
||||
hres = IHTMLFrameBase2_put_onload(frame_base2, v);
|
||||
ok(hres == S_OK, "put_onload failed: %08x\n", hres);
|
||||
|
||||
str = a2bstr("about:blank");
|
||||
hres = IHTMLDocument2_put_URL(iframes_doc, str);
|
||||
ok(hres == S_OK, "put_URL failed: %08x\n", hres);
|
||||
SysFreeString(str);
|
||||
IHTMLFrameBase2_Release(frame_base2);
|
||||
|
||||
SET_EXPECT(iframe_onload);
|
||||
pump_msgs(&called_iframe_onload);
|
||||
CHECK_CALLED(iframe_onload);
|
||||
str = a2bstr("about:blank");
|
||||
hres = IHTMLDocument2_put_URL(iframes_doc, str);
|
||||
ok(hres == S_OK, "put_URL failed: %08x\n", hres);
|
||||
SysFreeString(str);
|
||||
|
||||
str = a2bstr("about:test");
|
||||
hres = IHTMLDocument2_put_URL(iframes_doc, str);
|
||||
ok(hres == S_OK, "put_URL failed: %08x\n", hres);
|
||||
SysFreeString(str);
|
||||
SET_EXPECT(iframe_onload);
|
||||
pump_msgs(&called_iframe_onload);
|
||||
CHECK_CALLED(iframe_onload);
|
||||
|
||||
SET_EXPECT(iframe_onload);
|
||||
pump_msgs(&called_iframe_onload);
|
||||
CHECK_CALLED(iframe_onload);
|
||||
str = a2bstr("about:test");
|
||||
hres = IHTMLDocument2_put_URL(iframes_doc, str);
|
||||
ok(hres == S_OK, "put_URL failed: %08x\n", hres);
|
||||
SysFreeString(str);
|
||||
|
||||
SET_EXPECT(iframe_onload);
|
||||
pump_msgs(&called_iframe_onload);
|
||||
CHECK_CALLED(iframe_onload);
|
||||
}else {
|
||||
win_skip("Skipping iframe onload tests on IE older than 9.\n");
|
||||
}
|
||||
|
||||
IHTMLDocument2_Release(iframes_doc);
|
||||
}
|
||||
|
@ -2733,24 +2739,12 @@ static void set_client_site(IHTMLDocument2 *doc, BOOL set)
|
|||
static IHTMLDocument2 *create_document(void)
|
||||
{
|
||||
IHTMLDocument2 *doc;
|
||||
IHTMLDocument5 *doc5;
|
||||
HRESULT hres;
|
||||
|
||||
hres = CoCreateInstance(&CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||
&IID_IHTMLDocument2, (void**)&doc);
|
||||
ok(hres == S_OK, "CoCreateInstance failed: %08x\n", hres);
|
||||
if (FAILED(hres))
|
||||
return NULL;
|
||||
|
||||
hres = IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument5, (void**)&doc5);
|
||||
if(FAILED(hres)) {
|
||||
win_skip("Could not get IHTMLDocument5 interface, probably too old IE\n");
|
||||
IHTMLDocument2_Release(doc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
IHTMLDocument5_Release(doc5);
|
||||
return doc;
|
||||
return SUCCEEDED(hres) ? doc : NULL;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2851,24 +2845,57 @@ static void test_empty_document(void)
|
|||
IHTMLDocument2_Release(doc);
|
||||
}
|
||||
|
||||
static BOOL check_ie(void)
|
||||
{
|
||||
IHTMLDocument2 *doc;
|
||||
IHTMLDocument5 *doc5;
|
||||
IHTMLDocument7 *doc7;
|
||||
HRESULT hres;
|
||||
|
||||
doc = create_document();
|
||||
if(!doc)
|
||||
return FALSE;
|
||||
|
||||
hres = IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument7, (void**)&doc7);
|
||||
if(SUCCEEDED(hres)) {
|
||||
is_ie9plus = TRUE;
|
||||
IHTMLDocument7_Release(doc7);
|
||||
}
|
||||
|
||||
trace("is_ie9plus %x\n", is_ie9plus);
|
||||
|
||||
hres = IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument5, (void**)&doc5);
|
||||
if(SUCCEEDED(hres))
|
||||
IHTMLDocument5_Release(doc5);
|
||||
|
||||
IHTMLDocument2_Release(doc);
|
||||
return SUCCEEDED(hres);
|
||||
}
|
||||
|
||||
START_TEST(events)
|
||||
{
|
||||
CoInitialize(NULL);
|
||||
container_hwnd = create_container_window();
|
||||
|
||||
if(winetest_interactive)
|
||||
ShowWindow(container_hwnd, SW_SHOW);
|
||||
if(check_ie()) {
|
||||
container_hwnd = create_container_window();
|
||||
|
||||
run_test(empty_doc_str, test_timeout);
|
||||
run_test(click_doc_str, test_onclick);
|
||||
run_test(readystate_doc_str, test_onreadystatechange);
|
||||
run_test(img_doc_str, test_imgload);
|
||||
run_test(input_doc_str, test_focus);
|
||||
run_test(form_doc_str, test_submit);
|
||||
run_test(iframe_doc_str, test_iframe_connections);
|
||||
if(winetest_interactive)
|
||||
ShowWindow(container_hwnd, SW_SHOW);
|
||||
|
||||
test_empty_document();
|
||||
run_test(empty_doc_str, test_timeout);
|
||||
run_test(click_doc_str, test_onclick);
|
||||
run_test(readystate_doc_str, test_onreadystatechange);
|
||||
run_test(img_doc_str, test_imgload);
|
||||
run_test(input_doc_str, test_focus);
|
||||
run_test(form_doc_str, test_submit);
|
||||
run_test(iframe_doc_str, test_iframe_connections);
|
||||
|
||||
test_empty_document();
|
||||
|
||||
DestroyWindow(container_hwnd);
|
||||
}else {
|
||||
win_skip("Too old IE\n");
|
||||
}
|
||||
|
||||
DestroyWindow(container_hwnd);
|
||||
CoUninitialize();
|
||||
}
|
||||
|
|
|
@ -150,6 +150,7 @@ static const GUID CLSID_TestScript =
|
|||
static const GUID CLSID_TestActiveX =
|
||||
{0x178fc163,0xf585,0x4e24,{0x9c,0x13,0x4b,0xb7,0xfa,0xf8,0x06,0x46}};
|
||||
|
||||
static BOOL is_ie9plus;
|
||||
static IHTMLDocument2 *notif_doc;
|
||||
static IOleDocumentView *view;
|
||||
static IDispatchEx *window_dispex;
|
||||
|
@ -1165,23 +1166,12 @@ static HRESULT QueryInterface(REFIID riid, void **ppv)
|
|||
static IHTMLDocument2 *create_document(void)
|
||||
{
|
||||
IHTMLDocument2 *doc;
|
||||
IHTMLDocument5 *doc5;
|
||||
HRESULT hres;
|
||||
|
||||
hres = CoCreateInstance(&CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||
&IID_IHTMLDocument2, (void**)&doc);
|
||||
ok(hres == S_OK, "CoCreateInstance failed: %08x\n", hres);
|
||||
if (hres != S_OK) return NULL;
|
||||
|
||||
hres = IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument5, (void**)&doc5);
|
||||
if(FAILED(hres)) {
|
||||
win_skip("Could not get IHTMLDocument5, probably too old IE\n");
|
||||
IHTMLDocument2_Release(doc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
IHTMLDocument5_Release(doc5);
|
||||
return doc;
|
||||
return SUCCEEDED(hres) ? doc : NULL;
|
||||
}
|
||||
|
||||
static void load_string(IHTMLDocument2 *doc, const char *str)
|
||||
|
@ -2831,7 +2821,10 @@ static void run_js_tests(void)
|
|||
run_js_script("exectest.html");
|
||||
run_js_script("vbtest.html");
|
||||
run_js_script("events.html");
|
||||
run_js_script("nav_test.html");
|
||||
if(is_ie9plus)
|
||||
run_js_script("nav_test.html");
|
||||
else
|
||||
win_skip("Skipping nav_test.html on IE older than 9 (for broken ieframe onload).\n");
|
||||
}
|
||||
|
||||
static BOOL init_registry(BOOL init)
|
||||
|
@ -2883,21 +2876,52 @@ static HWND create_container_window(void)
|
|||
300, 300, NULL, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
static BOOL check_ie(void)
|
||||
{
|
||||
IHTMLDocument2 *doc;
|
||||
IHTMLDocument5 *doc5;
|
||||
IHTMLDocument7 *doc7;
|
||||
HRESULT hres;
|
||||
|
||||
doc = create_document();
|
||||
if(!doc)
|
||||
return FALSE;
|
||||
|
||||
hres = IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument7, (void**)&doc7);
|
||||
if(SUCCEEDED(hres)) {
|
||||
is_ie9plus = TRUE;
|
||||
IHTMLDocument7_Release(doc7);
|
||||
}
|
||||
|
||||
trace("is_ie9plus %x\n", is_ie9plus);
|
||||
|
||||
hres = IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument5, (void**)&doc5);
|
||||
if(SUCCEEDED(hres))
|
||||
IHTMLDocument5_Release(doc5);
|
||||
|
||||
IHTMLDocument2_Release(doc);
|
||||
return SUCCEEDED(hres);
|
||||
}
|
||||
|
||||
START_TEST(script)
|
||||
{
|
||||
CoInitialize(NULL);
|
||||
container_hwnd = create_container_window();
|
||||
|
||||
if(winetest_interactive || ! is_ie_hardened()) {
|
||||
if(register_script_engine()) {
|
||||
test_simple_script();
|
||||
init_registry(FALSE);
|
||||
if(check_ie()) {
|
||||
if(winetest_interactive || ! is_ie_hardened()) {
|
||||
if(register_script_engine()) {
|
||||
test_simple_script();
|
||||
init_registry(FALSE);
|
||||
}else {
|
||||
skip("Could not register TestScript engine\n");
|
||||
}
|
||||
run_js_tests();
|
||||
}else {
|
||||
skip("Could not register TestScript engine\n");
|
||||
skip("IE running in Enhanced Security Configuration\n");
|
||||
}
|
||||
run_js_tests();
|
||||
}else {
|
||||
skip("IE running in Enhanced Security Configuration\n");
|
||||
win_skip("Too old IE.\n");
|
||||
}
|
||||
|
||||
DestroyWindow(container_hwnd);
|
||||
|
|
Loading…
Reference in New Issue