From d69946b4a51bb2b4dfbf1892ae09645ad2700095 Mon Sep 17 00:00:00 2001 From: "darin%netscape.com" Date: Tue, 27 Mar 2001 08:23:42 +0000 Subject: [PATCH] Add progress event sink notification test. git-svn-id: svn://10.0.0.236/trunk@90502 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/netwerk/test/TestFileTransport.cpp | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/mozilla/netwerk/test/TestFileTransport.cpp b/mozilla/netwerk/test/TestFileTransport.cpp index 1f2c5b23ded..b1cd9ad5cbc 100644 --- a/mozilla/netwerk/test/TestFileTransport.cpp +++ b/mozilla/netwerk/test/TestFileTransport.cpp @@ -22,6 +22,8 @@ #include "nsIFileTransportService.h" #include "nsITransport.h" +#include "nsIProgressEventSink.h" +#include "nsIInterfaceRequestor.h" #include "nsIRequest.h" #include "nsIServiceManager.h" #include "nsIComponentManager.h" @@ -44,6 +46,9 @@ static PRLogModuleInfo *gTestFileTransportLog = nsnull; #define PRINTF(args) #endif +#undef PRINTF +#define PRINTF(args) printf args + //////////////////////////////////////////////////////////////////////////////// static NS_DEFINE_CID(kFileTransportServiceCID, NS_FILETRANSPORTSERVICE_CID); @@ -55,6 +60,37 @@ nsIEventQueue* gEventQ = nsnull; //////////////////////////////////////////////////////////////////////////////// +class MyProgressEventSink : public nsIProgressEventSink + , public nsIInterfaceRequestor { +public: + NS_DECL_ISUPPORTS + + MyProgressEventSink() { NS_INIT_ISUPPORTS(); } + + NS_IMETHOD OnProgress(nsIRequest *request, nsISupports *ctxt, + PRUint32 progress, PRUint32 progressMax) { + PRINTF(("progress: %u/%u\n", progress, progressMax)); + return NS_OK; + } + + NS_IMETHOD OnStatus(nsIRequest *request, nsISupports *ctxt, + nsresult status, const PRUnichar *statusArg) { + return NS_OK; + } + + NS_IMETHOD GetInterface(const nsIID &iid, void **result) { + if (iid.Equals(NS_GET_IID(nsIProgressEventSink))) + return QueryInterface(iid, result); + return NS_ERROR_NO_INTERFACE; + } +}; + +NS_IMPL_THREADSAFE_ISUPPORTS2(MyProgressEventSink, + nsIProgressEventSink, + nsIInterfaceRequestor) + +//////////////////////////////////////////////////////////////////////////////// + class MyListener : public nsIStreamListener { public: NS_DECL_ISUPPORTS @@ -160,6 +196,13 @@ TestAsyncRead(const char* fileName, PRUint32 offset, PRInt32 length) rv = listener->Init(fileName); if (NS_FAILED(rv)) return rv; + MyProgressEventSink* progressSink = new MyProgressEventSink(); + if (progressSink == nsnull) + return NS_ERROR_OUT_OF_MEMORY; + NS_ADDREF(progressSink); + rv = fileTrans->SetNotificationCallbacks(progressSink, PR_FALSE); + if (NS_FAILED(rv)) return rv; + gDone = PR_FALSE; nsCOMPtr request; rv = fileTrans->AsyncRead(listener, nsnull, offset, length, 0, getter_AddRefs(request)); @@ -208,6 +251,13 @@ TestAsyncWrite(const char* fileName, PRUint32 offset, PRInt32 length) rv = listener->Init(outFile); if (NS_FAILED(rv)) return rv; + MyProgressEventSink* progressSink = new MyProgressEventSink(); + if (progressSink == nsnull) + return NS_ERROR_OUT_OF_MEMORY; + NS_ADDREF(progressSink); + rv = fileTrans->SetNotificationCallbacks(progressSink, PR_FALSE); + if (NS_FAILED(rv)) return rv; + nsCOMPtr f; rv = NS_NewLocalFile(fileName, PR_FALSE, getter_AddRefs(f)); if (NS_FAILED(rv)) return rv;