Jacek Caban : shdocvw: Added IWebBrowser2::get_ReadyState implementation.

Alexandre Julliard julliard at winehq.org
Mon Aug 31 10:46:54 CDT 2009


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Sun Aug 30 01:02:34 2009 +0200

shdocvw: Added IWebBrowser2::get_ReadyState implementation.

---

 dlls/shdocvw/tests/webbrowser.c |   24 ++++++++++++++++++++++++
 dlls/shdocvw/webbrowser.c       |    5 +++--
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/dlls/shdocvw/tests/webbrowser.c b/dlls/shdocvw/tests/webbrowser.c
index c9658a4..b3e6e66 100644
--- a/dlls/shdocvw/tests/webbrowser.c
+++ b/dlls/shdocvw/tests/webbrowser.c
@@ -171,6 +171,17 @@ static void _test_LocationURL(unsigned line, IUnknown *unk, LPCWSTR exurl)
     IWebBrowser2_Release(wb);
 }
 
+#define test_ready_state(ex) _test_ready_state(__LINE__,ex);
+static void _test_ready_state(unsigned line, READYSTATE exstate)
+{
+    READYSTATE state;
+    HRESULT hres;
+
+    hres = IWebBrowser2_get_ReadyState(wb, &state);
+    ok_(__FILE__,line)(hres == S_OK, "get_ReadyState failed: %08x\n", hres);
+    ok_(__FILE__,line)(state == exstate, "ReadyState = %d, expected %d\n", state, exstate);
+}
+
 static HRESULT QueryInterface(REFIID,void**);
 
 static HRESULT WINAPI OleCommandTarget_QueryInterface(IOleCommandTarget *iface,
@@ -594,6 +605,7 @@ static HRESULT WINAPI WebBrowserEvents2_Invoke(IDispatch *iface, DISPID dispIdMe
 
         ok(pDispParams->rgvarg == NULL, "rgvarg=%p, expected NULL\n", pDispParams->rgvarg);
         ok(pDispParams->cArgs == 0, "cArgs=%d, expected 0\n", pDispParams->cArgs);
+        test_ready_state(READYSTATE_LOADING);
         break;
 
     case DISPID_BEFORENAVIGATE2:
@@ -604,6 +616,7 @@ static HRESULT WINAPI WebBrowserEvents2_Invoke(IDispatch *iface, DISPID dispIdMe
         test_OnBeforeNavigate(pDispParams->rgvarg+6, pDispParams->rgvarg+5, pDispParams->rgvarg+4,
                               pDispParams->rgvarg+3, pDispParams->rgvarg+2, pDispParams->rgvarg+1,
                               pDispParams->rgvarg);
+        test_ready_state(READYSTATE_LOADING);
         break;
 
     case DISPID_SETSECURELOCKICON:
@@ -635,6 +648,7 @@ static HRESULT WINAPI WebBrowserEvents2_Invoke(IDispatch *iface, DISPID dispIdMe
 
         ok(pDispParams->rgvarg == NULL, "rgvarg=%p, expected NULL\n", pDispParams->rgvarg);
         ok(pDispParams->cArgs == 0, "cArgs=%d, expected 0\n", pDispParams->cArgs);
+        test_ready_state(READYSTATE_LOADING);
         break;
 
     case DISPID_ONMENUBAR:
@@ -680,6 +694,7 @@ static HRESULT WINAPI WebBrowserEvents2_Invoke(IDispatch *iface, DISPID dispIdMe
     case DISPID_NAVIGATECOMPLETE2:
         CHECK_EXPECT(Invoke_NAVIGATECOMPLETE2);
         /* FIXME */
+        test_ready_state(READYSTATE_LOADING);
         break;
 
     case DISPID_PROGRESSCHANGE:
@@ -690,6 +705,7 @@ static HRESULT WINAPI WebBrowserEvents2_Invoke(IDispatch *iface, DISPID dispIdMe
     case DISPID_DOCUMENTCOMPLETE:
         CHECK_EXPECT(Invoke_DOCUMENTCOMPLETE);
         /* FIXME */
+        test_ready_state(READYSTATE_COMPLETE);
         break;
 
     case 282: /* FIXME */
@@ -2094,6 +2110,7 @@ static void test_Navigate2(IUnknown *unk)
         return;
 
     test_LocationURL(unk, emptyW);
+    test_ready_state(READYSTATE_UNINITIALIZED);
 
     V_VT(&url) = VT_BSTR;
     V_BSTR(&url) = SysAllocString(about_blankW);
@@ -2149,6 +2166,8 @@ static void test_Navigate2(IUnknown *unk)
 
     VariantClear(&url);
     IWebBrowser2_Release(webbrowser);
+
+    test_ready_state(READYSTATE_LOADING);
 }
 
 static void test_download(void)
@@ -2157,6 +2176,8 @@ static void test_download(void)
 
     is_downloading = TRUE;
 
+    test_ready_state(READYSTATE_LOADING);
+
     SET_EXPECT(Exec_SETPROGRESSMAX);
     SET_EXPECT(Exec_SETPROGRESSPOS);
     SET_EXPECT(Exec_SETDOWNLOADSTATE_1);
@@ -2201,6 +2222,8 @@ static void test_download(void)
     todo_wine CHECK_CALLED(GetDropTarget);
     todo_wine CHECK_CALLED(Invoke_PROGRESSCHANGE);
     CHECK_CALLED(Invoke_DOCUMENTCOMPLETE);
+
+    test_ready_state(READYSTATE_COMPLETE);
 }
 
 static void test_olecmd(IUnknown *unk, BOOL loaded)
@@ -2316,6 +2339,7 @@ static void test_WebBrowser(BOOL do_download)
     ok(hres == S_OK, "Could not get IWebBrowser2 iface: %08x\n", hres);
 
     test_QueryInterface(unk);
+    test_ready_state(READYSTATE_UNINITIALIZED);
     test_ClassInfo(unk);
     test_LocationURL(unk, emptyW);
     test_ConnectionPoint(unk, TRUE);
diff --git a/dlls/shdocvw/webbrowser.c b/dlls/shdocvw/webbrowser.c
index e54e9ee..323e9ad 100644
--- a/dlls/shdocvw/webbrowser.c
+++ b/dlls/shdocvw/webbrowser.c
@@ -776,9 +776,10 @@ static HRESULT WINAPI WebBrowser_ShowBrowserBar(IWebBrowser2 *iface, VARIANT *pv
 static HRESULT WINAPI WebBrowser_get_ReadyState(IWebBrowser2 *iface, READYSTATE *lpReadyState)
 {
     WebBrowser *This = WEBBROWSER_THIS(iface);
-    FIXME("(%p)->(%p)\n", This, lpReadyState);
 
-    *lpReadyState = READYSTATE_COMPLETE;
+    TRACE("(%p)->(%p)\n", This, lpReadyState);
+
+    *lpReadyState = This->doc_host.ready_state;
     return S_OK;
 }
 




More information about the wine-cvs mailing list