diff -r 000000000000 -r 6474c204b198 netwerk/test/TestStreamLoader.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/netwerk/test/TestStreamLoader.cpp Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,89 @@ +#include +#include "TestCommon.h" +#include "nsNetUtil.h" +#include "nsThreadUtils.h" +#include "prlog.h" +#include "mozilla/Attributes.h" + +#if defined(PR_LOGGING) +// +// set NSPR_LOG_MODULES=Test:5 +// +static PRLogModuleInfo *gTestLog = nullptr; +#endif +#define LOG(args) PR_LOG(gTestLog, PR_LOG_DEBUG, args) + +class MyStreamLoaderObserver MOZ_FINAL : public nsIStreamLoaderObserver +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_NSISTREAMLOADEROBSERVER +}; + +NS_IMPL_ISUPPORTS(MyStreamLoaderObserver, nsIStreamLoaderObserver) + +NS_IMETHODIMP +MyStreamLoaderObserver::OnStreamComplete(nsIStreamLoader *loader, + nsISupports *ctxt, + nsresult status, + uint32_t resultLen, + const uint8_t *result) +{ + LOG(("OnStreamComplete [status=%x resultLen=%u]\n", status, resultLen)); + + nsCOMPtr request; + loader->GetRequest(getter_AddRefs(request)); + LOG((" request=%p\n", request.get())); + + QuitPumpingEvents(); + return NS_OK; +} + +int main(int argc, char **argv) +{ + if (test_common_init(&argc, &argv) != 0) + return -1; + + if (argc < 2) { + printf("usage: %s \n", argv[0]); + return -1; + } + +#if defined(PR_LOGGING) + gTestLog = PR_NewLogModule("Test"); +#endif + + nsresult rv = NS_InitXPCOM2(nullptr, nullptr, nullptr); + if (NS_FAILED(rv)) + return -1; + + { + nsCOMPtr uri; + rv = NS_NewURI(getter_AddRefs(uri), nsDependentCString(argv[1])); + if (NS_FAILED(rv)) + return -1; + + nsCOMPtr chan; + rv = NS_NewChannel(getter_AddRefs(chan), uri); + if (NS_FAILED(rv)) + return -1; + + nsCOMPtr observer = new MyStreamLoaderObserver(); + if (!observer) + return -1; + + nsCOMPtr loader; + rv = NS_NewStreamLoader(getter_AddRefs(loader), observer); + if (NS_FAILED(rv)) + return -1; + + rv = chan->AsyncOpen(loader, nullptr); + if (NS_FAILED(rv)) + return -1; + + PumpEvents(); + } // this scopes the nsCOMPtrs + // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM + NS_ShutdownXPCOM(nullptr); + return 0; +}