1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/netwerk/test/TestStreamLoader.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,89 @@ 1.4 +#include <stdio.h> 1.5 +#include "TestCommon.h" 1.6 +#include "nsNetUtil.h" 1.7 +#include "nsThreadUtils.h" 1.8 +#include "prlog.h" 1.9 +#include "mozilla/Attributes.h" 1.10 + 1.11 +#if defined(PR_LOGGING) 1.12 +// 1.13 +// set NSPR_LOG_MODULES=Test:5 1.14 +// 1.15 +static PRLogModuleInfo *gTestLog = nullptr; 1.16 +#endif 1.17 +#define LOG(args) PR_LOG(gTestLog, PR_LOG_DEBUG, args) 1.18 + 1.19 +class MyStreamLoaderObserver MOZ_FINAL : public nsIStreamLoaderObserver 1.20 +{ 1.21 +public: 1.22 + NS_DECL_ISUPPORTS 1.23 + NS_DECL_NSISTREAMLOADEROBSERVER 1.24 +}; 1.25 + 1.26 +NS_IMPL_ISUPPORTS(MyStreamLoaderObserver, nsIStreamLoaderObserver) 1.27 + 1.28 +NS_IMETHODIMP 1.29 +MyStreamLoaderObserver::OnStreamComplete(nsIStreamLoader *loader, 1.30 + nsISupports *ctxt, 1.31 + nsresult status, 1.32 + uint32_t resultLen, 1.33 + const uint8_t *result) 1.34 +{ 1.35 + LOG(("OnStreamComplete [status=%x resultLen=%u]\n", status, resultLen)); 1.36 + 1.37 + nsCOMPtr<nsIRequest> request; 1.38 + loader->GetRequest(getter_AddRefs(request)); 1.39 + LOG((" request=%p\n", request.get())); 1.40 + 1.41 + QuitPumpingEvents(); 1.42 + return NS_OK; 1.43 +} 1.44 + 1.45 +int main(int argc, char **argv) 1.46 +{ 1.47 + if (test_common_init(&argc, &argv) != 0) 1.48 + return -1; 1.49 + 1.50 + if (argc < 2) { 1.51 + printf("usage: %s <url>\n", argv[0]); 1.52 + return -1; 1.53 + } 1.54 + 1.55 +#if defined(PR_LOGGING) 1.56 + gTestLog = PR_NewLogModule("Test"); 1.57 +#endif 1.58 + 1.59 + nsresult rv = NS_InitXPCOM2(nullptr, nullptr, nullptr); 1.60 + if (NS_FAILED(rv)) 1.61 + return -1; 1.62 + 1.63 + { 1.64 + nsCOMPtr<nsIURI> uri; 1.65 + rv = NS_NewURI(getter_AddRefs(uri), nsDependentCString(argv[1])); 1.66 + if (NS_FAILED(rv)) 1.67 + return -1; 1.68 + 1.69 + nsCOMPtr<nsIChannel> chan; 1.70 + rv = NS_NewChannel(getter_AddRefs(chan), uri); 1.71 + if (NS_FAILED(rv)) 1.72 + return -1; 1.73 + 1.74 + nsCOMPtr<nsIStreamLoaderObserver> observer = new MyStreamLoaderObserver(); 1.75 + if (!observer) 1.76 + return -1; 1.77 + 1.78 + nsCOMPtr<nsIStreamLoader> loader; 1.79 + rv = NS_NewStreamLoader(getter_AddRefs(loader), observer); 1.80 + if (NS_FAILED(rv)) 1.81 + return -1; 1.82 + 1.83 + rv = chan->AsyncOpen(loader, nullptr); 1.84 + if (NS_FAILED(rv)) 1.85 + return -1; 1.86 + 1.87 + PumpEvents(); 1.88 + } // this scopes the nsCOMPtrs 1.89 + // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM 1.90 + NS_ShutdownXPCOM(nullptr); 1.91 + return 0; 1.92 +}