DEFINE_EXPECT(Exec_SETDOWNLOADSTATE_0);
DEFINE_EXPECT(Exec_SETDOWNLOADSTATE_1);
DEFINE_EXPECT(Exec_ShellDocView_37);
+DEFINE_EXPECT(Exec_ShellDocView_63);
+DEFINE_EXPECT(Exec_ShellDocView_67);
DEFINE_EXPECT(Exec_ShellDocView_84);
DEFINE_EXPECT(Exec_ShellDocView_103);
DEFINE_EXPECT(Exec_ShellDocView_105);
static BOOL expect_LockContainer_fLock;
static BOOL expect_InPlaceUIWindow_SetActiveObject_active = TRUE;
static BOOL ipsex, ipsw;
-static BOOL set_clientsite = FALSE, container_locked = FALSE;
+static BOOL set_clientsite, container_locked, navigated_load;
static BOOL readystate_set_loading = FALSE, readystate_set_interactive = FALSE, load_from_stream;
static BOOL editmode = FALSE, show_failed;
static BOOL inplace_deactivated;
{
static char buf[50];
+ if(!riid)
+ return "(null)";
+
sprintf(buf, "{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
riid->Data1, riid->Data2, riid->Data3, riid->Data4[0],
riid->Data4[1], riid->Data4[2], riid->Data4[3], riid->Data4[4],
hres = IMoniker_GetDisplayName(mon, NULL, NULL, &url);
ok(hres == S_OK, "GetDisplayName failed: %08x\n", hres);
- ok(!lstrcmpW(url, exurl), "unexpected url\n");
+ ok(!lstrcmpW(url, exurl), "unexpected url %s\n", wine_dbgstr_w(url));
ok(!lstrcmpW(url, doc_url), "url != doc_url\n");
CoTaskMemFree(url);
case DISPID_READYSTATE:
CHECK_EXPECT2(OnChanged_READYSTATE);
- if(readystate_set_interactive) {
- readystate_set_interactive = FALSE;
- load_state = LD_INTERACTIVE;
- }
- else
+ if(!readystate_set_interactive)
test_MSHTML_QueryStatus(NULL, OLECMDF_SUPPORTED
| (editmode && (load_state == LD_INTERACTIVE || load_state == LD_COMPLETE)
? OLECMDF_ENABLED : 0));
static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID *pguidCmdGroup,
DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
{
- if(!pguidCmdGroup || !IsEqualGUID(pguidCmdGroup, &CGID_Explorer))
+ if((!pguidCmdGroup || !IsEqualGUID(pguidCmdGroup, &CGID_Explorer))
+ && (!pguidCmdGroup || !IsEqualGUID(&CGID_ShellDocView, pguidCmdGroup) || nCmdID != 63))
test_readyState(NULL);
if(!pguidCmdGroup) {
case 37:
CHECK_EXPECT2(Exec_ShellDocView_37);
- if(load_from_stream)
+ if(load_from_stream || navigated_load)
test_GetCurMoniker(doc_unk, NULL, about_blank_url);
else if(!editmode)
test_GetCurMoniker(doc_unk, doc_mon, NULL);
ok(V_I4(pvaIn) == 0, "V_I4(pvaIn)=%d, expected 0\n", V_I4(pvaIn));
}
return S_OK;
+
+ case 63: {
+ IHTMLPrivateWindow *priv_window;
+ HRESULT hres;
+
+ CHECK_EXPECT(Exec_ShellDocView_63);
+ ok(pvaIn != NULL, "pvaIn == NULL\n");
+ ok(V_VT(pvaIn) == VT_UNKNOWN, "V_VT(pvaIn) = %d\n", V_VT(pvaIn));
+ ok(V_UNKNOWN(pvaIn) != NULL, "VPUNKNOWN(pvaIn) = NULL\n");
+ ok(pvaOut != NULL, "pvaOut == NULL\n");
+ ok(V_VT(pvaOut) == VT_EMPTY, "V_VT(pvaOut) = %d\n", V_VT(pvaOut));
+
+ hres = IUnknown_QueryInterface(V_UNKNOWN(pvaIn), &IID_IHTMLPrivateWindow, (void**)&priv_window);
+ ok(hres == S_OK, "Could not get IHTMLPrivateWindow: %08x\n", hres);
+ if(SUCCEEDED(hres))
+ IHTMLPrivateWindow_Release(priv_window);
+
+ load_state = LD_LOADING;
+ return S_OK; /* TODO */
+ }
+
+ case 67:
+ CHECK_EXPECT(Exec_ShellDocView_67);
+ ok(pvaIn != NULL, "pvaIn == NULL\n");
+ ok(V_VT(pvaIn) == VT_BSTR, "V_VT(pvaIn) = %d\n", V_VT(pvaIn));
+ ok(!strcmp_wa(V_BSTR(pvaIn), "about:blank"), "V_BSTR(pvaIn) = %s\n", wine_dbgstr_w(V_BSTR(pvaIn)));
+ ok(pvaOut != NULL, "pvaOut == NULL\n");
+ ok(V_VT(pvaOut) == VT_BOOL, "V_VT(pvaOut) = %d\n", V_VT(pvaOut));
+ ok(V_BOOL(pvaOut) == VARIANT_TRUE, "V_BOOL(pvaOut) = %x\n", V_BOOL(pvaOut));
+ load_state = LD_DOLOAD;
+ return S_OK;
+
case 84:
CHECK_EXPECT2(Exec_ShellDocView_84);
switch(load_state) {
case LD_DOLOAD:
case LD_NO:
- ok(!elem, "elem != NULL\n");
+ if(!navigated_load)
+ ok(!elem, "elem != NULL\n");
default:
break;
case LD_INTERACTIVE:
SET_EXPECT(Frame_EnableModeless_TRUE); /* IE7 */
SET_EXPECT(EnableModeless_FALSE); /* IE7 */
SET_EXPECT(Frame_EnableModeless_FALSE); /* IE7 */
- if(doc_mon != &Moniker) {
+ if(navigated_load)
+ SET_EXPECT(Exec_ShellDocView_37);
+ if(flags & DWL_HTTP) {
SET_EXPECT(OnChanged_1012);
SET_EXPECT(Exec_HTTPEQUIV);
SET_EXPECT(Exec_SETTITLE);
SET_EXPECT(Exec_MSHTML_PARSECOMPLETE);
SET_EXPECT(Exec_HTTPEQUIV_DONE);
SET_EXPECT(SetStatusText);
+ if(navigated_load) {
+ SET_EXPECT(UpdateUI);
+ SET_EXPECT(Exec_UPDATECOMMANDS);
+ SET_EXPECT(Exec_SETTITLE);
+ }
expect_status_text = (LPWSTR)0xdeadbeef; /* TODO */
while(!called_Exec_HTTPEQUIV_DONE && GetMessage(&msg, NULL, 0, 0)) {
CHECK_CALLED(Exec_SETPROGRESSMAX);
if(flags & DWL_HTTP)
SET_CALLED(Exec_SETPROGRESSMAX);
- if((flags & DWL_VERBDONE) && !load_from_stream)
- CHECK_CALLED(GetHostInfo);
+ if((flags & DWL_VERBDONE) && !load_from_stream) {
+ if(navigated_load)
+ todo_wine CHECK_CALLED(GetHostInfo);
+ else
+ CHECK_CALLED(GetHostInfo);
+ }
CHECK_CALLED(SetStatusText);
if(!(flags & DWL_EMPTY))
CHECK_CALLED(Exec_SETDOWNLOADSTATE_1);
CHECK_CALLED(OnViewChange);
- CHECK_CALLED(GetDropTarget);
+ if(navigated_load)
+ CHECK_CALLED(GetDropTarget);
+ else
+ SET_CALLED(GetDropTarget);
if(flags & DWL_TRYCSS)
SET_CALLED(Exec_ShellDocView_84);
if(flags & DWL_CSS) {
SET_CALLED(Frame_EnableModeless_TRUE); /* IE7 */
SET_CALLED(EnableModeless_FALSE); /* IE7 */
SET_CALLED(Frame_EnableModeless_FALSE); /* IE7 */
- if(doc_mon != &Moniker) todo_wine {
+ if(navigated_load)
+ todo_wine CHECK_CALLED(Exec_ShellDocView_37);
+ if(flags & DWL_HTTP) todo_wine {
CHECK_CALLED(OnChanged_1012);
CHECK_CALLED(Exec_HTTPEQUIV);
CHECK_CALLED(Exec_SETTITLE);
CHECK_CALLED(Exec_MSHTML_PARSECOMPLETE);
CHECK_CALLED(Exec_HTTPEQUIV_DONE);
SET_CALLED(SetStatusText);
+ if(navigated_load) { /* avoiding race, FIXME: fund better way */
+ SET_CALLED(UpdateUI);
+ SET_CALLED(Exec_UPDATECOMMANDS);
+ SET_CALLED(Exec_SETTITLE);
+ }
load_state = LD_COMPLETE;
static void test_put_href(IHTMLDocument2 *doc)
{
+ IHTMLPrivateWindow *priv_window;
+ IHTMLWindow2 *window;
IHTMLLocation *location;
- BSTR str;
+ BSTR str, str2;
+ VARIANT vempty;
HRESULT hres;
location = NULL;
SET_EXPECT(Navigate);
str = a2bstr("about:blank");
hres = IHTMLLocation_put_href(location, str);
- SysFreeString(str);
ok(hres == S_OK, "put_href failed: %08x\n", hres);
CHECK_CALLED(TranslateUrl);
CHECK_CALLED(Navigate);
IHTMLLocation_Release(location);
+
+ hres = IHTMLDocument2_get_parentWindow(doc, &window);
+ ok(hres == S_OK, "get_parentWindow failed: %08x\n", hres);
+
+ hres = IHTMLWindow2_QueryInterface(window, &IID_IHTMLPrivateWindow, (void**)&priv_window);
+ IHTMLWindow2_Release(window);
+ ok(hres == S_OK, "QueryInterface(IID_IHTMLPrivateWindow) failed: %08x\n", hres);
+
+ readystate_set_loading = TRUE;
+ navigated_load = TRUE;
+ SET_EXPECT(TranslateUrl);
+ SET_EXPECT(Exec_ShellDocView_67);
+ SET_EXPECT(Invoke_AMBIENT_SILENT);
+ SET_EXPECT(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
+ SET_EXPECT(OnChanged_READYSTATE);
+ SET_EXPECT(Exec_ShellDocView_63);
+
+ str2 = a2bstr("");
+ V_VT(&vempty) = VT_EMPTY;
+ hres = IHTMLPrivateWindow_SuperNavigate(priv_window, str, str2, NULL, NULL, &vempty, &vempty, 0);
+ SysFreeString(str);
+ SysFreeString(str2);
+ ok(hres == S_OK, "SuperNavigate failed: %08x\n", hres);
+
+ CHECK_CALLED(TranslateUrl);
+ CHECK_CALLED(Exec_ShellDocView_67);
+ CHECK_CALLED(Invoke_AMBIENT_SILENT);
+ CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED);
+ SET_CALLED(OnChanged_READYSTATE); /* not always called */
+ CHECK_CALLED(Exec_ShellDocView_63);
+
+ test_GetCurMoniker(doc_unk, doc_mon, NULL);
+ IHTMLPrivateWindow_Release(priv_window);
+
+ test_download(DWL_VERBDONE);
}
static const OLECMDF expect_cmds[OLECMDID_GETPRINTTEMPLATE+1] = {
protocol_read = 0;
ipsex = FALSE;
inplace_deactivated = FALSE;
+ navigated_load = FALSE;
}
static void test_HTMLDocument(BOOL do_load)
trace("Testing HTMLDocument (http)...\n");
+ if(!winetest_interactive && is_ie_hardened()) {
+ win_skip("IE running in Enhanced Security Configuration\n");
+ return;
+ }
+
init_test(LD_DOLOAD);
ipsex = TRUE;
return;
}
- if (winetest_interactive || ! is_ie_hardened())
- test_download(DWL_HTTP);
- else
- win_skip("IE running in Enhanced Security Configuration\n");
-
+ test_download(DWL_HTTP);
test_cookies(doc);
test_IsDirty(doc, S_FALSE);
test_MSHTML_QueryStatus(doc, OLECMDF_SUPPORTED);
+ test_GetCurMoniker((IUnknown*)doc, http_mon, NULL);
test_put_href(doc);
test_InPlaceDeactivate(doc, TRUE);
test_Close(doc, FALSE);
test_IsDirty(doc, S_FALSE);
- test_GetCurMoniker((IUnknown*)doc, http_mon, NULL);
+ test_GetCurMoniker((IUnknown*)doc, NULL, about_blank_url);
if(view)
IOleDocumentView_Release(view);