Jacek Caban : urlmon: Fixed protocol tests on IE9.
Alexandre Julliard
julliard at winehq.org
Tue Nov 15 13:17:34 CST 2011
Module: wine
Branch: master
Commit: 9c464ca3cbff96e0f4339c2cb4ae2678c1f0b6b2
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9c464ca3cbff96e0f4339c2cb4ae2678c1f0b6b2
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Nov 15 19:20:54 2011 +0100
urlmon: Fixed protocol tests on IE9.
---
dlls/urlmon/bindprot.c | 1 +
dlls/urlmon/tests/protocol.c | 23 ++++++++++++++++++++---
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/dlls/urlmon/bindprot.c b/dlls/urlmon/bindprot.c
index cfb5cec..7c2aca6 100644
--- a/dlls/urlmon/bindprot.c
+++ b/dlls/urlmon/bindprot.c
@@ -203,6 +203,7 @@ static HRESULT handle_mime_filter(BindProtocol *This, IInternetProtocol *mime_fi
return hres;
}
+ /* NOTE: IE9 calls it on the new protocol_sink. It doesn't make sense to is seems to be a bug there. */
IInternetProtocolSink_ReportProgress(old_sink, BINDSTATUS_LOADINGMIMEHANDLER, NULL);
IInternetProtocolSink_Release(old_sink);
diff --git a/dlls/urlmon/tests/protocol.c b/dlls/urlmon/tests/protocol.c
index 52da99b..87be3fe 100644
--- a/dlls/urlmon/tests/protocol.c
+++ b/dlls/urlmon/tests/protocol.c
@@ -112,7 +112,6 @@ DEFINE_EXPECT(UnlockRequest);
DEFINE_EXPECT(Abort);
DEFINE_EXPECT(MimeFilter_CreateInstance);
DEFINE_EXPECT(MimeFilter_Start);
-DEFINE_EXPECT(MimeFilter_ReportProgress);
DEFINE_EXPECT(MimeFilter_ReportData);
DEFINE_EXPECT(MimeFilter_ReportResult);
DEFINE_EXPECT(MimeFilter_Terminate);
@@ -1043,7 +1042,20 @@ static HRESULT WINAPI MimeProtocolSink_Switch(IInternetProtocolSink *iface, PROT
static HRESULT WINAPI MimeProtocolSink_ReportProgress(IInternetProtocolSink *iface, ULONG ulStatusCode,
LPCWSTR szStatusText)
{
- CHECK_EXPECT(MimeFilter_ReportProgress);
+ switch(ulStatusCode) {
+ case BINDSTATUS_LOADINGMIMEHANDLER:
+ /*
+ * IE9 for some reason (bug?) calls this on mime handler's protocol sink instead of the
+ * main protocol sink. We check ReportProgress_LOADINGMIMEHANDLER both here and in
+ * ProtocolSink_ReportProgress to workaround it.
+ */
+ CHECK_EXPECT(ReportProgress_LOADINGMIMEHANDLER);
+ ok(!szStatusText, "szStatusText = %s\n", wine_dbgstr_w(szStatusText));
+ break;
+ default:
+ ok(0, "Unexpected status code %d\n", ulStatusCode);
+ }
+
return S_OK;
}
@@ -1742,6 +1754,7 @@ static HRESULT WINAPI ProtocolEmul_Continue(IInternetProtocolEx *iface,
if(pr == 200) {
if(!mimefilter_test)
SET_EXPECT(Read); /* checked in BINDSTATUS_MIMETYPEAVAILABLE or ReportData */
+ SET_EXPECT(GetBindInfo);
SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
}
if(pr >= 200)
@@ -1759,6 +1772,7 @@ static HRESULT WINAPI ProtocolEmul_Continue(IInternetProtocolEx *iface,
if(!short_read && pr < 200)
CHECK_CALLED(Read);
if(pr == 200) {
+ CLEAR_CALLED(GetBindInfo); /* IE9 */
CHECK_CALLED(ReportProgress_MIMETYPEAVAILABLE);
}
}else {
@@ -1816,6 +1830,7 @@ static HRESULT WINAPI ProtocolEmul_Read(IInternetProtocolEx *iface, void *pv,
prot_state = 4;
if(short_read) {
SET_EXPECT(Read2); /* checked in BINDSTATUS_MIMETYPEAVAILABLE */
+ SET_EXPECT(GetBindInfo);
SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
}
if(mimefilter_test)
@@ -1827,8 +1842,10 @@ static HRESULT WINAPI ProtocolEmul_Read(IInternetProtocolEx *iface, void *pv,
BSCF_LASTDATANOTIFICATION|BSCF_INTERMEDIATEDATANOTIFICATION, 0, 0);
read_report_data--;
ok(hres == S_OK, "ReportData failed: %08x\n", hres);
- if(short_read)
+ if(short_read) {
+ CLEAR_CALLED(GetBindInfo); /* IE9 */
CHECK_CALLED(ReportProgress_MIMETYPEAVAILABLE);
+ }
if(mimefilter_test)
CHECK_CALLED(MimeFilter_ReportData);
else if(direct_read)
More information about the wine-cvs
mailing list