Jacek Caban : mshtml: Added IHTMLWindow2::open test.

Alexandre Julliard julliard at winehq.org
Mon Jun 14 13:01:17 CDT 2010


Module: wine
Branch: master
Commit: 77a994db4216ed01b46b09b44926516d7cbf0c91
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=77a994db4216ed01b46b09b44926516d7cbf0c91

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Jun 14 02:20:50 2010 +0200

mshtml: Added IHTMLWindow2::open test.

---

 dlls/mshtml/tests/htmldoc.c |  100 ++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 98 insertions(+), 2 deletions(-)

diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index 7e0d437..319e5fd 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -38,6 +38,7 @@
 #include "idispids.h"
 #include "shlguid.h"
 #include "perhist.h"
+#include "shobjidl.h"
 #include "mshtml_test.h"
 
 DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
@@ -155,6 +156,7 @@ DEFINE_EXPECT(Frame_GetWindow);
 DEFINE_EXPECT(TranslateUrl);
 DEFINE_EXPECT(Advise_Close);
 DEFINE_EXPECT(OnViewChange);
+DEFINE_EXPECT(EvaluateNewWindow);
 
 static IUnknown *doc_unk;
 static IMoniker *doc_mon;
@@ -164,7 +166,7 @@ static BOOL ipsex, ipsw;
 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 BOOL inplace_deactivated, open_call;
 static int stream_read, protocol_read;
 static enum load_state_t {
     LD_DOLOAD,
@@ -296,6 +298,9 @@ static void _test_GetCurMoniker(unsigned line, IUnknown *unk, IMoniker *exmon, L
     BSTR doc_url = (void*)0xdeadbeef;
     HRESULT hres;
 
+    if(open_call)
+        return; /* FIXME */
+
     hres = IUnknown_QueryInterface(unk, &IID_IPersistMoniker, (void**)&permon);
     ok(hres == S_OK, "QueryInterface(IID_IPersistMoniker) failed: %08x\n", hres);
     if(FAILED(hres))
@@ -332,7 +337,7 @@ static void _test_GetCurMoniker(unsigned line, IUnknown *unk, IMoniker *exmon, L
     }else if(exurl) {
         LPOLESTR url;
 
-        ok(hres == S_OK, "GetCurrentMoniker failed: %08x\n", hres);
+        ok_(__FILE__,line)(hres == S_OK, "GetCurrentMoniker failed: %08x\n", hres);
 
         hres = IMoniker_GetDisplayName(mon, NULL, NULL, &url);
         ok(hres == S_OK, "GetDisplayName failed: %08x\n", hres);
@@ -737,6 +742,48 @@ static const IHlinkFrameVtbl HlinkFrameVtbl = {
 
 static IHlinkFrame HlinkFrame = { &HlinkFrameVtbl };
 
+static HRESULT WINAPI NewWindowManager_QueryInterface(INewWindowManager *iface, REFIID riid, void **ppv)
+{
+    ok(0, "unexpected call\n");
+    return E_NOINTERFACE;
+}
+
+static ULONG WINAPI NewWindowManager_AddRef(INewWindowManager *iface)
+{
+    return 2;
+}
+
+static ULONG WINAPI NewWindowManager_Release(INewWindowManager *iface)
+{
+    return 1;
+}
+
+static HRESULT WINAPI NewWindowManager_EvaluateNewWindow(INewWindowManager *iface, LPCWSTR pszUrl,
+        LPCWSTR pszName, LPCWSTR pszUrlContext, LPCWSTR pszFeatures, BOOL fReplace, DWORD dwFlags,
+        DWORD dwUserActionTime)
+{
+    CHECK_EXPECT(EvaluateNewWindow);
+
+    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:blank"), "pszUrlContext = %s\n", wine_dbgstr_w(pszUrlContext));
+    ok(!pszFeatures, "pszFeatures = %s\n", wine_dbgstr_w(pszFeatures));
+    ok(!fReplace, "fReplace = %x\n", fReplace);
+    ok(dwFlags == NWMF_FIRST, "dwFlags = %x\n", dwFlags);
+    ok(!dwUserActionTime, "dwUserActionime = %d\n", dwUserActionTime);
+
+    return E_FAIL;
+}
+
+static const INewWindowManagerVtbl NewWindowManagerVtbl = {
+    NewWindowManager_QueryInterface,
+    NewWindowManager_AddRef,
+    NewWindowManager_Release,
+    NewWindowManager_EvaluateNewWindow
+};
+
+static INewWindowManager NewWindowManager = { &NewWindowManagerVtbl };
+
 static HRESULT WINAPI PropertyNotifySink_QueryInterface(IPropertyNotifySink *iface,
         REFIID riid, void**ppv)
 {
@@ -2423,6 +2470,8 @@ static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID
             ok(V_BSTR(pvaIn) != NULL, "V_BSTR(pvaIn) = NULL\n");
             test_readyState(NULL);
             return S_OK;
+        case OLECMDID_UPDATETRAVELENTRY_DATARECOVERY:
+            return E_FAIL; /* FIXME */
         default:
             ok(0, "unexpected command %d\n", nCmdID);
             return E_FAIL;
@@ -2701,6 +2750,12 @@ static HRESULT WINAPI ServiceProvider_QueryService(IServiceProvider *iface, REFG
         return S_OK;
     }
 
+    if(IsEqualGUID(&SID_SNewWindowManager, guidService)) {
+        ok(IsEqualGUID(&IID_INewWindowManager, riid), "unexpected riid\n");
+        *ppv = &NewWindowManager;
+        return S_OK;
+    }
+
     return E_NOINTERFACE;
 }
 
@@ -2941,6 +2996,9 @@ static void _test_readyState(unsigned line, IUnknown *unk)
         "uninitialized"
     };
 
+    if(open_call)
+        return; /* FIXME */
+
     if(!unk)
         unk = doc_unk;
 
@@ -3405,6 +3463,43 @@ static void test_put_href(IHTMLDocument2 *doc)
     test_download(DWL_VERBDONE);
 }
 
+static void test_open_window(IHTMLDocument2 *doc)
+{
+    IHTMLWindow2 *window, *new_window;
+    BSTR name, url;
+    HRESULT hres;
+
+    hres = IHTMLDocument2_get_parentWindow(doc, &window);
+    ok(hres == S_OK, "get_parentWindow failed: %08x\n", hres);
+
+    url = a2bstr("about:blank");
+    name = a2bstr("test");
+    new_window = (void*)0xdeadbeef;
+
+    open_call = TRUE;
+
+    SET_EXPECT(TranslateUrl);
+    SET_EXPECT(EvaluateNewWindow);
+
+    hres = IHTMLWindow2_open(window, url, name, NULL, VARIANT_FALSE, &new_window);
+    todo_wine
+    ok(hres == S_OK, "open failed: %08x\n", hres);
+    todo_wine
+    ok(new_window == NULL, "new_window != NULL\n");
+
+    todo_wine
+    CHECK_CALLED(TranslateUrl);
+    todo_wine
+    CHECK_CALLED(EvaluateNewWindow);
+
+    open_call = FALSE;
+    SysFreeString(url);
+    SysFreeString(name);
+
+    IHTMLWindow2_Release(window);
+    SysFreeString(name);
+}
+
 static void test_clear(IHTMLDocument2 *doc)
 {
     HRESULT hres;
@@ -4678,6 +4773,7 @@ static void test_HTMLDocument_http(void)
     test_GetCurMoniker((IUnknown*)doc, http_mon, NULL);
 
     test_put_href(doc);
+    test_open_window(doc);
 
     test_InPlaceDeactivate(doc, TRUE);
     test_Close(doc, FALSE);




More information about the wine-cvs mailing list