Jacek Caban : mshtml: Added IPersistStreamInit::Load test.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri May 11 07:28:03 CDT 2007
Module: wine
Branch: master
Commit: 66067781d6e5df7499abe419216172e630383056
URL: http://source.winehq.org/git/wine.git/?a=commit;h=66067781d6e5df7499abe419216172e630383056
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri May 11 13:18:20 2007 +0200
mshtml: Added IPersistStreamInit::Load test.
---
dlls/mshtml/tests/htmldoc.c | 102 ++++++++++++++++++++++++++++++++++++++-----
1 files changed, 91 insertions(+), 11 deletions(-)
diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index 730833c..37e7f5a 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -120,10 +120,11 @@ DEFINE_EXPECT(Protocol_Read);
DEFINE_EXPECT(LockRequest);
DEFINE_EXPECT(UnlockRequest);
+static IUnknown *doc_unk;
static BOOL expect_LockContainer_fLock;
static BOOL expect_SetActiveObject_active;
static BOOL set_clientsite = FALSE, container_locked = FALSE;
-static BOOL readystate_set_loading = FALSE;
+static BOOL readystate_set_loading = FALSE, load_from_stream;
static BOOL editmode = FALSE;
static int stream_read, protocol_read;
static enum load_state_t {
@@ -2054,8 +2055,6 @@ static void test_readyState(IUnknown *unk)
BSTR state;
HRESULT hres;
- static IUnknown *_unk;
-
static const WCHAR wszUninitialized[] = {'u','n','i','n','i','t','i','a','l','i','z','e','d',0};
static const WCHAR wszLoading[] = {'l','o','a','d','i','n','g',0};
static const WCHAR wszInteractive[] = {'i','n','t','e','r','a','c','t','i','v','e',0};
@@ -2069,8 +2068,8 @@ static void test_readyState(IUnknown *unk)
wszUninitialized
};
- if(!unk) unk = _unk;
- else _unk = unk;
+ if(!unk)
+ unk = doc_unk;
hres = IUnknown_QueryInterface(unk, &IID_IHTMLDocument2, (void**)&htmldoc);
ok(hres == S_OK, "QueryInterface(IID_IHTMLDocument2) failed: %08x\n", hres);
@@ -2239,7 +2238,8 @@ static void test_download(BOOL verb_done, BOOL css_dwl)
if(verb_done) {
SET_EXPECT(Exec_SETPROGRESSMAX);
- SET_EXPECT(GetHostInfo);
+ if(!load_from_stream)
+ SET_EXPECT(GetHostInfo);
}
SET_EXPECT(SetStatusText);
SET_EXPECT(Exec_SETDOWNLOADSTATE_1);
@@ -2268,7 +2268,8 @@ static void test_download(BOOL verb_done, BOOL css_dwl)
if(verb_done) {
CHECK_CALLED(Exec_SETPROGRESSMAX);
- CHECK_CALLED(GetHostInfo);
+ if(!load_from_stream)
+ CHECK_CALLED(GetHostInfo);
}
CHECK_CALLED(SetStatusText);
CHECK_CALLED(Exec_SETDOWNLOADSTATE_1);
@@ -2408,10 +2409,8 @@ static void test_QueryStatus(IUnknown *unk, REFIID cgid, ULONG cmdid, DWORD cmdf
static void test_MSHTML_QueryStatus(IUnknown *unk, DWORD cmdf)
{
- static IUnknown *_unk;
-
- if(unk) _unk = unk;
- else unk = _unk;
+ if(!unk)
+ unk = doc_unk;
test_QueryStatus(unk, &CGID_MSHTML, IDM_FONTNAME, cmdf);
test_QueryStatus(unk, &CGID_MSHTML, IDM_FONTSIZE, cmdf);
@@ -2987,6 +2986,35 @@ static void test_Navigate(IUnknown *unk)
IHlinkTarget_Release(hlink);
}
+static void test_StreamLoad(IUnknown *unk)
+{
+ IPersistStreamInit *init;
+ HRESULT hres;
+
+ hres = IUnknown_QueryInterface(unk, &IID_IPersistStreamInit, (void**)&init);
+ ok(hres == S_OK, "QueryInterface(IID_IPersistStreamInit) failed: %08x\n", hres);
+ if(FAILED(hres))
+ return;
+
+ SET_EXPECT(Invoke_AMBIENT_SILENT);
+ SET_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
+ SET_EXPECT(Exec_ShellDocView_37);
+ SET_EXPECT(OnChanged_READYSTATE);
+ SET_EXPECT(Read);
+ readystate_set_loading = TRUE;
+
+ hres = IPersistStreamInit_Load(init, &Stream);
+ ok(hres == S_OK, "Load failed: %08x\n", hres);
+
+ CHECK_CALLED(Invoke_AMBIENT_SILENT);
+ CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
+ CHECK_CALLED(Exec_ShellDocView_37);
+ CHECK_CALLED(OnChanged_READYSTATE);
+ CHECK_CALLED(Read);
+
+ IPersistStreamInit_Release(init);
+}
+
static void test_QueryInterface(IUnknown *unk)
{
IRunnableObject *runnable = (IRunnableObject*)0xdeadbeef;
@@ -2998,8 +3026,10 @@ static void test_QueryInterface(IUnknown *unk)
}
static void init_test(enum load_state_t ls) {
+ doc_unk = NULL;
hwnd = last_hwnd = NULL;
set_clientsite = FALSE;
+ load_from_stream = FALSE;
call_UIActivate = FALSE;
load_state = ls;
editmode = FALSE;
@@ -3020,6 +3050,7 @@ static void test_HTMLDocument(enum load_state_t ls)
hres = create_document(&unk);
if(FAILED(hres))
return;
+ doc_unk = unk;
test_QueryInterface(unk);
test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
@@ -3100,6 +3131,7 @@ static void test_HTMLDocument_hlink(void)
hres = create_document(&unk);
if(FAILED(hres))
return;
+ doc_unk = unk;
test_ConnectionPointContainer(unk);
test_Persist(unk);
@@ -3121,6 +3153,52 @@ static void test_HTMLDocument_hlink(void)
ok(ref == 0, "ref=%d, expected 0\n", ref);
}
+static void test_HTMLDocument_StreamLoad(void)
+{
+ IOleObject *oleobj;
+ IUnknown *unk;
+ HRESULT hres;
+ ULONG ref;
+
+ trace("Testing HTMLDocument (IPersistStreamInit)...\n");
+
+ init_test(LD_DOLOAD);
+ load_from_stream = TRUE;
+
+ hres = create_document(&unk);
+ if(FAILED(hres))
+ return;
+ doc_unk = unk;
+
+ hres = IUnknown_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj);
+ ok(hres == S_OK, "Could not get IOleObject: %08x\n", hres);
+
+ test_readyState(unk);
+ test_ConnectionPointContainer(unk);
+ test_ClientSite(oleobj, CLIENTSITE_EXPECTPATH);
+ test_DoVerb(oleobj);
+ test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
+
+ IOleObject_Release(oleobj);
+
+ test_StreamLoad(unk);
+ test_download(TRUE, FALSE);
+
+ test_MSHTML_QueryStatus(unk, OLECMDF_SUPPORTED);
+ test_UIDeactivate();
+ test_InPlaceDeactivate(unk, TRUE);
+ test_Close(unk, FALSE);
+
+ if(view) {
+ IOleDocumentView_Release(view);
+ view = NULL;
+ }
+
+
+ ref = IUnknown_Release(unk);
+ ok(ref == 0, "ref=%d, expected 0\n", ref);
+}
+
static void test_editing_mode(void)
{
IUnknown *unk;
@@ -3135,6 +3213,7 @@ static void test_editing_mode(void)
hres = create_document(&unk);
if(FAILED(hres))
return;
+ doc_unk = unk;
hres = IUnknown_QueryInterface(unk, &IID_IOleObject, (void**)&oleobj);
ok(hres == S_OK, "Could not get IOleObject: %08x\n", hres);
@@ -3223,6 +3302,7 @@ START_TEST(htmldoc)
test_HTMLDocument(LD_NO);
test_HTMLDocument(LD_DOLOAD);
test_HTMLDocument_hlink();
+ test_HTMLDocument_StreamLoad();
test_editing_mode();
DestroyWindow(container_hwnd);
More information about the wine-cvs
mailing list