mirror of
https://github.com/reactos/reactos.git
synced 2025-06-29 05:59:43 +00:00
sync mshtml and shdocvw winetests with wine 1.1.14
svn path=/trunk/; revision=39390
This commit is contained in:
parent
cc12355d0e
commit
43eb75a9e4
12 changed files with 5053 additions and 142 deletions
|
@ -25,6 +25,7 @@
|
|||
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "initguid.h"
|
||||
#include "ole2.h"
|
||||
#include "mshtml.h"
|
||||
#include "docobj.h"
|
||||
|
@ -36,7 +37,8 @@
|
|||
#include "idispids.h"
|
||||
#include "shlguid.h"
|
||||
|
||||
#include "initguid.h"
|
||||
DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
|
||||
DEFINE_GUID(IID_IProxyManager,0x00000008,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
|
||||
DEFINE_OLEGUID(CGID_DocHostCmdPriv, 0x000214D4L, 0, 0);
|
||||
|
||||
#define DEFINE_EXPECT(func) \
|
||||
|
@ -136,6 +138,10 @@ DEFINE_EXPECT(RequestUIActivate);
|
|||
DEFINE_EXPECT(InPlaceFrame_SetBorderSpace);
|
||||
DEFINE_EXPECT(InPlaceUIWindow_SetActiveObject);
|
||||
DEFINE_EXPECT(GetExternal);
|
||||
DEFINE_EXPECT(EnableModeless_TRUE);
|
||||
DEFINE_EXPECT(EnableModeless_FALSE);
|
||||
DEFINE_EXPECT(Frame_EnableModeless_TRUE);
|
||||
DEFINE_EXPECT(Frame_EnableModeless_FALSE);
|
||||
|
||||
static IUnknown *doc_unk;
|
||||
static BOOL expect_LockContainer_fLock;
|
||||
|
@ -143,7 +149,7 @@ static BOOL expect_InPlaceUIWindow_SetActiveObject_active = TRUE;
|
|||
static BOOL ipsex;
|
||||
static BOOL set_clientsite = FALSE, container_locked = FALSE;
|
||||
static BOOL readystate_set_loading = FALSE, load_from_stream;
|
||||
static BOOL editmode = FALSE;
|
||||
static BOOL editmode = FALSE, show_failed;
|
||||
static int stream_read, protocol_read;
|
||||
static enum load_state_t {
|
||||
LD_DOLOAD,
|
||||
|
@ -649,11 +655,13 @@ static HRESULT WINAPI PropertyNotifySink_OnChanged(IPropertyNotifySink *iface, D
|
|||
readystate_set_loading = FALSE;
|
||||
load_state = LD_LOADING;
|
||||
}
|
||||
test_readyState(NULL);
|
||||
if(!editmode || load_state != LD_LOADING || !called_Exec_Explorer_69)
|
||||
test_readyState(NULL);
|
||||
return S_OK;
|
||||
case 1005:
|
||||
CHECK_EXPECT(OnChanged_1005);
|
||||
test_readyState(NULL);
|
||||
if(!editmode)
|
||||
test_readyState(NULL);
|
||||
load_state = LD_INTERACTIVE;
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -1007,8 +1015,10 @@ static HRESULT WINAPI Moniker_BindToStorage(IMoniker *iface, IBindCtx *pbc, IMon
|
|||
BINDSTATUS_ENDDOWNLOADDATA, NULL);
|
||||
ok(hres == S_OK, "OnProgress(BINDSTATUS_ENDDOWNLOADDATA) failed: %08x\n", hres);
|
||||
|
||||
SET_EXPECT(GetBindResult);
|
||||
hres = IBindStatusCallback_OnStopBinding(callback, S_OK, NULL);
|
||||
ok(hres == S_OK, "OnStopBinding failed: %08x\n", hres);
|
||||
SET_CALLED(GetBindResult); /* IE7 */
|
||||
|
||||
IBindStatusCallback_Release(callback);
|
||||
|
||||
|
@ -1304,7 +1314,10 @@ static HRESULT WINAPI InPlaceFrame_SetStatusText(IOleInPlaceFrame *iface, LPCOLE
|
|||
|
||||
static HRESULT WINAPI InPlaceFrame_EnableModeless(IOleInPlaceFrame *iface, BOOL fEnable)
|
||||
{
|
||||
ok(0, "unexpected call\n");
|
||||
if(fEnable)
|
||||
CHECK_EXPECT(Frame_EnableModeless_TRUE);
|
||||
else
|
||||
CHECK_EXPECT(Frame_EnableModeless_FALSE);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -1664,11 +1677,6 @@ static HRESULT WINAPI DocumentSite_ActivateMe(IOleDocumentSite *iface, IOleDocum
|
|||
expect_status_text = NULL;
|
||||
|
||||
hres = IOleDocumentView_UIActivate(view, TRUE);
|
||||
|
||||
if(FAILED(hres)) {
|
||||
skip("UIActivate failed: %08x\n", hres);
|
||||
return hres;
|
||||
}
|
||||
ok(hres == S_OK, "UIActivate failed: %08x\n", hres);
|
||||
|
||||
CHECK_CALLED(CanInPlaceActivate);
|
||||
|
@ -1724,6 +1732,14 @@ static HRESULT WINAPI DocumentSite_ActivateMe(IOleDocumentSite *iface, IOleDocum
|
|||
expect_status_text = (load_state == LD_COMPLETE ? (LPCOLESTR)0xdeadbeef : NULL);
|
||||
|
||||
hres = IOleDocumentView_Show(view, TRUE);
|
||||
if(FAILED(hres)) {
|
||||
win_skip("Show failed\n");
|
||||
if(activeobj)
|
||||
IOleInPlaceActiveObject_Release(activeobj);
|
||||
IOleDocument_Release(document);
|
||||
show_failed = TRUE;
|
||||
return S_OK;
|
||||
}
|
||||
ok(hres == S_OK, "Show failed: %08x\n", hres);
|
||||
|
||||
CHECK_CALLED(CanInPlaceActivate);
|
||||
|
@ -1918,7 +1934,10 @@ static HRESULT WINAPI DocHostUIHandler_UpdateUI(IDocHostUIHandler2 *iface)
|
|||
|
||||
static HRESULT WINAPI DocHostUIHandler_EnableModeless(IDocHostUIHandler2 *iface, BOOL fEnable)
|
||||
{
|
||||
ok(0, "unexpected call\n");
|
||||
if(fEnable)
|
||||
CHECK_EXPECT(EnableModeless_TRUE);
|
||||
else
|
||||
CHECK_EXPECT(EnableModeless_FALSE);
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
|
@ -2635,6 +2654,7 @@ static void test_Load(IPersistMoniker *persist)
|
|||
}
|
||||
SET_EXPECT(OnChanged_READYSTATE);
|
||||
SET_EXPECT(Exec_ShellDocView_84);
|
||||
SET_EXPECT(IsSystemMoniker);
|
||||
SET_EXPECT(BindToStorage);
|
||||
SET_EXPECT(SetActiveObject);
|
||||
if(set_clientsite) {
|
||||
|
@ -2672,6 +2692,7 @@ static void test_Load(IPersistMoniker *persist)
|
|||
container_locked = TRUE;
|
||||
}
|
||||
CHECK_CALLED(OnChanged_READYSTATE);
|
||||
SET_CALLED(IsSystemMoniker); /* IE7 */
|
||||
SET_CALLED(Exec_ShellDocView_84);
|
||||
CHECK_CALLED(BindToStorage);
|
||||
SET_CALLED(SetActiveObject); /* FIXME */
|
||||
|
@ -2719,6 +2740,10 @@ static void test_download(BOOL verb_done, BOOL css_dwl, BOOL css_try_dwl)
|
|||
SET_EXPECT(UnlockRequest);
|
||||
}
|
||||
SET_EXPECT(Exec_Explorer_69);
|
||||
SET_EXPECT(EnableModeless_TRUE); /* IE7 */
|
||||
SET_EXPECT(Frame_EnableModeless_TRUE); /* IE7 */
|
||||
SET_EXPECT(EnableModeless_FALSE); /* IE7 */
|
||||
SET_EXPECT(Frame_EnableModeless_FALSE); /* IE7 */
|
||||
SET_EXPECT(OnChanged_1005);
|
||||
SET_EXPECT(OnChanged_READYSTATE);
|
||||
SET_EXPECT(Exec_SETPROGRESSPOS);
|
||||
|
@ -2726,6 +2751,7 @@ static void test_download(BOOL verb_done, BOOL css_dwl, BOOL css_try_dwl)
|
|||
SET_EXPECT(Exec_ShellDocView_103);
|
||||
SET_EXPECT(Exec_MSHTML_PARSECOMPLETE);
|
||||
SET_EXPECT(Exec_HTTPEQUIV_DONE);
|
||||
SET_EXPECT(SetStatusText);
|
||||
expect_status_text = (LPWSTR)0xdeadbeef; /* TODO */
|
||||
|
||||
while(!called_Exec_HTTPEQUIV_DONE && GetMessage(&msg, NULL, 0, 0)) {
|
||||
|
@ -2766,6 +2792,10 @@ static void test_download(BOOL verb_done, BOOL css_dwl, BOOL css_try_dwl)
|
|||
}
|
||||
}
|
||||
SET_CALLED(Exec_Explorer_69);
|
||||
SET_CALLED(EnableModeless_TRUE); /* IE7 */
|
||||
SET_CALLED(Frame_EnableModeless_TRUE); /* IE7 */
|
||||
SET_CALLED(EnableModeless_FALSE); /* IE7 */
|
||||
SET_CALLED(Frame_EnableModeless_FALSE); /* IE7 */
|
||||
CHECK_CALLED(OnChanged_1005);
|
||||
CHECK_CALLED(OnChanged_READYSTATE);
|
||||
CHECK_CALLED(Exec_SETPROGRESSPOS);
|
||||
|
@ -2773,6 +2803,7 @@ static void test_download(BOOL verb_done, BOOL css_dwl, BOOL css_try_dwl)
|
|||
SET_CALLED(Exec_ShellDocView_103);
|
||||
CHECK_CALLED(Exec_MSHTML_PARSECOMPLETE);
|
||||
CHECK_CALLED(Exec_HTTPEQUIV_DONE);
|
||||
SET_CALLED(SetStatusText);
|
||||
|
||||
load_state = LD_COMPLETE;
|
||||
|
||||
|
@ -3044,6 +3075,7 @@ static void test_exec_editmode(IUnknown *unk, BOOL loaded)
|
|||
SET_EXPECT(Invoke_AMBIENT_SILENT);
|
||||
SET_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
|
||||
SET_EXPECT(OnChanged_READYSTATE);
|
||||
SET_EXPECT(IsSystemMoniker);
|
||||
SET_EXPECT(Exec_ShellDocView_84);
|
||||
if(loaded)
|
||||
SET_EXPECT(BindToStorage);
|
||||
|
@ -3069,6 +3101,7 @@ static void test_exec_editmode(IUnknown *unk, BOOL loaded)
|
|||
CHECK_CALLED(Invoke_AMBIENT_SILENT);
|
||||
CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
|
||||
CHECK_CALLED(OnChanged_READYSTATE);
|
||||
SET_CALLED(IsSystemMoniker); /* IE7 */
|
||||
SET_CALLED(Exec_ShellDocView_84);
|
||||
if(loaded)
|
||||
CHECK_CALLED(BindToStorage);
|
||||
|
@ -3199,7 +3232,7 @@ static HWND create_container_window(void)
|
|||
515, 530, NULL, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
static HRESULT test_DoVerb(IOleObject *oleobj)
|
||||
static void test_DoVerb(IOleObject *oleobj)
|
||||
{
|
||||
RECT rect = {0,0,500,500};
|
||||
HRESULT hres;
|
||||
|
@ -3212,8 +3245,6 @@ static HRESULT test_DoVerb(IOleObject *oleobj)
|
|||
expect_LockContainer_fLock = TRUE;
|
||||
|
||||
hres = IOleObject_DoVerb(oleobj, OLEIVERB_SHOW, NULL, &ClientSite, -1, container_hwnd, &rect);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
ok(hres == S_OK, "DoVerb failed: %08x\n", hres);
|
||||
|
||||
if(!container_locked) {
|
||||
|
@ -3222,8 +3253,6 @@ static HRESULT test_DoVerb(IOleObject *oleobj)
|
|||
container_locked = TRUE;
|
||||
}
|
||||
CHECK_CALLED(ActivateMe);
|
||||
|
||||
return hres;
|
||||
}
|
||||
|
||||
#define CLIENTSITE_EXPECTPATH 0x00000001
|
||||
|
@ -3465,7 +3494,7 @@ static void test_InPlaceDeactivate(IUnknown *unk, BOOL expect_call)
|
|||
IOleInPlaceObjectWindowless_Release(windowlessobj);
|
||||
}
|
||||
|
||||
static HRESULT test_Activate(IUnknown *unk, DWORD flags)
|
||||
static void test_Activate(IUnknown *unk, DWORD flags)
|
||||
{
|
||||
IOleObject *oleobj = NULL;
|
||||
IOleDocumentView *docview;
|
||||
|
@ -3480,8 +3509,6 @@ static HRESULT test_Activate(IUnknown *unk, DWORD flags)
|
|||
|
||||
hres = IUnknown_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj);
|
||||
ok(hres == S_OK, "QueryInterface(IID_IOleObject) failed: %08x\n", hres);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
hres = IOleObject_GetUserClassID(oleobj, NULL);
|
||||
ok(hres == E_INVALIDARG, "GetUserClassID returned: %08x, expected E_INVALIDARG\n", hres);
|
||||
|
@ -3494,8 +3521,7 @@ static HRESULT test_Activate(IUnknown *unk, DWORD flags)
|
|||
|
||||
test_ClientSite(oleobj, flags);
|
||||
test_InPlaceDeactivate(unk, FALSE);
|
||||
|
||||
hres = test_DoVerb(oleobj);
|
||||
test_DoVerb(oleobj);
|
||||
|
||||
if(call_UIActivate == CallUIActivate_AfterShow) {
|
||||
hres = IOleObject_QueryInterface(oleobj, &IID_IOleDocumentView, (void **)&docview);
|
||||
|
@ -3523,8 +3549,6 @@ static HRESULT test_Activate(IUnknown *unk, DWORD flags)
|
|||
IOleObject_Release(oleobj);
|
||||
|
||||
test_OnFrameWindowActivate(unk);
|
||||
|
||||
return hres;
|
||||
}
|
||||
|
||||
static void test_Window(IUnknown *unk, BOOL expect_success)
|
||||
|
@ -3612,9 +3636,23 @@ static void test_Hide(void)
|
|||
|
||||
static HRESULT create_document(IUnknown **unk)
|
||||
{
|
||||
HRESULT hres = CoCreateInstance(&CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||
IHTMLDocument5 *doc5;
|
||||
HRESULT hres;
|
||||
|
||||
hres = CoCreateInstance(&CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
|
||||
&IID_IUnknown, (void**)unk);
|
||||
ok(hres == S_OK, "CoCreateInstance failed: %08x\n", hres);
|
||||
if(FAILED(hres))
|
||||
return hres;
|
||||
|
||||
hres = IUnknown_QueryInterface(*unk, &IID_IHTMLDocument5, (void**)&doc5);
|
||||
if(SUCCEEDED(hres)) {
|
||||
IHTMLDocument5_Release(doc5);
|
||||
}else {
|
||||
win_skip("Could not get IHTMLDocument5, probably too old IE\n");
|
||||
IUnknown_Release(*unk);
|
||||
}
|
||||
|
||||
return hres;
|
||||
}
|
||||
|
||||
|
@ -3707,27 +3745,32 @@ static void test_QueryInterface(IUnknown *unk)
|
|||
qi = (void*)0xdeadbeef;
|
||||
hres = IUnknown_QueryInterface(unk, &IID_IRunnableObject, (void**)&qi);
|
||||
ok(hres == E_NOINTERFACE, "QueryInterface returned %08x, expected E_NOINTERFACE\n", hres);
|
||||
ok(qi == NULL, "qirunnable=%p, ezpected NULL\n", qi);
|
||||
ok(qi == NULL, "qirunnable=%p, expected NULL\n", qi);
|
||||
|
||||
qi = (void*)0xdeadbeef;
|
||||
hres = IUnknown_QueryInterface(unk, &IID_IHTMLDOMNode, (void**)&qi);
|
||||
ok(hres == E_NOINTERFACE, "QueryInterface returned %08x, expected E_NOINTERFACE\n", hres);
|
||||
ok(qi == NULL, "qi=%p, ezpected NULL\n", qi);
|
||||
ok(qi == NULL, "qi=%p, expected NULL\n", qi);
|
||||
|
||||
qi = (void*)0xdeadbeef;
|
||||
hres = IUnknown_QueryInterface(unk, &IID_IHTMLDOMNode2, (void**)&qi);
|
||||
ok(hres == E_NOINTERFACE, "QueryInterface returned %08x, expected E_NOINTERFACE\n", hres);
|
||||
ok(qi == NULL, "qi=%p, ezpected NULL\n", qi);
|
||||
ok(qi == NULL, "qi=%p, expected NULL\n", qi);
|
||||
|
||||
qi = (void*)0xdeadbeef;
|
||||
hres = IUnknown_QueryInterface(unk, &IID_IPersistPropertyBag, (void**)&qi);
|
||||
ok(hres == E_NOINTERFACE, "QueryInterface returned %08x, expected E_NOINTERFACE\n", hres);
|
||||
ok(qi == NULL, "qi=%p, ezpected NULL\n", qi);
|
||||
ok(qi == NULL, "qi=%p, expected NULL\n", qi);
|
||||
|
||||
qi = (void*)0xdeadbeef;
|
||||
hres = IUnknown_QueryInterface(unk, &IID_UndocumentedScriptIface, (void**)&qi);
|
||||
ok(hres == E_NOINTERFACE, "QueryInterface returned %08x, expected E_NOINTERFACE\n", hres);
|
||||
ok(qi == NULL, "qi=%p, ezpected NULL\n", qi);
|
||||
ok(qi == NULL, "qi=%p, expected NULL\n", qi);
|
||||
|
||||
qi = (void*)0xdeadbeef;
|
||||
hres = IUnknown_QueryInterface(unk, &IID_IMarshal, (void**)&qi);
|
||||
ok(hres == E_NOINTERFACE, "QueryInterface returned %08x, expected E_NOINTERFACE\n", hres);
|
||||
ok(qi == NULL, "qi=%p, expected NULL\n", qi);
|
||||
}
|
||||
|
||||
static void init_test(enum load_state_t ls) {
|
||||
|
@ -3768,11 +3811,7 @@ static void test_HTMLDocument(BOOL do_load)
|
|||
if(!do_load)
|
||||
test_OnAmbientPropertyChange2(unk);
|
||||
|
||||
hres = test_Activate(unk, CLIENTSITE_EXPECTPATH);
|
||||
if(FAILED(hres)) {
|
||||
IUnknown_Release(unk);
|
||||
return;
|
||||
}
|
||||
test_Activate(unk, CLIENTSITE_EXPECTPATH);
|
||||
|
||||
if(do_load) {
|
||||
test_download(FALSE, TRUE, TRUE);
|
||||
|
@ -3865,6 +3904,10 @@ static void test_HTMLDocument_hlink(void)
|
|||
test_GetCurMoniker(unk, NULL, NULL);
|
||||
test_Persist(unk);
|
||||
test_Navigate(unk);
|
||||
if(show_failed) {
|
||||
IUnknown_Release(unk);
|
||||
return;
|
||||
}
|
||||
|
||||
test_download(FALSE, TRUE, TRUE);
|
||||
|
||||
|
@ -3999,7 +4042,11 @@ static void test_editing_mode(BOOL do_load)
|
|||
|
||||
test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
|
||||
test_download(TRUE, do_load, do_load);
|
||||
|
||||
SET_EXPECT(SetStatusText); /* ignore race in native mshtml */
|
||||
test_timer(EXPECT_UPDATEUI);
|
||||
SET_CALLED(SetStatusText);
|
||||
|
||||
test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED|OLECMDF_ENABLED);
|
||||
|
||||
if(!do_load) {
|
||||
|
@ -4088,6 +4135,31 @@ static void gecko_installer_workaround(BOOL disable)
|
|||
RegCloseKey(hkey);
|
||||
}
|
||||
|
||||
static void test_HTMLDoc_ISupportErrorInfo(void)
|
||||
{
|
||||
HRESULT hres;
|
||||
IUnknown *unk;
|
||||
ISupportErrorInfo *sinfo;
|
||||
LONG ref;
|
||||
|
||||
hres = create_document(&unk);
|
||||
if(FAILED(hres))
|
||||
return;
|
||||
|
||||
hres = IUnknown_QueryInterface(unk, &IID_ISupportErrorInfo, (void**)&sinfo);
|
||||
ok(hres == S_OK, "got %x\n", hres);
|
||||
ok(sinfo != NULL, "got %p\n", sinfo);
|
||||
if(sinfo)
|
||||
{
|
||||
hres = ISupportErrorInfo_InterfaceSupportsErrorInfo(sinfo, &IID_IErrorInfo);
|
||||
ok(hres == S_FALSE, "Expected S_OK, got %x\n", hres);
|
||||
IUnknown_Release(sinfo);
|
||||
}
|
||||
|
||||
ref = IUnknown_Release(unk);
|
||||
ok(ref == 0, "ref=%d, expected 0\n", ref);
|
||||
}
|
||||
|
||||
START_TEST(htmldoc)
|
||||
{
|
||||
gecko_installer_workaround(TRUE);
|
||||
|
@ -4096,12 +4168,15 @@ START_TEST(htmldoc)
|
|||
container_hwnd = create_container_window();
|
||||
register_protocol();
|
||||
|
||||
test_HTMLDocument(FALSE);
|
||||
test_HTMLDocument(TRUE);
|
||||
test_HTMLDocument_hlink();
|
||||
test_HTMLDocument_StreamLoad();
|
||||
test_editing_mode(FALSE);
|
||||
test_editing_mode(TRUE);
|
||||
if(!show_failed) {
|
||||
test_HTMLDocument(FALSE);
|
||||
test_HTMLDocument(TRUE);
|
||||
test_HTMLDocument_StreamLoad();
|
||||
test_editing_mode(FALSE);
|
||||
test_editing_mode(TRUE);
|
||||
}
|
||||
test_HTMLDoc_ISupportErrorInfo();
|
||||
|
||||
DestroyWindow(container_hwnd);
|
||||
CoUninitialize();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue