mshtml: Added IPersistHistory tests.
This commit is contained in:
parent
8f1bb21f35
commit
0d1ce5a308
|
@ -130,6 +130,7 @@ DEFINE_EXPECT(Exec_ShellDocView_67);
|
|||
DEFINE_EXPECT(Exec_ShellDocView_84);
|
||||
DEFINE_EXPECT(Exec_ShellDocView_103);
|
||||
DEFINE_EXPECT(Exec_ShellDocView_105);
|
||||
DEFINE_EXPECT(Exec_ShellDocView_138);
|
||||
DEFINE_EXPECT(Exec_ShellDocView_140);
|
||||
DEFINE_EXPECT(Exec_UPDATECOMMANDS);
|
||||
DEFINE_EXPECT(Exec_SETTITLE);
|
||||
|
@ -208,6 +209,7 @@ static BOOL asynchronous_binding = FALSE;
|
|||
static BOOL support_wbapp, allow_new_window;
|
||||
static BOOL report_mime;
|
||||
static int stream_read, protocol_read;
|
||||
static IStream *history_stream;
|
||||
static enum load_state_t {
|
||||
LD_DOLOAD,
|
||||
LD_LOADING,
|
||||
|
@ -369,6 +371,7 @@ static void _test_GetCurMoniker(unsigned line, IUnknown *unk, IMoniker *exmon, c
|
|||
IPersistMoniker *permon;
|
||||
IMoniker *mon = (void*)0xdeadbeef;
|
||||
BSTR doc_url = (void*)0xdeadbeef;
|
||||
const WCHAR *ptr;
|
||||
HRESULT hres;
|
||||
|
||||
if(open_call)
|
||||
|
@ -384,6 +387,7 @@ static void _test_GetCurMoniker(unsigned line, IUnknown *unk, IMoniker *exmon, c
|
|||
|
||||
hres = IHTMLDocument2_get_URL(doc, &doc_url);
|
||||
ok(hres == S_OK, "get_URL failed: %08x\n", hres);
|
||||
for(ptr = doc_url; *ptr && *ptr != '#'; ptr++);
|
||||
|
||||
hres = IPersistMoniker_GetCurMoniker(permon, &mon);
|
||||
IPersistMoniker_Release(permon);
|
||||
|
@ -405,8 +409,8 @@ static void _test_GetCurMoniker(unsigned line, IUnknown *unk, IMoniker *exmon, c
|
|||
expect_GetDisplayName = exb;
|
||||
called_GetDisplayName = clb;
|
||||
|
||||
if(!loading_hash)
|
||||
ok(!lstrcmpW(url, doc_url), "url != doc_url\n");
|
||||
if(!*ptr)
|
||||
ok(!lstrcmpW(url, doc_url), "url %s != doc_url %s\n", wine_dbgstr_w(url), wine_dbgstr_w(doc_url));
|
||||
else
|
||||
ok(!strcmp_wa(url, nav_serv_url), "url = %s, expected %s\n", wine_dbgstr_w(url), nav_serv_url);
|
||||
CoTaskMemFree(url);
|
||||
|
@ -419,7 +423,8 @@ static void _test_GetCurMoniker(unsigned line, IUnknown *unk, IMoniker *exmon, c
|
|||
ok(hres == S_OK, "GetDisplayName failed: %08x\n", hres);
|
||||
|
||||
ok_(__FILE__,line)(!strcmp_wa(url, exurl), "unexpected url %s\n", wine_dbgstr_w(url));
|
||||
ok_(__FILE__,line)(!lstrcmpW(url, doc_url), "url != doc_url\n");
|
||||
if(!*ptr)
|
||||
ok_(__FILE__,line)(!lstrcmpW(url, doc_url), "url %s != doc_url %s\n", wine_dbgstr_w(url), wine_dbgstr_w(doc_url));
|
||||
|
||||
CoTaskMemFree(url);
|
||||
}else {
|
||||
|
@ -867,7 +872,7 @@ static HRESULT WINAPI NewWindowManager_EvaluateNewWindow(INewWindowManager *ifac
|
|||
|
||||
ok(!strcmp_wa(pszUrl, "about:blank"), "pszUrl = %s\n", wine_dbgstr_w(pszUrl));
|
||||
ok(!strcmp_wa(pszName, "test"), "pszName = %s\n", wine_dbgstr_w(pszName));
|
||||
ok(!strcmp_wa(pszUrlContext, "about:replace"), "pszUrlContext = %s\n", wine_dbgstr_w(pszUrlContext));
|
||||
ok(!strcmp_wa(pszUrlContext, prev_url), "pszUrlContext = %s\n", wine_dbgstr_w(pszUrlContext));
|
||||
ok(!pszFeatures, "pszFeatures = %s\n", wine_dbgstr_w(pszFeatures));
|
||||
ok(!fReplace, "fReplace = %x\n", fReplace);
|
||||
ok(dwFlags == (allow_new_window ? 0 : NWMF_FIRST), "dwFlags = %x\n", dwFlags);
|
||||
|
@ -932,7 +937,7 @@ static HRESULT WINAPI PropertyNotifySink_OnChanged(IPropertyNotifySink *iface, D
|
|||
readystate_set_interactive = (load_state != LD_INTERACTIVE);
|
||||
return S_OK;
|
||||
case 1012:
|
||||
CHECK_EXPECT(OnChanged_1012);
|
||||
CHECK_EXPECT2(OnChanged_1012);
|
||||
return S_OK;
|
||||
case 1030:
|
||||
case 3000022:
|
||||
|
@ -2696,6 +2701,29 @@ static HRESULT WINAPI OleCommandTarget_QueryStatus(IOleCommandTarget *iface, con
|
|||
return E_FAIL;
|
||||
}
|
||||
|
||||
static void test_save_history(IUnknown *unk)
|
||||
{
|
||||
IPersistHistory *per_hist;
|
||||
LARGE_INTEGER li;
|
||||
IStream *stream;
|
||||
HRESULT hres;
|
||||
|
||||
hres = IUnknown_QueryInterface(unk, &IID_IPersistHistory, (void**)&per_hist);
|
||||
ok(hres == S_OK, "Could not get IPersistHistory iface: %08x\n", hres);
|
||||
|
||||
hres = CreateStreamOnHGlobal(NULL, TRUE, &stream);
|
||||
ok(hres == S_OK, "CreateStreamOnHGlobal failed: %08x\n", hres);
|
||||
|
||||
hres = IPersistHistory_SaveHistory(per_hist, stream);
|
||||
ok(hres == S_OK, "SaveHistory failed: %08x\n", hres);
|
||||
IPersistHistory_Release(per_hist);
|
||||
|
||||
li.QuadPart = 0;
|
||||
hres = IStream_Seek(stream, li, STREAM_SEEK_SET, NULL);
|
||||
ok(hres == S_OK, "Stat failed: %08x\n", hres);
|
||||
history_stream = stream;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID *pguidCmdGroup,
|
||||
DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
|
||||
{
|
||||
|
@ -2797,7 +2825,7 @@ static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID
|
|||
CHECK_EXPECT2(Exec_ShellDocView_37);
|
||||
|
||||
if(nav_url)
|
||||
test_GetCurMoniker(doc_unk, NULL, nav_url);
|
||||
test_GetCurMoniker(doc_unk, NULL, nav_serv_url);
|
||||
else if(load_from_stream)
|
||||
test_GetCurMoniker(doc_unk, NULL, "about:blank");
|
||||
else if(!editmode)
|
||||
|
@ -2870,6 +2898,12 @@ static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID
|
|||
|
||||
return E_NOTIMPL;
|
||||
|
||||
case 138:
|
||||
CHECK_EXPECT2(Exec_ShellDocView_138);
|
||||
ok(!pvaIn, "pvaIn != NULL\n");
|
||||
ok(!pvaOut, "pvaOut != NULL\n");
|
||||
return S_OK;
|
||||
|
||||
case 140:
|
||||
CHECK_EXPECT2(Exec_ShellDocView_140);
|
||||
|
||||
|
@ -2980,6 +3014,8 @@ static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID
|
|||
ok(!pvaOut, "pvaOut != NULL\n");
|
||||
|
||||
test_current_url(doc_unk, prev_url);
|
||||
if(!history_stream)
|
||||
test_save_history(doc_unk);
|
||||
|
||||
return S_OK;
|
||||
case 69:
|
||||
|
@ -5004,6 +5040,7 @@ static void test_Load(IPersistMoniker *persist, IMoniker *mon)
|
|||
#define DWL_JAVASCRIPT 0x0020
|
||||
#define DWL_ONREADY_LOADING 0x0040
|
||||
#define DWL_EXPECT_HISTUPDATE 0x0080
|
||||
#define DWL_FROM_HISTORY 0x0100
|
||||
|
||||
static void test_download(DWORD flags)
|
||||
{
|
||||
|
@ -5054,7 +5091,8 @@ static void test_download(DWORD flags)
|
|||
if((nav_url && !is_js) || (flags & (DWL_CSS|DWL_HTTP)))
|
||||
SET_EXPECT(Exec_ShellDocView_37);
|
||||
if(flags & DWL_HTTP) {
|
||||
SET_EXPECT(OnChanged_1012);
|
||||
if(!(flags & DWL_FROM_HISTORY))
|
||||
SET_EXPECT(OnChanged_1012);
|
||||
SET_EXPECT(Exec_HTTPEQUIV);
|
||||
SET_EXPECT(Exec_SETTITLE);
|
||||
}
|
||||
|
@ -5141,7 +5179,8 @@ static void test_download(DWORD flags)
|
|||
else if(flags & (DWL_CSS|DWL_HTTP))
|
||||
CLEAR_CALLED(Exec_ShellDocView_37); /* Called by IE9 */
|
||||
if(flags & DWL_HTTP) {
|
||||
todo_wine CHECK_CALLED(OnChanged_1012);
|
||||
if(!(flags & DWL_FROM_HISTORY))
|
||||
todo_wine CHECK_CALLED(OnChanged_1012);
|
||||
todo_wine CHECK_CALLED(Exec_HTTPEQUIV);
|
||||
todo_wine CHECK_CALLED(Exec_SETTITLE);
|
||||
}
|
||||
|
@ -5396,6 +5435,45 @@ static void test_put_href(IHTMLDocument2 *doc, BOOL use_replace, const char *hre
|
|||
nav_url = prev_nav_url;
|
||||
}
|
||||
|
||||
static void test_load_history(IHTMLDocument2 *doc)
|
||||
{
|
||||
IPersistHistory *per_hist;
|
||||
HRESULT hres;
|
||||
|
||||
trace("LoadHistory...\n");
|
||||
|
||||
hres = IHTMLDocument2_QueryInterface(doc, &IID_IPersistHistory, (void**)&per_hist);
|
||||
ok(hres == S_OK, "Could not get IPersistHistory iface: %08x\n", hres);
|
||||
|
||||
prev_url = nav_url;
|
||||
nav_url = "http://www.winehq.org/#test";
|
||||
nav_serv_url = "http://www.winehq.org/";
|
||||
|
||||
SET_EXPECT(Exec_ShellDocView_138);
|
||||
SET_EXPECT(Exec_ShellDocView_67);
|
||||
SET_EXPECT(FireBeforeNavigate2);
|
||||
SET_EXPECT(Invoke_AMBIENT_SILENT);
|
||||
SET_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
|
||||
|
||||
hres = IPersistHistory_LoadHistory(per_hist, history_stream, NULL);
|
||||
ok(hres == S_OK, "LoadHistory failed: %08x\n", hres);
|
||||
|
||||
CHECK_CALLED_BROKEN(Exec_ShellDocView_138);
|
||||
CHECK_CALLED(Exec_ShellDocView_67);
|
||||
CHECK_CALLED(FireBeforeNavigate2);
|
||||
CHECK_CALLED(Invoke_AMBIENT_SILENT);
|
||||
CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
|
||||
|
||||
load_state = LD_LOADING;
|
||||
test_timer(EXPECT_UPDATEUI|EXPECT_SETTITLE);
|
||||
|
||||
test_download(DWL_VERBDONE|DWL_HTTP|DWL_EXPECT_HISTUPDATE|DWL_ONREADY_LOADING|DWL_FROM_HISTORY);
|
||||
|
||||
IPersistHistory_Release(per_hist);
|
||||
IStream_Release(history_stream);
|
||||
history_stream = NULL;
|
||||
}
|
||||
|
||||
static void test_open_window(IHTMLDocument2 *doc, BOOL do_block)
|
||||
{
|
||||
IHTMLWindow2 *window, *new_window;
|
||||
|
@ -6876,7 +6954,12 @@ static void test_HTMLDocument_http(BOOL with_wbapp)
|
|||
test_put_href(doc, FALSE, NULL, "javascript:external%20&&undefined", TRUE, FALSE, 0);
|
||||
test_put_href(doc, FALSE, NULL, "about:blank", FALSE, FALSE, support_wbapp ? DWL_EXPECT_HISTUPDATE : 0);
|
||||
test_put_href(doc, TRUE, NULL, "about:replace", FALSE, FALSE, 0);
|
||||
if(support_wbapp) {
|
||||
test_load_history(doc);
|
||||
test_put_href(doc, FALSE, NULL, "about:blank", FALSE, FALSE, support_wbapp ? DWL_EXPECT_HISTUPDATE : 0);
|
||||
}
|
||||
|
||||
prev_url = nav_serv_url;
|
||||
test_open_window(doc, TRUE);
|
||||
if(!support_wbapp) /* FIXME */
|
||||
test_open_window(doc, FALSE);
|
||||
|
@ -6884,7 +6967,7 @@ static void test_HTMLDocument_http(BOOL with_wbapp)
|
|||
test_InPlaceDeactivate(doc, TRUE);
|
||||
test_Close(doc, FALSE);
|
||||
test_IsDirty(doc, S_FALSE);
|
||||
test_GetCurMoniker((IUnknown*)doc, NULL, "about:replace");
|
||||
test_GetCurMoniker((IUnknown*)doc, NULL, prev_url);
|
||||
|
||||
if(view)
|
||||
IOleDocumentView_Release(view);
|
||||
|
@ -7359,22 +7442,6 @@ static void test_HTMLDoc_ISupportErrorInfo(void)
|
|||
release_document(doc);
|
||||
}
|
||||
|
||||
static void test_IPersistHistory(void)
|
||||
{
|
||||
IHTMLDocument2 *doc;
|
||||
HRESULT hres;
|
||||
IPersistHistory *phist;
|
||||
|
||||
doc = create_document();
|
||||
|
||||
hres = IHTMLDocument2_QueryInterface(doc, &IID_IPersistHistory, (void**)&phist);
|
||||
ok(hres == S_OK, "QueryInterface returned %08x, expected S_OK\n", hres);
|
||||
if(hres == S_OK)
|
||||
IPersistHistory_Release(phist);
|
||||
|
||||
release_document(doc);
|
||||
}
|
||||
|
||||
static BOOL check_ie(void)
|
||||
{
|
||||
IHTMLDocument2 *doc;
|
||||
|
@ -7467,7 +7534,6 @@ START_TEST(htmldoc)
|
|||
test_UIActivate(TRUE, TRUE, FALSE);
|
||||
test_UIActivate(TRUE, TRUE, TRUE);
|
||||
test_HTMLDoc_ISupportErrorInfo();
|
||||
test_IPersistHistory();
|
||||
test_ServiceProvider();
|
||||
|
||||
DestroyWindow(container_hwnd);
|
||||
|
|
Loading…
Reference in New Issue