Bug 1313752 - Port binary tests in netwerk/test to gtest, or remove the ones that we currently aren't running. r=michal.novotny. Includes the following followups:
authorBenjamin Smedberg <benjamin@smedbergs.us>
Tue, 29 Nov 2016 13:53:48 -0500
changeset 324812 c72d9641ee848ed3859e4d85eb04b40348df2a39
parent 324811 fcc2e4e18962ccd980f62e5d88f9426c363c1c9f
child 324813 124b6d7669264412a06cd9885aa34f25768ea880
push id24
push usermaklebus@msu.edu
push dateTue, 20 Dec 2016 03:11:33 +0000
reviewersmichal
bugs1313752
milestone53.0a1
Bug 1313752 - Port binary tests in netwerk/test to gtest, or remove the ones that we currently aren't running. r=michal.novotny. Includes the following followups: * TestUDPSocket wasn't initializing it's members properly, fixup by mcmanus * Scope the netwerk TestCommon waiting to be non-global, and add assertions so that waiting is deterministic. r=mcmanus MozReview-Commit-ID: 7jLgNIujrbu
netwerk/streamconv/moz.build
netwerk/streamconv/test/Converters.cpp
netwerk/streamconv/test/Converters.h
netwerk/streamconv/test/TestStreamConv.cpp
netwerk/streamconv/test/moz.build
netwerk/test/PropertiesTest.cpp
netwerk/test/ReadNTLM.cpp
netwerk/test/TestBind.cpp
netwerk/test/TestBlockingSocket.cpp
netwerk/test/TestCommon.h
netwerk/test/TestCookie.cpp
netwerk/test/TestDNS.cpp
netwerk/test/TestIDN.cpp
netwerk/test/TestIOThreads.cpp
netwerk/test/TestIncrementalDownload.cpp
netwerk/test/TestNamedPipeService.cpp
netwerk/test/TestOpen.cpp
netwerk/test/TestProtocols.cpp
netwerk/test/TestServ.cpp
netwerk/test/TestSocketTransport.cpp
netwerk/test/TestStreamLoader.cpp
netwerk/test/TestStreamPump.cpp
netwerk/test/TestStreamTransport.cpp
netwerk/test/TestUDPSocket.cpp
netwerk/test/TestUDPSocketProvider.cpp
netwerk/test/TestURLParser.cpp
netwerk/test/TestUpload.cpp
netwerk/test/moz.build
netwerk/test/urltest.cpp
testing/cppunittest.ini
--- a/netwerk/streamconv/moz.build
+++ b/netwerk/streamconv/moz.build
@@ -1,16 +1,15 @@
 # -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += ['converters']
-TEST_DIRS += ['test']
 
 XPIDL_SOURCES += [
     'mozITXTToHTMLConv.idl',
     'nsIDirIndex.idl',
     'nsIDirIndexListener.idl',
     'nsIStreamConverter.idl',
     'nsIStreamConverterService.idl',
     'nsITXTToHTMLConv.idl',
deleted file mode 100644
--- a/netwerk/streamconv/test/Converters.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-#include "Converters.h"
-#include "nsIStringStream.h"
-#include "nsCOMPtr.h"
-#include "nsComponentManagerUtils.h"
-
-#include <stdio.h>
-
-//////////////////////////////////////////////////
-// TestConverter
-//////////////////////////////////////////////////
-
-#define NS_TESTCONVERTER_CID                         \
-{ /* B8A067B0-4450-11d3-A16E-0050041CAF44 */         \
-    0xb8a067b0,                                      \
-    0x4450,                                          \
-    0x11d3,                                          \
-    {0xa1, 0x6e, 0x00, 0x50, 0x04, 0x1c, 0xaf, 0x44} \
-}
-
-NS_DEFINE_CID(kTestConverterCID, NS_TESTCONVERTER_CID);
-
-NS_IMPL_ISUPPORTS(TestConverter,
-                  nsIStreamConverter,
-                  nsIStreamListener,
-                  nsIRequestObserver)
-
-TestConverter::TestConverter() {
-}
-
-// Convert aFromStream (of type aFromType), to _retval (nsIInputStream of type aToType).
-// This Convert method simply converts the stream byte-by-byte, to the first character
-// in the aToType "string".
-NS_IMETHODIMP
-TestConverter::Convert(nsIInputStream *aFromStream, 
-                       const char *aFromType, 
-                       const char *aToType, 
-                       nsISupports *ctxt, 
-                       nsIInputStream **_retval) {
-    char buf[1024+1];
-    uint32_t read;
-    nsresult rv = aFromStream->Read(buf, 1024, &read);
-    if (NS_FAILED(rv) || read == 0) return rv;
-
-    // verify that the data we're converting matches the from type
-    // if it doesn't then we're being handed the wrong data.
-    char fromChar = *aFromType;
-
-    if (fromChar != buf[0]) {
-        printf("We're receiving %c, but are supposed to have %c.\n", buf[0], fromChar);
-        return NS_ERROR_FAILURE;
-    }
-
-
-    // Get the first character 
-    char toChar = *aToType;
-
-    for (uint32_t i = 0; i < read; i++) 
-        buf[i] = toChar;
-
-    buf[read] = '\0';
-
-    nsCOMPtr<nsIStringInputStream> str
-      (do_CreateInstance("@mozilla.org/io/string-input-stream;1", &rv));
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    rv = str->SetData(buf, read);
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    NS_ADDREF(*_retval = str);
-    return NS_OK;
-}
-
-/* This method initializes any internal state before the stream converter
- * begins asynchronous conversion */
-NS_IMETHODIMP
-TestConverter::AsyncConvertData(const char *aFromType,
-                                const char *aToType, 
-                                nsIStreamListener *aListener, 
-                                nsISupports *ctxt) {
-    NS_ASSERTION(aListener, "null listener");
-
-    mListener = aListener;
-
-    // based on these types, setup internal state to handle the appropriate conversion.
-    fromType = aFromType;
-    toType = aToType;
-
-    return NS_OK; 
-}
-
-// nsIStreamListener method
-/* This method handles asyncronous conversion of data. */
-NS_IMETHODIMP
-TestConverter::OnDataAvailable(nsIRequest* request,
-                               nsISupports *ctxt, 
-                               nsIInputStream *inStr, 
-                               uint64_t sourceOffset, 
-                               uint32_t count) {
-    nsresult rv;
-    nsCOMPtr<nsIInputStream> convertedStream;
-    // just make a syncronous call to the Convert() method.
-    // Anything can happen here, I just happen to be using the sync call to 
-    // do the actual conversion.
-    rv = Convert(inStr, fromType.get(), toType.get(), ctxt, getter_AddRefs(convertedStream));
-    if (NS_FAILED(rv)) return rv;
-
-    uint64_t len = 0;
-    convertedStream->Available(&len);
-
-    uint64_t offset = sourceOffset;
-    while (len > 0) {
-        uint32_t count = saturated(len);
-        rv = mListener->OnDataAvailable(request, ctxt, convertedStream, offset, count);
-        if (NS_FAILED(rv)) return rv;
-
-        offset += count;
-        len -= count;
-    }
-    return NS_OK;
-}
-
-// nsIRequestObserver methods
-/* These methods just pass through directly to the mListener */
-NS_IMETHODIMP
-TestConverter::OnStartRequest(nsIRequest* request, nsISupports *ctxt) {
-    return mListener->OnStartRequest(request, ctxt);
-}
-
-NS_IMETHODIMP
-TestConverter::OnStopRequest(nsIRequest* request, nsISupports *ctxt, 
-                             nsresult aStatus) {
-    return mListener->OnStopRequest(request, ctxt, aStatus);
-}
-
-nsresult
-CreateTestConverter(nsISupports* aOuter, REFNSIID aIID, void** aResult)
-{
-  nsCOMPtr<nsISupports> conv = new TestConverter();
-  return conv->QueryInterface(aIID, aResult);
-}
deleted file mode 100644
--- a/netwerk/streamconv/test/Converters.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef Converters_h___
-#define Converters_h___
-
-#include "nsIStreamConverter.h"
-#include "nsIFactory.h"
-#include "nsCOMPtr.h"
-#include "nsStringAPI.h"
-
-#include <algorithm>
-
-/* This file defines stream converter components, and their accompanying factory class.
- * These converters implement the nsIStreamConverter interface and support both
- * asynchronous and synchronous stream conversion.
- */
-
-///////////////////////////////////////////////
-// TestConverter
-
-extern const nsCID kTestConverterCID;
-
-class TestConverter : public nsIStreamConverter {
-    virtual ~TestConverter() {}
-public:
-    NS_DECL_ISUPPORTS
-    NS_DECL_NSIREQUESTOBSERVER
-    NS_DECL_NSISTREAMLISTENER
-
-    TestConverter();
-
-    // nsIStreamConverter methods
-    NS_IMETHOD Convert(nsIInputStream *aFromStream, const char *aFromType, 
-                       const char *aToType, nsISupports *ctxt, nsIInputStream **_retval) override;
-
-
-    NS_IMETHOD AsyncConvertData(const char *aFromType, const char *aToType, 
-                                nsIStreamListener *aListener, nsISupports *ctxt) override;
-
-    // member data
-    nsCOMPtr<nsIStreamListener> mListener;
-    nsCString fromType;
-    nsCString toType;
-};
-
-nsresult CreateTestConverter(nsISupports* aOuter, REFNSIID aIID, void** aResult);
-
-static inline uint32_t
-saturated(uint64_t aValue)
-{
-    return (uint32_t) std::min(aValue, (uint64_t) UINT32_MAX);
-}
-
-#endif /* !Converters_h___ */
deleted file mode 100644
--- a/netwerk/streamconv/test/TestStreamConv.cpp
+++ /dev/null
@@ -1,261 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIServiceManager.h"
-#include "nsIStreamConverterService.h"
-#include "nsIStreamConverter.h"
-#include "nsICategoryManager.h"
-#include "mozilla/Module.h"
-#include "nsXULAppAPI.h"
-#include "nsIStringStream.h"
-#include "nsCOMPtr.h"
-#include "nsThreadUtils.h"
-#include "mozilla/Attributes.h"
-#include "nsMemory.h"
-#include "nsServiceManagerUtils.h"
-#include "nsComponentManagerUtils.h"
-#include "nsIRequest.h"
-#include "nsNetCID.h"
-#include "nsNetUtil.h"
-
-#define ASYNC_TEST // undefine this if you want to test sycnronous conversion.
-
-/////////////////////////////////
-// Event pump setup
-/////////////////////////////////
-#ifdef XP_WIN
-#include <windows.h>
-#endif
-
-static int gKeepRunning = 0;
-/////////////////////////////////
-// Event pump END
-/////////////////////////////////
-
-
-/////////////////////////////////
-// Test converters include
-/////////////////////////////////
-#include "Converters.h"
-
-// CID setup
-static NS_DEFINE_CID(kStreamConverterServiceCID, NS_STREAMCONVERTERSERVICE_CID);
-
-////////////////////////////////////////////////////////////////////////
-// EndListener - This listener is the final one in the chain. It
-//   receives the fully converted data, although it doesn't do anything with
-//   the data.
-////////////////////////////////////////////////////////////////////////
-class EndListener final : public nsIStreamListener {
-    ~EndListener() {}
-public:
-    // nsISupports declaration
-    NS_DECL_ISUPPORTS
-
-    EndListener() {}
-
-    // nsIStreamListener method
-    NS_IMETHOD OnDataAvailable(nsIRequest* request, nsISupports *ctxt, nsIInputStream *inStr, 
-                               uint64_t sourceOffset, uint32_t count) override
-    {
-        nsresult rv;
-        uint32_t read;
-        uint64_t len64;
-        rv = inStr->Available(&len64);
-        if (NS_FAILED(rv)) return rv;
-        uint32_t len = (uint32_t)std::min(len64, (uint64_t)(UINT32_MAX - 1));
-
-        char *buffer = (char*)moz_xmalloc(len + 1);
-        if (!buffer) return NS_ERROR_OUT_OF_MEMORY;
-
-        rv = inStr->Read(buffer, len, &read);
-        buffer[len] = '\0';
-        if (NS_SUCCEEDED(rv)) {
-            printf("CONTEXT %p: Received %u bytes and the following data: \n %s\n\n",
-                   static_cast<void*>(ctxt), read, buffer);
-        }
-        free(buffer);
-
-        return NS_OK;
-    }
-
-    // nsIRequestObserver methods
-    NS_IMETHOD OnStartRequest(nsIRequest* request, nsISupports *ctxt) override { return NS_OK; }
-
-    NS_IMETHOD OnStopRequest(nsIRequest* request, nsISupports *ctxt, 
-                             nsresult aStatus) override { return NS_OK; }
-};
-
-NS_IMPL_ISUPPORTS(EndListener,
-                  nsIStreamListener,
-                  nsIRequestObserver)
-
-////////////////////////////////////////////////////////////////////////
-// EndListener END
-////////////////////////////////////////////////////////////////////////
-
-nsresult SendData(const char * aData, nsIStreamListener* aListener, nsIRequest* request) {
-    nsresult rv;
-
-    nsCOMPtr<nsIStringInputStream> dataStream
-      (do_CreateInstance("@mozilla.org/io/string-input-stream;1", &rv));
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    rv = dataStream->SetData(aData, strlen(aData));
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    uint64_t avail = 0;
-    dataStream->Available(&avail);
-
-    uint64_t offset = 0;
-    while (avail > 0) {
-        uint32_t count = saturated(avail);
-        rv = aListener->OnDataAvailable(request, nullptr, dataStream,
-                                        offset, count);
-        if (NS_FAILED(rv)) return rv;
-
-        offset += count;
-        avail -= count;
-    }
-    return NS_OK;
-}
-#define SEND_DATA(x) SendData(x, converterListener, request)
-
-static const mozilla::Module::CIDEntry kTestCIDs[] = {
-    { &kTestConverterCID, false, nullptr, CreateTestConverter },
-    { nullptr }
-};
-
-static const mozilla::Module::ContractIDEntry kTestContracts[] = {
-    { NS_ISTREAMCONVERTER_KEY "?from=a/foo&to=b/foo", &kTestConverterCID },
-    { NS_ISTREAMCONVERTER_KEY "?from=b/foo&to=c/foo", &kTestConverterCID },
-    { NS_ISTREAMCONVERTER_KEY "?from=b/foo&to=d/foo", &kTestConverterCID },
-    { NS_ISTREAMCONVERTER_KEY "?from=c/foo&to=d/foo", &kTestConverterCID },
-    { NS_ISTREAMCONVERTER_KEY "?from=d/foo&to=e/foo", &kTestConverterCID },
-    { NS_ISTREAMCONVERTER_KEY "?from=d/foo&to=f/foo", &kTestConverterCID },
-    { NS_ISTREAMCONVERTER_KEY "?from=t/foo&to=k/foo", &kTestConverterCID },
-    { nullptr }
-};
-
-static const mozilla::Module::CategoryEntry kTestCategories[] = {
-    { NS_ISTREAMCONVERTER_KEY, "?from=a/foo&to=b/foo", "x" },
-    { NS_ISTREAMCONVERTER_KEY, "?from=b/foo&to=c/foo", "x" },
-    { NS_ISTREAMCONVERTER_KEY, "?from=b/foo&to=d/foo", "x" },
-    { NS_ISTREAMCONVERTER_KEY, "?from=c/foo&to=d/foo", "x" },
-    { NS_ISTREAMCONVERTER_KEY, "?from=d/foo&to=e/foo", "x" },
-    { NS_ISTREAMCONVERTER_KEY, "?from=d/foo&to=f/foo", "x" },
-    { NS_ISTREAMCONVERTER_KEY, "?from=t/foo&to=k/foo", "x" },
-    { nullptr }
-};
-
-static const mozilla::Module kTestModule = {
-    mozilla::Module::kVersion,
-    kTestCIDs,
-    kTestContracts,
-    kTestCategories
-};
-
-int
-main(int argc, char* argv[])
-{
-    nsresult rv;
-    {
-        XRE_AddStaticComponent(&kTestModule);
-
-        nsCOMPtr<nsIServiceManager> servMan;
-        NS_InitXPCOM2(getter_AddRefs(servMan), nullptr, nullptr);
-    
-        nsCOMPtr<nsIThread> thread = do_GetCurrentThread();
-
-        nsCOMPtr<nsICategoryManager> catman =
-            do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv);
-        if (NS_FAILED(rv)) return -1;
-        nsCString previous;
-
-        nsCOMPtr<nsIStreamConverterService> StreamConvService =
-                 do_GetService(kStreamConverterServiceCID, &rv);
-        if (NS_FAILED(rv)) return -1;
-
-        // Define the *from* content type and *to* content-type for conversion.
-        static const char fromStr[] = "a/foo";
-        static const char toStr[] = "c/foo";
-    
-#ifdef ASYNC_TEST
-        // ASYNCHRONOUS conversion
-
-        // Build up a channel that represents the content we're
-        // starting the transaction with.
-        //
-        // sample multipart mixed content-type string:
-        // "multipart/x-mixed-replacE;boundary=thisrandomstring"
-#if 0
-        nsCOMPtr<nsIChannel> channel;
-        nsCOMPtr<nsIURI> dummyURI;
-        rv = NS_NewURI(getter_AddRefs(dummyURI), "http://meaningless");
-        if (NS_FAILED(rv)) return -1;
-
-        rv = NS_NewInputStreamChannel(getter_AddRefs(channel),
-                                      dummyURI,
-                                      nullptr,   // inStr
-                                      "text/plain", // content-type
-                                      -1);      // XXX fix contentLength
-        if (NS_FAILED(rv)) return -1;
-
-        nsCOMPtr<nsIRequest> request(do_QueryInterface(channel));
-#endif
-
-        nsCOMPtr<nsIRequest> request;
-
-        // setup a listener to receive the converted data. This guy is the end
-        // listener in the chain, he wants the fully converted (toType) data.
-        // An example of this listener in mozilla would be the DocLoader.
-        nsIStreamListener *dataReceiver = new EndListener();
-        NS_ADDREF(dataReceiver);
-
-        // setup a listener to push the data into. This listener sits inbetween the
-        // unconverted data of fromType, and the final listener in the chain (in this case
-        // the dataReceiver.
-        nsIStreamListener *converterListener = nullptr;
-        rv = StreamConvService->AsyncConvertData(fromStr, toStr,
-                                                 dataReceiver, nullptr, &converterListener);
-        if (NS_FAILED(rv)) return -1;
-        NS_RELEASE(dataReceiver);
-
-        // at this point we have a stream listener to push data to, and the one
-        // that will receive the converted data. Let's mimic On*() calls and get the conversion
-        // going. Typically these On*() calls would be made inside their respective wrappers On*()
-        // methods.
-        rv = converterListener->OnStartRequest(request, nullptr);
-        if (NS_FAILED(rv)) return -1;
-
-        rv = SEND_DATA("aaa");
-        if (NS_FAILED(rv)) return -1;
-
-        rv = SEND_DATA("aaa");
-        if (NS_FAILED(rv)) return -1;
-
-        // Finish the request.
-        rv = converterListener->OnStopRequest(request, nullptr, rv);
-        if (NS_FAILED(rv)) return -1;
-
-        NS_RELEASE(converterListener);
-#else
-        // SYNCHRONOUS conversion
-        nsCOMPtr<nsIInputStream> convertedData;
-        rv = StreamConvService->Convert(inputData, fromStr, toStr,
-                                        nullptr, getter_AddRefs(convertedData));
-        if (NS_FAILED(rv)) return -1;
-#endif
-
-        // Enter the message pump to allow the URL load to proceed.
-        while ( gKeepRunning ) {
-            if (!NS_ProcessNextEvent(thread))
-                break;
-        }
-    } // this scopes the nsCOMPtrs
-    // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM
-    NS_ShutdownXPCOM(nullptr);
-    return 0;
-}
deleted file mode 100644
--- a/netwerk/streamconv/test/moz.build
+++ /dev/null
@@ -1,22 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-GeckoProgram('TestStreamConv', linkage='dependent')
-
-UNIFIED_SOURCES += [
-    'Converters.cpp',
-    'TestStreamConv.cpp',
-]
-
-if CONFIG['OS_ARCH'] == 'WINNT':
-    DEFINES['NGPREFS'] = True
-    if CONFIG['GNU_CXX']:
-        LDFLAGS += ['-mconsole']
-    else:
-        LDFLAGS += ['-SUBSYSTEM:CONSOLE']
-
-if CONFIG['GNU_CXX']:
-    CXXFLAGS += ['-Wno-error=shadow']
deleted file mode 100644
--- a/netwerk/test/PropertiesTest.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "TestCommon.h"
-#include "mozilla/Sprintf.h"
-#include "nsXPCOM.h"
-#include "nsStringAPI.h"
-#include "nsIPersistentProperties2.h"
-#include "nsIServiceManager.h"
-#include "nsIComponentRegistrar.h"
-#include "nsIURL.h"
-#include "nsNetCID.h"
-#include "nsIChannel.h"
-#include "nsIComponentManager.h"
-#include <stdio.h>
-#include "nsComponentManagerUtils.h"
-#include "nsServiceManagerUtils.h"
-#include "nsISimpleEnumerator.h"
-#include "nsIScriptSecurityManager.h"
-#include "nsILoadInfo.h"
-#include "nsNetUtil.h"
-
-#define TEST_URL "resource:/res/test.properties"
-static NS_DEFINE_CID(kPersistentPropertiesCID, NS_IPERSISTENTPROPERTIES_CID);
-
-/***************************************************************************/
-
-int
-main(int argc, char* argv[])
-{
-  if (test_common_init(&argc, &argv) != 0)
-    return -1;
-
-  nsresult ret;
-
-  nsCOMPtr<nsIServiceManager> servMan;
-  NS_InitXPCOM2(getter_AddRefs(servMan), nullptr, nullptr);
-
-  nsIInputStream* in = nullptr;
-
-  nsCOMPtr<nsIScriptSecurityManager> secman =
-    do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &ret);
-  if (NS_FAILED(ret)) return 1;
-  nsCOMPtr<nsIPrincipal> systemPrincipal;
-    ret = secman->GetSystemPrincipal(getter_AddRefs(systemPrincipal));
-   if (NS_FAILED(ret)) return 1;
-
-  nsCOMPtr<nsIURI> uri;
-  ret = NS_NewURI(getter_AddRefs(uri), NS_LITERAL_CSTRING(TEST_URL));
-  if (NS_FAILED(ret)) return 1;
-
-  nsIChannel *channel = nullptr;
-  ret = NS_NewChannel(&channel,
-                      uri,
-                      systemPrincipal,
-                      nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL,
-                      nsIContentPolicy::TYPE_OTHER);
-  if (NS_FAILED(ret)) return 1;
-
-  ret = channel->Open2(&in);
-  if (NS_FAILED(ret)) return 1;
-
-  nsIPersistentProperties* props;
-  ret = CallCreateInstance(kPersistentPropertiesCID, &props);
-  if (NS_FAILED(ret) || (!props)) {
-    printf("create nsIPersistentProperties failed\n");
-    return 1;
-  }
-  ret = props->Load(in);
-  if (NS_FAILED(ret)) {
-    printf("cannot load properties\n");
-    return 1;
-  }
-  int i = 1;
-  while (true) {
-    char name[16];
-    name[0] = 0;
-    SprintfLiteral(name, "%d", i);
-    nsAutoString v;
-    ret = props->GetStringProperty(nsDependentCString(name), v);
-    if (NS_FAILED(ret) || (!v.Length())) {
-      break;
-    }
-    printf("\"%d\"=\"%s\"\n", i, NS_ConvertUTF16toUTF8(v).get());
-    i++;
-  }
-
-  nsCOMPtr<nsISimpleEnumerator> propEnum;
-  ret = props->Enumerate(getter_AddRefs(propEnum));
-
-  if (NS_FAILED(ret)) {
-    printf("cannot enumerate properties\n");
-    return 1;
-  }
-  
-
-  printf("\nKey\tValue\n");
-  printf(  "---\t-----\n");
-  
-  bool hasMore;
-  while (NS_SUCCEEDED(propEnum->HasMoreElements(&hasMore)) &&
-         hasMore) {
-    nsCOMPtr<nsISupports> sup;
-    ret = propEnum->GetNext(getter_AddRefs(sup));
-    
-    nsCOMPtr<nsIPropertyElement> propElem = do_QueryInterface(sup, &ret);
-	  if (NS_FAILED(ret)) {
-      printf("failed to get current item\n");
-      return 1;
-	  }
-
-    nsAutoCString key;
-    nsAutoString value;
-
-    ret = propElem->GetKey(key);
-	  if (NS_FAILED(ret)) {
-		  printf("failed to get current element's key\n");
-		  return 1;
-	  }
-    ret = propElem->GetValue(value);
-	  if (NS_FAILED(ret)) {
-		  printf("failed to get current element's value\n");
-		  return 1;
-	  }
-
-    printf("%s\t%s\n", key.get(), NS_ConvertUTF16toUTF8(value).get());
-  }
-  return 0;
-}
deleted file mode 100644
--- a/netwerk/test/ReadNTLM.cpp
+++ /dev/null
@@ -1,325 +0,0 @@
-/* vim: set ts=2 sw=2 et cindent: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <ctype.h>
-
-#include "plbase64.h"
-#include "nsStringAPI.h"
-#include "prmem.h"
-
-/*
- * ReadNTLM : reads NTLM messages.
- *
- * based on http://davenport.sourceforge.net/ntlm.html
- */
-
-#define kNegotiateUnicode               0x00000001
-#define kNegotiateOEM                   0x00000002
-#define kRequestTarget                  0x00000004
-#define kUnknown1                       0x00000008
-#define kNegotiateSign                  0x00000010
-#define kNegotiateSeal                  0x00000020
-#define kNegotiateDatagramStyle         0x00000040
-#define kNegotiateLanManagerKey         0x00000080
-#define kNegotiateNetware               0x00000100
-#define kNegotiateNTLMKey               0x00000200
-#define kUnknown2                       0x00000400
-#define kUnknown3                       0x00000800
-#define kNegotiateDomainSupplied        0x00001000
-#define kNegotiateWorkstationSupplied   0x00002000
-#define kNegotiateLocalCall             0x00004000
-#define kNegotiateAlwaysSign            0x00008000
-#define kTargetTypeDomain               0x00010000
-#define kTargetTypeServer               0x00020000
-#define kTargetTypeShare                0x00040000
-#define kNegotiateNTLM2Key              0x00080000
-#define kRequestInitResponse            0x00100000
-#define kRequestAcceptResponse          0x00200000
-#define kRequestNonNTSessionKey         0x00400000
-#define kNegotiateTargetInfo            0x00800000
-#define kUnknown4                       0x01000000
-#define kUnknown5                       0x02000000
-#define kUnknown6                       0x04000000
-#define kUnknown7                       0x08000000
-#define kUnknown8                       0x10000000
-#define kNegotiate128                   0x20000000
-#define kNegotiateKeyExchange           0x40000000
-#define kNegotiate56                    0x80000000
-
-static const char NTLM_SIGNATURE[] = "NTLMSSP";
-static const char NTLM_TYPE1_MARKER[] = { 0x01, 0x00, 0x00, 0x00 };
-static const char NTLM_TYPE2_MARKER[] = { 0x02, 0x00, 0x00, 0x00 };
-static const char NTLM_TYPE3_MARKER[] = { 0x03, 0x00, 0x00, 0x00 };
-
-#define NTLM_MARKER_LEN 4
-#define NTLM_TYPE1_HEADER_LEN 32
-#define NTLM_TYPE2_HEADER_LEN 32
-#define NTLM_TYPE3_HEADER_LEN 64
-
-#define LM_HASH_LEN 16
-#define LM_RESP_LEN 24
-
-#define NTLM_HASH_LEN 16
-#define NTLM_RESP_LEN 24
-
-static void PrintFlags(uint32_t flags)
-{
-#define TEST(_flag) \
-  if (flags & k ## _flag) \
-    printf("    0x%08x (" # _flag ")\n", k ## _flag)
-
-  TEST(NegotiateUnicode);
-  TEST(NegotiateOEM);
-  TEST(RequestTarget);
-  TEST(Unknown1);
-  TEST(NegotiateSign);
-  TEST(NegotiateSeal);
-  TEST(NegotiateDatagramStyle);
-  TEST(NegotiateLanManagerKey);
-  TEST(NegotiateNetware);
-  TEST(NegotiateNTLMKey);
-  TEST(Unknown2);
-  TEST(Unknown3);
-  TEST(NegotiateDomainSupplied);
-  TEST(NegotiateWorkstationSupplied);
-  TEST(NegotiateLocalCall);
-  TEST(NegotiateAlwaysSign);
-  TEST(TargetTypeDomain);
-  TEST(TargetTypeServer);
-  TEST(TargetTypeShare);
-  TEST(NegotiateNTLM2Key);
-  TEST(RequestInitResponse);
-  TEST(RequestAcceptResponse);
-  TEST(RequestNonNTSessionKey);
-  TEST(NegotiateTargetInfo);
-  TEST(Unknown4);
-  TEST(Unknown5);
-  TEST(Unknown6);
-  TEST(Unknown7);
-  TEST(Unknown8);
-  TEST(Negotiate128);
-  TEST(NegotiateKeyExchange);
-  TEST(Negotiate56);
-
-#undef TEST
-}
-
-static void
-PrintBuf(const char *tag, const uint8_t *buf, uint32_t bufLen)
-{
-  int i;
-
-  printf("%s =\n", tag);
-  while (bufLen > 0)
-  {
-    int count = bufLen;
-    if (count > 8)
-      count = 8;
-
-    printf("    ");
-    for (i=0; i<count; ++i)
-    {
-      printf("0x%02x ", int(buf[i]));
-    }
-    for (; i<8; ++i)
-    {
-      printf("     ");
-    }
-
-    printf("   ");
-    for (i=0; i<count; ++i)
-    {
-      if (isprint(buf[i]))
-        printf("%c", buf[i]);
-      else
-        printf(".");
-    }
-    printf("\n");
-
-    bufLen -= count;
-    buf += count;
-  }
-}
-
-static uint16_t
-ReadUint16(const uint8_t *&buf)
-{
-  uint16_t x;
-#ifdef IS_BIG_ENDIAN
-  x = ((uint16_t) buf[1]) | ((uint16_t) buf[0] << 8);
-#else
-  x = ((uint16_t) buf[0]) | ((uint16_t) buf[1] << 8);
-#endif
-  buf += sizeof(x);
-  return x;
-}
-
-static uint32_t
-ReadUint32(const uint8_t *&buf)
-{
-  uint32_t x;
-#ifdef IS_BIG_ENDIAN
-  x = ( (uint32_t) buf[3])        |
-      (((uint32_t) buf[2]) << 8)  |
-      (((uint32_t) buf[1]) << 16) |
-      (((uint32_t) buf[0]) << 24);
-#else
-  x = ( (uint32_t) buf[0])        |
-      (((uint32_t) buf[1]) << 8)  |
-      (((uint32_t) buf[2]) << 16) |
-      (((uint32_t) buf[3]) << 24);
-#endif
-  buf += sizeof(x);
-  return x;
-}
-
-typedef struct {
-  uint16_t length;
-  uint16_t capacity;
-  uint32_t offset;
-} SecBuf;
-
-static void
-ReadSecBuf(SecBuf *s, const uint8_t *&buf)
-{
-  s->length = ReadUint16(buf);
-  s->capacity = ReadUint16(buf);
-  s->offset = ReadUint32(buf);
-}
-
-static void
-ReadType1MsgBody(const uint8_t *inBuf, uint32_t start)
-{
-  const uint8_t *cursor = inBuf + start;
-  uint32_t flags;
-
-  PrintBuf("flags", cursor, 4);
-  // read flags
-  flags = ReadUint32(cursor);
-  PrintFlags(flags);
-
-  // type 1 message may not include trailing security buffers
-  if ((flags & kNegotiateDomainSupplied) | 
-      (flags & kNegotiateWorkstationSupplied))
-  {
-    SecBuf secbuf;
-    ReadSecBuf(&secbuf, cursor);
-    PrintBuf("supplied domain", inBuf + secbuf.offset, secbuf.length);
-
-    ReadSecBuf(&secbuf, cursor);
-    PrintBuf("supplied workstation", inBuf + secbuf.offset, secbuf.length);
-  }
-}
-
-static void
-ReadType2MsgBody(const uint8_t *inBuf, uint32_t start)
-{
-  uint16_t targetLen, offset;
-  uint32_t flags;
-  const uint8_t *target;
-  const uint8_t *cursor = inBuf + start;
-
-  // read target name security buffer
-  targetLen = ReadUint16(cursor);
-  ReadUint16(cursor); // discard next 16-bit value
-  offset = ReadUint32(cursor); // get offset from inBuf
-  target = inBuf + offset;
-
-  PrintBuf("target", target, targetLen);
-
-  PrintBuf("flags", cursor, 4);
-  // read flags
-  flags = ReadUint32(cursor);
-  PrintFlags(flags);
-
-  // read challenge
-  PrintBuf("challenge", cursor, 8);
-  cursor += 8;
-
-  PrintBuf("context", cursor, 8);
-  cursor += 8;
-
-  SecBuf secbuf;
-  ReadSecBuf(&secbuf, cursor);
-  PrintBuf("target information", inBuf + secbuf.offset, secbuf.length);
-}
-
-static void
-ReadType3MsgBody(const uint8_t *inBuf, uint32_t start)
-{
-  const uint8_t *cursor = inBuf + start;
-
-  SecBuf secbuf;
-
-  ReadSecBuf(&secbuf, cursor); // LM response
-  PrintBuf("LM response", inBuf + secbuf.offset, secbuf.length);
-
-  ReadSecBuf(&secbuf, cursor); // NTLM response
-  PrintBuf("NTLM response", inBuf + secbuf.offset, secbuf.length);
-
-  ReadSecBuf(&secbuf, cursor); // domain name
-  PrintBuf("domain name", inBuf + secbuf.offset, secbuf.length);
-
-  ReadSecBuf(&secbuf, cursor); // user name
-  PrintBuf("user name", inBuf + secbuf.offset, secbuf.length);
-
-  ReadSecBuf(&secbuf, cursor); // workstation name
-  PrintBuf("workstation name", inBuf + secbuf.offset, secbuf.length);
-
-  ReadSecBuf(&secbuf, cursor); // session key
-  PrintBuf("session key", inBuf + secbuf.offset, secbuf.length);
-
-  uint32_t flags = ReadUint32(cursor);
-  PrintBuf("flags", (const uint8_t *) &flags, sizeof(flags));
-  PrintFlags(flags);
-}
-
-static void
-ReadMsg(const char *base64buf, uint32_t bufLen)
-{
-  uint8_t *inBuf = (uint8_t *) PL_Base64Decode(base64buf, bufLen, nullptr);
-  if (!inBuf)
-  {
-    printf("PL_Base64Decode failed\n");
-    return;
-  }
-
-  const uint8_t *cursor = inBuf;
-
-  PrintBuf("signature", cursor, 8);
-
-  // verify NTLMSSP signature
-  if (memcmp(cursor, NTLM_SIGNATURE, sizeof(NTLM_SIGNATURE)) != 0)
-  {
-    printf("### invalid or corrupt NTLM signature\n");
-  }
-  cursor += sizeof(NTLM_SIGNATURE);
-
-  PrintBuf("message type", cursor, 4);
-
-  if (memcmp(cursor, NTLM_TYPE1_MARKER, sizeof(NTLM_MARKER_LEN)) == 0)
-    ReadType1MsgBody(inBuf, 12);
-  else if (memcmp(cursor, NTLM_TYPE2_MARKER, sizeof(NTLM_MARKER_LEN)) == 0)
-    ReadType2MsgBody(inBuf, 12);
-  else if (memcmp(cursor, NTLM_TYPE3_MARKER, sizeof(NTLM_MARKER_LEN)) == 0)
-    ReadType3MsgBody(inBuf, 12);
-  else
-    printf("### invalid or unknown message type\n"); 
-
-  PR_Free(inBuf);
-}
-
-int main(int argc, char **argv)
-{
-  if (argc == 1)
-  {
-    printf("usage: ntlmread <msg>\n");
-    return -1;
-  }
-  ReadMsg(argv[1], (uint32_t) strlen(argv[1]));
-  return 0;
-}
--- a/netwerk/test/TestBind.cpp
+++ b/netwerk/test/TestBind.cpp
@@ -1,210 +1,186 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "TestCommon.h"
-#include "TestHarness.h"
+#include "gtest/gtest.h"
 #include "nsISocketTransportService.h"
 #include "nsISocketTransport.h"
 #include "nsIServerSocket.h"
 #include "nsIAsyncInputStream.h"
 #include "nsINetAddr.h"
 #include "mozilla/net/DNS.h"
 #include "prerror.h"
+#include "nsComponentManagerUtils.h"
+#include "nsServiceManagerUtils.h"
 
 using namespace mozilla::net;
 using namespace mozilla;
 
 class ServerListener: public nsIServerSocketListener
 {
 public:
   NS_DECL_ISUPPORTS
   NS_DECL_NSISERVERSOCKETLISTENER
 
-  ServerListener();
+  explicit ServerListener(WaitForCondition* waiter);
 
   // Port that is got from server side will be store here.
   uint32_t mClientPort;
   bool mFailed;
+  RefPtr<WaitForCondition> mWaiter;
 private:
   virtual ~ServerListener();
 };
 
 NS_IMPL_ISUPPORTS(ServerListener, nsIServerSocketListener)
 
-ServerListener::ServerListener()
+ServerListener::ServerListener(WaitForCondition* waiter)
   : mClientPort(-1)
   , mFailed(false)
+  , mWaiter(waiter)
 {
 }
 
 ServerListener::~ServerListener() = default;
 
 NS_IMETHODIMP
 ServerListener::OnSocketAccepted(nsIServerSocket *aServ,
                                  nsISocketTransport *aTransport)
 {
   // Run on STS thread.
   NetAddr peerAddr;
   nsresult rv = aTransport->GetPeerAddr(&peerAddr);
   if (NS_FAILED(rv)) {
     mFailed = true;
-    fail("Server: not able to get peer address.");
-    QuitPumpingEvents();
+    mWaiter->Notify();
     return NS_OK;
   }
   mClientPort = PR_ntohs(peerAddr.inet.port);
-  passed("Server: received connection");
-  QuitPumpingEvents();
+  mWaiter->Notify();
   return NS_OK;
 }
 
 NS_IMETHODIMP
 ServerListener::OnStopListening(nsIServerSocket *aServ,
                                 nsresult aStatus)
 {
   return NS_OK;
 }
 
 class ClientInputCallback : public nsIInputStreamCallback
 {
 public:
   NS_DECL_THREADSAFE_ISUPPORTS
   NS_DECL_NSIINPUTSTREAMCALLBACK
 
-  ClientInputCallback();
+  explicit ClientInputCallback(WaitForCondition* waiter);
 
   bool mFailed;
+  RefPtr<WaitForCondition> mWaiter;
 private:
   virtual ~ClientInputCallback();
 };
 
 NS_IMPL_ISUPPORTS(ClientInputCallback, nsIInputStreamCallback)
 
-ClientInputCallback::ClientInputCallback()
+ClientInputCallback::ClientInputCallback(WaitForCondition* waiter)
   : mFailed(false)
+  , mWaiter(waiter)
 {
 }
 
 ClientInputCallback::~ClientInputCallback() = default;
 
 NS_IMETHODIMP
 ClientInputCallback::OnInputStreamReady(nsIAsyncInputStream *aStream)
 {
   // Server doesn't send. That means if we are here, we probably have run into
   // an error.
   uint64_t avail;
   nsresult rv = aStream->Available(&avail);
   if (NS_FAILED(rv)) {
     mFailed = true;
   }
-  QuitPumpingEvents();
+  mWaiter->Notify();
   return NS_OK;
 }
 
-int
-main(int32_t argc, char *argv[])
+TEST(TestBind, MainTest)
 {
-  ScopedXPCOM xpcom("SocketTransport");
-  if (xpcom.failed()) {
-    fail("Unable to initalize XPCOM.");
-    return -1;
-  }
-
   //
   // Server side.
   //
   nsCOMPtr<nsIServerSocket> server = do_CreateInstance("@mozilla.org/network/server-socket;1");
-  if (!server) {
-    fail("Failed to create server socket.");
-    return -1;
-  }
+  ASSERT_TRUE(server);
 
   nsresult rv = server->Init(-1, true, -1);
-  if (NS_FAILED(rv)) {
-    fail("Failed to initialize server.");
-    return -1;
-  }
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
 
   int32_t serverPort;
   rv = server->GetPort(&serverPort);
-  if (NS_FAILED(rv)) {
-    fail("Unable to get server port.");
-    return -1;
-  }
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
+
+  RefPtr<WaitForCondition> waiter = new WaitForCondition();
 
   // Listening.
-  RefPtr<ServerListener> serverListener = new ServerListener();
+  RefPtr<ServerListener> serverListener = new ServerListener(waiter);
   rv = server->AsyncListen(serverListener);
-  if (NS_FAILED(rv)) {
-    fail("Server fail to start listening.");
-    return -1;
-  }
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
 
   //
   // Client side
   //
   uint32_t bindingPort = 20000;
   nsCOMPtr<nsISocketTransportService> sts =
     do_GetService("@mozilla.org/network/socket-transport-service;1", &rv);
-  if (NS_FAILED(rv)) {
-    fail("Unable to get socket transport service.");
-    return -1;
-  }
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
+
+  nsCOMPtr<nsIInputStream> inputStream;
+  RefPtr<ClientInputCallback> clientCallback;
 
   for (int32_t tried = 0; tried < 100; tried++) {
     nsCOMPtr<nsISocketTransport> client;
     rv = sts->CreateTransport(nullptr, 0, NS_LITERAL_CSTRING("127.0.0.1"),
                               serverPort, nullptr, getter_AddRefs(client));
-    if (NS_FAILED(rv)) {
-      fail("Unable to create transport.");
-      return -1;
-    }
+    ASSERT_TRUE(NS_SUCCEEDED(rv));
 
     // Bind to a port. It's possible that we are binding to a port that is
     // currently in use. If we failed to bind, we try next port.
     NetAddr bindingAddr;
     bindingAddr.inet.family = AF_INET;
     bindingAddr.inet.ip = 0;
     bindingAddr.inet.port = PR_htons(bindingPort);
     rv = client->Bind(&bindingAddr);
-    if (NS_FAILED(rv)) {
-      fail("Unable to bind a port.");
-      return -1;
-    }
+    ASSERT_TRUE(NS_SUCCEEDED(rv));
 
     // Open IO streams, to make client SocketTransport connect to server.
-    RefPtr<ClientInputCallback> clientCallback = new ClientInputCallback();
-    nsCOMPtr<nsIInputStream> inputStream;
+    clientCallback = new ClientInputCallback(waiter);
     rv = client->OpenInputStream(nsITransport::OPEN_UNBUFFERED,
                                  0, 0, getter_AddRefs(inputStream));
-    if (NS_FAILED(rv)) {
-      fail("Failed to open an input stream.");
-      return -1;
-    }
+    ASSERT_TRUE(NS_SUCCEEDED(rv));
+
     nsCOMPtr<nsIAsyncInputStream> asyncInputStream = do_QueryInterface(inputStream);
     rv = asyncInputStream->AsyncWait(clientCallback, 0, 0, nullptr);
 
     // Wait for server's response or callback of input stream.
-    PumpEvents();
+    waiter->Wait(1);
     if (clientCallback->mFailed) {
       // if client received error, we likely have bound a port that is in use.
       // we can try another port.
       bindingPort++;
     } else {
       // We are unlocked by server side, leave the loop and check result.
       break;
     }
   }
 
-  if (serverListener->mFailed) {
-    fail("Server failure.");
-    return -1;
-  }
-  if (serverListener->mClientPort != bindingPort) {
-    fail("Port that server got doesn't match what we are expecting.");
-    return -1;
-  }
-  passed("Port matched");
-  return 0;
+  ASSERT_FALSE(serverListener->mFailed);
+  ASSERT_EQ(serverListener->mClientPort, bindingPort);
+
+  inputStream->Close();
+  waiter->Wait(1);
+  ASSERT_TRUE(clientCallback->mFailed);
+
+  server->Close();
 }
deleted file mode 100644
--- a/netwerk/test/TestBlockingSocket.cpp
+++ /dev/null
@@ -1,127 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "TestCommon.h"
-#include "nsIComponentRegistrar.h"
-#include "nsISocketTransportService.h"
-#include "nsISocketTransport.h"
-#include "nsIServiceManager.h"
-#include "nsIComponentManager.h"
-#include "nsCOMPtr.h"
-#include "nsStringAPI.h"
-#include "nsIFile.h"
-#include "nsNetUtil.h"
-#include "nsIInputStream.h"
-#include "nsServiceManagerUtils.h"
-#include "nsIOutputStream.h"
-#include "NetwerkTestLogging.h"
-#include "prenv.h"
-#include "prthread.h"
-#include <stdlib.h>
-
-////////////////////////////////////////////////////////////////////////////////
-
-//
-// set NSPR_LOG_MODULES=Test:5
-//
-static PRLogModuleInfo *gTestLog = nullptr;
-#define LOG(args) MOZ_LOG(gTestLog, mozilla::LogLevel::Debug, args)
-
-////////////////////////////////////////////////////////////////////////////////
-
-static NS_DEFINE_CID(kSocketTransportServiceCID, NS_SOCKETTRANSPORTSERVICE_CID);
-
-////////////////////////////////////////////////////////////////////////////////
-
-static nsresult
-RunBlockingTest(const nsACString &host, int32_t port, nsIFile *file)
-{
-    nsresult rv;
-
-    LOG(("RunBlockingTest\n"));
-
-    nsCOMPtr<nsISocketTransportService> sts =
-        do_GetService(kSocketTransportServiceCID, &rv);
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsIInputStream> input;
-    rv = NS_NewLocalFileInputStream(getter_AddRefs(input), file);
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsISocketTransport> trans;
-    rv = sts->CreateTransport(nullptr, 0, host, port, nullptr, getter_AddRefs(trans));
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsIOutputStream> output;
-    rv = trans->OpenOutputStream(nsITransport::OPEN_BLOCKING, 100, 10, getter_AddRefs(output));
-    if (NS_FAILED(rv)) return rv;
-
-    char buf[120];
-    uint32_t nr, nw;
-    for (;;) {
-        rv = input->Read(buf, sizeof(buf), &nr);
-        if (NS_FAILED(rv) || (nr == 0)) return rv;
-
-/*
-        const char *p = buf;
-        while (nr) {
-            rv = output->Write(p, nr, &nw);
-            if (NS_FAILED(rv)) return rv;
-
-            nr -= nw;
-            p  += nw;
-        }
-*/
-        
-        rv = output->Write(buf, nr, &nw);
-        if (NS_FAILED(rv)) return rv;
-
-        NS_ASSERTION(nr == nw, "not all written");
-    }
-
-    LOG(("  done copying data.\n"));
-    return NS_OK;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-int
-main(int argc, char* argv[])
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    nsresult rv;
-
-    if (argc < 4) {
-        printf("usage: %s <host> <port> <file-to-read>\n", argv[0]);
-        return -1;
-    }
-    char* hostName = argv[1];
-    int32_t port = atoi(argv[2]);
-    char* fileName = argv[3];
-    {
-        nsCOMPtr<nsIServiceManager> servMan;
-        NS_InitXPCOM2(getter_AddRefs(servMan), nullptr, nullptr);
-
-        gTestLog = PR_NewLogModule("Test");
-
-        nsCOMPtr<nsIFile> file;
-        rv = NS_NewNativeLocalFile(nsDependentCString(fileName), false, getter_AddRefs(file));
-        if (NS_FAILED(rv)) return -1;
-
-        rv = RunBlockingTest(nsDependentCString(hostName), port, file);
-        if (NS_FAILED(rv))
-            LOG(("RunBlockingTest failed [rv=%x]\n", rv));
-
-        // give background threads a chance to finish whatever work they may
-        // be doing.
-        LOG(("sleeping for 5 seconds...\n"));
-        PR_Sleep(PR_SecondsToInterval(5));
-    } // this scopes the nsCOMPtrs
-    // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM
-    rv = NS_ShutdownXPCOM(nullptr);
-    NS_ASSERTION(NS_SUCCEEDED(rv), "NS_ShutdownXPCOM failed");
-    return 0;
-}
--- a/netwerk/test/TestCommon.h
+++ b/netwerk/test/TestCommon.h
@@ -4,48 +4,47 @@
 
 #ifndef TestCommon_h__
 #define TestCommon_h__
 
 #include <stdlib.h>
 #include "nsThreadUtils.h"
 #include "mozilla/Attributes.h"
 
-inline int test_common_init(int *argc, char ***argv)
-{
-  return 0;
-}
-
 //-----------------------------------------------------------------------------
 
-static bool gKeepPumpingEvents = false;
-
-class nsQuitPumpingEvent final : public nsIRunnable {
-  ~nsQuitPumpingEvent() {}
+class WaitForCondition : public nsIRunnable
+{
 public:
   NS_DECL_THREADSAFE_ISUPPORTS
+
+  void Wait(int pending)
+  {
+    MOZ_ASSERT(NS_IsMainThread());
+    MOZ_ASSERT(mPending == 0);
+
+    mPending = pending;
+    while (mPending) {
+      NS_ProcessNextEvent();
+    }
+    NS_ProcessPendingEvents(nullptr);
+  }
+
+  void Notify() {
+    NS_DispatchToMainThread(this);
+  }
+
+private:
+  virtual ~WaitForCondition() { }
+
   NS_IMETHOD Run() override {
-    gKeepPumpingEvents = false;
+    MOZ_ASSERT(NS_IsMainThread());
+    MOZ_ASSERT(mPending);
+
+    --mPending;
     return NS_OK;
   }
+
+  uint32_t mPending = 0;
 };
-NS_IMPL_ISUPPORTS(nsQuitPumpingEvent, nsIRunnable)
-
-static inline void PumpEvents()
-{
-  nsCOMPtr<nsIThread> thread = do_GetCurrentThread();
-
-  gKeepPumpingEvents = true;
-  while (gKeepPumpingEvents)
-    NS_ProcessNextEvent(thread);
-
-  NS_ProcessPendingEvents(thread);
-}
-
-static inline void QuitPumpingEvents()
-{
-  // Dispatch a task that toggles gKeepPumpingEvents so that we flush all
-  // of the pending tasks before exiting from PumpEvents.
-  nsCOMPtr<nsIRunnable> event = new nsQuitPumpingEvent();
-  NS_DispatchToMainThread(event);
-}
+NS_IMPL_ISUPPORTS(WaitForCondition, nsIRunnable)
 
 #endif
--- a/netwerk/test/TestCookie.cpp
+++ b/netwerk/test/TestCookie.cpp
@@ -1,44 +1,45 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "TestCommon.h"
-#include "TestHarness.h"
+#include "gtest/gtest.h"
 #include "nsIServiceManager.h"
 #include "nsICookieService.h"
 #include "nsICookieManager.h"
 #include "nsICookieManager2.h"
 #include "nsICookie2.h"
 #include <stdio.h>
 #include "plstr.h"
 #include "prprf.h"
 #include "nsNetUtil.h"
 #include "nsISimpleEnumerator.h"
 #include "nsServiceManagerUtils.h"
 #include "nsNetCID.h"
-#include "nsStringAPI.h"
 #include "nsIPrefBranch.h"
 #include "nsIPrefService.h"
+#include "mozilla/Unused.h"
+#include "nsIURI.h"
+
+using mozilla::Unused;
 
 static NS_DEFINE_CID(kCookieServiceCID, NS_COOKIESERVICE_CID);
 static NS_DEFINE_CID(kPrefServiceCID,   NS_PREFSERVICE_CID);
 
 // various pref strings
 static const char kCookiesPermissions[] = "network.cookie.cookieBehavior";
 static const char kCookiesLifetimeEnabled[] = "network.cookie.lifetime.enabled";
 static const char kCookiesLifetimeDays[] = "network.cookie.lifetime.days";
 static const char kCookiesLifetimeCurrentSession[] = "network.cookie.lifetime.behavior";
 static const char kCookiesMaxPerHost[] = "network.cookie.maxPerHost";
 static const char kCookieLeaveSecurityAlone[] = "network.cookie.leave-secure-alone";
 
-static char *sBuffer;
-
 #define OFFSET_ONE_WEEK int64_t(604800) * PR_USEC_PER_SEC
 #define OFFSET_ONE_DAY int64_t(86400) * PR_USEC_PER_SEC
 
 //Set server time or expiry time
 void
 SetTime(PRTime offsetTime,nsAutoCString& serverString,nsAutoCString& cookieString,bool expiry)
 {
     char timeStringPreset[40];
@@ -59,97 +60,61 @@ SetTime(PRTime offsetTime,nsAutoCString&
 
     // Set cookie string
     PR_ExplodeTime(SetExpiryTime , PR_GMTParameters, &explodedTime);
     PR_FormatTimeUSEnglish(timeStringPreset, 40, "%c GMT", &explodedTime);
     cookieString.Replace(0, strlen("test=expiry; expires=") + strlen(timeStringPreset) + 1, "test=expiry; expires=");
     cookieString.Append(timeStringPreset);
 }
 
-nsresult
+void
 SetACookie(nsICookieService *aCookieService, const char *aSpec1, const char *aSpec2, const char* aCookieString, const char *aServerTime)
 {
     nsCOMPtr<nsIURI> uri1, uri2;
     NS_NewURI(getter_AddRefs(uri1), aSpec1);
     if (aSpec2)
         NS_NewURI(getter_AddRefs(uri2), aSpec2);
 
-    sBuffer = PR_sprintf_append(sBuffer, R"(    for host "%s": SET )", aSpec1);
     nsresult rv = aCookieService->SetCookieStringFromHttp(uri1, uri2, nullptr, (char *)aCookieString, aServerTime, nullptr);
-    // the following code is useless. the cookieservice blindly returns NS_OK
-    // from SetCookieString. we have to call GetCookie to see if the cookie was
-    // set correctly...
-    if (NS_FAILED(rv)) {
-        sBuffer = PR_sprintf_append(sBuffer, "nothing\n");
-    } else {
-        sBuffer = PR_sprintf_append(sBuffer, "\"%s\"\n", aCookieString);
-    }
-    return rv;
+    EXPECT_TRUE(NS_SUCCEEDED(rv));
 }
 
-nsresult
+void
 SetACookieNoHttp(nsICookieService *aCookieService, const char *aSpec, const char* aCookieString)
 {
     nsCOMPtr<nsIURI> uri;
     NS_NewURI(getter_AddRefs(uri), aSpec);
 
-    sBuffer = PR_sprintf_append(sBuffer, R"(    for host "%s": SET )", aSpec);
     nsresult rv = aCookieService->SetCookieString(uri, nullptr, (char *)aCookieString, nullptr);
-    // the following code is useless. the cookieservice blindly returns NS_OK
-    // from SetCookieString. we have to call GetCookie to see if the cookie was
-    // set correctly...
-    if (NS_FAILED(rv)) {
-        sBuffer = PR_sprintf_append(sBuffer, "nothing\n");
-    } else {
-        sBuffer = PR_sprintf_append(sBuffer, "\"%s\"\n", aCookieString);
-    }
-    return rv;
+    EXPECT_TRUE(NS_SUCCEEDED(rv));
 }
 
 // returns true if cookie(s) for the given host were found; else false.
 // the cookie string is returned via aCookie.
 bool
 GetACookie(nsICookieService *aCookieService, const char *aSpec1, const char *aSpec2, char **aCookie)
 {
     nsCOMPtr<nsIURI> uri1, uri2;
     NS_NewURI(getter_AddRefs(uri1), aSpec1);
     if (aSpec2)
         NS_NewURI(getter_AddRefs(uri2), aSpec2);
 
-    sBuffer = PR_sprintf_append(sBuffer, R"(             "%s": GOT )", aSpec1);
-    nsresult rv = aCookieService->GetCookieStringFromHttp(uri1, uri2, nullptr, aCookie);
-    if (NS_FAILED(rv)) {
-      sBuffer = PR_sprintf_append(sBuffer, "XXX GetCookieString() failed!\n");
-    }
-    if (!*aCookie) {
-        sBuffer = PR_sprintf_append(sBuffer, "nothing\n");
-    } else {
-        sBuffer = PR_sprintf_append(sBuffer, "\"%s\"\n", *aCookie);
-    }
+    Unused << aCookieService->GetCookieStringFromHttp(uri1, uri2, nullptr, aCookie);
     return *aCookie != nullptr;
 }
 
 // returns true if cookie(s) for the given host were found; else false.
 // the cookie string is returned via aCookie.
 bool
 GetACookieNoHttp(nsICookieService *aCookieService, const char *aSpec, char **aCookie)
 {
     nsCOMPtr<nsIURI> uri;
     NS_NewURI(getter_AddRefs(uri), aSpec);
 
-    sBuffer = PR_sprintf_append(sBuffer, R"(             "%s": GOT )", aSpec);
-    nsresult rv = aCookieService->GetCookieString(uri, nullptr, aCookie);
-    if (NS_FAILED(rv)) {
-      sBuffer = PR_sprintf_append(sBuffer, "XXX GetCookieString() failed!\n");
-    }
-    if (!*aCookie) {
-        sBuffer = PR_sprintf_append(sBuffer, "nothing\n");
-    } else {
-        sBuffer = PR_sprintf_append(sBuffer, "\"%s\"\n", *aCookie);
-    }
+    Unused << aCookieService->GetCookieString(uri, nullptr, aCookie);
     return *aCookie != nullptr;
 }
 
 // some #defines for comparison rules
 #define MUST_BE_NULL     0
 #define MUST_EQUAL       1
 #define MUST_CONTAIN     2
 #define MUST_NOT_CONTAIN 3
@@ -177,745 +142,633 @@ CheckResult(const char *aLhs, uint32_t a
         case MUST_NOT_CONTAIN:
             return PL_strstr(aLhs, aRhs) == nullptr;
 
         default:
             return false; // failure
     }
 }
 
-// helper function that ensures the first aSize elements of aResult are
-// true (i.e. all tests succeeded). prints the result of the tests (if any
-// tests failed, it prints the zero-based index of each failed test).
-bool
-PrintResult(const bool aResult[], uint32_t aSize)
-{
-    bool failed = false;
-    sBuffer = PR_sprintf_append(sBuffer, "*** tests ");
-    for (uint32_t i = 0; i < aSize; ++i) {
-        if (!aResult[i]) {
-            failed = true;
-            sBuffer = PR_sprintf_append(sBuffer, "%d ", i);
-        }
-    }
-    if (failed) {
-        sBuffer = PR_sprintf_append(sBuffer, "FAILED!\a\n");
-    } else {
-        sBuffer = PR_sprintf_append(sBuffer, "passed.\n");
-    }
-    return !failed;
-}
-
 void
 InitPrefs(nsIPrefBranch *aPrefBranch)
 {
     // init some relevant prefs, so the tests don't go awry.
     // we use the most restrictive set of prefs we can;
     // however, we don't test third party blocking here.
     aPrefBranch->SetIntPref(kCookiesPermissions, 0); // accept all
     aPrefBranch->SetBoolPref(kCookiesLifetimeEnabled, true);
     aPrefBranch->SetIntPref(kCookiesLifetimeCurrentSession, 0);
     aPrefBranch->SetIntPref(kCookiesLifetimeDays, 1);
     aPrefBranch->SetBoolPref(kCookieLeaveSecurityAlone, true);
     // Set the base domain limit to 50 so we have a known value.
     aPrefBranch->SetIntPref(kCookiesMaxPerHost, 50);
 }
 
 
-int
-main(int32_t argc, char *argv[])
+TEST(TestCookie,TestCookieMain)
 {
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
+    nsresult rv0;
+
+    nsCOMPtr<nsICookieService> cookieService =
+        do_GetService(kCookieServiceCID, &rv0);
+    ASSERT_TRUE(NS_SUCCEEDED(rv0));
 
-    bool allTestsPassed = true;
+    nsCOMPtr<nsIPrefBranch> prefBranch =
+        do_GetService(kPrefServiceCID, &rv0);
+    ASSERT_TRUE(NS_SUCCEEDED(rv0));
 
-    ScopedXPCOM xpcom("TestCookie");
+    InitPrefs(prefBranch);
 
-    {
-      nsresult rv0;
+    nsCString cookie;
 
-      nsCOMPtr<nsICookieService> cookieService =
-        do_GetService(kCookieServiceCID, &rv0);
-      if (NS_FAILED(rv0)) return -1;
-
-      nsCOMPtr<nsIPrefBranch> prefBranch =
-        do_GetService(kPrefServiceCID, &rv0);
-      if (NS_FAILED(rv0)) return -1;
-
-      InitPrefs(prefBranch);
-
-      bool rv[20];
-      nsCString cookie;
+    /* The basic idea behind these tests is the following:
+     *
+     * we set() some cookie, then try to get() it in various ways. we have
+     * several possible tests we perform on the cookie string returned from
+     * get():
+     *
+     * a) check whether the returned string is null (i.e. we got no cookies
+     *    back). this is used e.g. to ensure a given cookie was deleted
+     *    correctly, or to ensure a certain cookie wasn't returned to a given
+     *    host.
+     * b) check whether the returned string exactly matches a given string.
+     *    this is used where we want to make sure our cookie service adheres to
+     *    some strict spec (e.g. ordering of multiple cookies), or where we
+     *    just know exactly what the returned string should be.
+     * c) check whether the returned string contains/does not contain a given
+     *    string. this is used where we don't know/don't care about the
+     *    ordering of multiple cookies - we just want to make sure the cookie
+     *    string contains them all, in some order.
+     *
+     * NOTE: this testsuite is not yet comprehensive or complete, and is
+     * somewhat contrived - still under development, and needs improving!
+     */
 
-      /* The basic idea behind these tests is the following:
-       *
-       * we set() some cookie, then try to get() it in various ways. we have
-       * several possible tests we perform on the cookie string returned from
-       * get():
-       *
-       * a) check whether the returned string is null (i.e. we got no cookies
-       *    back). this is used e.g. to ensure a given cookie was deleted
-       *    correctly, or to ensure a certain cookie wasn't returned to a given
-       *    host.
-       * b) check whether the returned string exactly matches a given string.
-       *    this is used where we want to make sure our cookie service adheres to
-       *    some strict spec (e.g. ordering of multiple cookies), or where we
-       *    just know exactly what the returned string should be.
-       * c) check whether the returned string contains/does not contain a given
-       *    string. this is used where we don't know/don't care about the
-       *    ordering of multiple cookies - we just want to make sure the cookie
-       *    string contains them all, in some order.
-       *
-       * the results of each individual testing operation from CheckResult() is
-       * stored in an array of bools, which is then checked against the expected
-       * outcomes (all successes), by PrintResult(). the overall result of all
-       * tests to date is kept in |allTestsPassed|, for convenient display at the
-       * end.
-       *
-       * Interpreting the output:
-       * each setting/getting operation will print output saying exactly what
-       * it's doing and the outcome, respectively. this information is only
-       * useful for debugging purposes; the actual result of the tests is
-       * printed at the end of each block of tests. this will either be "all
-       * tests passed" or "tests X Y Z failed", where X, Y, Z are the indexes
-       * of rv (i.e. zero-based). at the conclusion of all tests, the overall
-       * passed/failed result is printed.
-       *
-       * NOTE: this testsuite is not yet comprehensive or complete, and is
-       * somewhat contrived - still under development, and needs improving!
-       */
+    // test some basic variations of the domain & path
+    SetACookie(cookieService, "http://www.basic.com", nullptr, "test=basic", nullptr);
+    GetACookie(cookieService, "http://www.basic.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=basic"));
+    GetACookie(cookieService, "http://www.basic.com/testPath/testfile.txt", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=basic"));
+    GetACookie(cookieService, "http://www.basic.com./", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    GetACookie(cookieService, "http://www.basic.com.", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    GetACookie(cookieService, "http://www.basic.com./testPath/testfile.txt", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    GetACookie(cookieService, "http://www.basic2.com/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    SetACookie(cookieService, "http://www.basic.com", nullptr, "test=basic; max-age=-1", nullptr);
+    GetACookie(cookieService, "http://www.basic.com/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+
+    // *** domain tests
 
-      // *** basic tests
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning basic tests...\n");
-
-      // test some basic variations of the domain & path
-      SetACookie(cookieService, "http://www.basic.com", nullptr, "test=basic", nullptr);
-      GetACookie(cookieService, "http://www.basic.com", nullptr, getter_Copies(cookie));
-      rv[0] = CheckResult(cookie.get(), MUST_EQUAL, "test=basic");
-      GetACookie(cookieService, "http://www.basic.com/testPath/testfile.txt", nullptr, getter_Copies(cookie));
-      rv[1] = CheckResult(cookie.get(), MUST_EQUAL, "test=basic");
-      GetACookie(cookieService, "http://www.basic.com./", nullptr, getter_Copies(cookie));
-      rv[2] = CheckResult(cookie.get(), MUST_BE_NULL);
-      GetACookie(cookieService, "http://www.basic.com.", nullptr, getter_Copies(cookie));
-      rv[3] = CheckResult(cookie.get(), MUST_BE_NULL);
-      GetACookie(cookieService, "http://www.basic.com./testPath/testfile.txt", nullptr, getter_Copies(cookie));
-      rv[4] = CheckResult(cookie.get(), MUST_BE_NULL);
-      GetACookie(cookieService, "http://www.basic2.com/", nullptr, getter_Copies(cookie));
-      rv[5] = CheckResult(cookie.get(), MUST_BE_NULL);
-      SetACookie(cookieService, "http://www.basic.com", nullptr, "test=basic; max-age=-1", nullptr);
-      GetACookie(cookieService, "http://www.basic.com/", nullptr, getter_Copies(cookie));
-      rv[6] = CheckResult(cookie.get(), MUST_BE_NULL);
+    // test some variations of the domain & path, for different domains of
+    // a domain cookie
+    SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=domain.com", nullptr);
+    GetACookie(cookieService, "http://domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=domain"));
+    GetACookie(cookieService, "http://domain.com.", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    GetACookie(cookieService, "http://www.domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=domain"));
+    GetACookie(cookieService, "http://foo.domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=domain"));
+    SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=domain.com; max-age=-1", nullptr);
+    GetACookie(cookieService, "http://domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      allTestsPassed = PrintResult(rv, 7) && allTestsPassed;
-
-
-      // *** domain tests
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning domain tests...\n");
+    SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=.domain.com", nullptr);
+    GetACookie(cookieService, "http://domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=domain"));
+    GetACookie(cookieService, "http://www.domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=domain"));
+    GetACookie(cookieService, "http://bah.domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=domain"));
+    SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=.domain.com; max-age=-1", nullptr);
+    GetACookie(cookieService, "http://domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      // test some variations of the domain & path, for different domains of
-      // a domain cookie
-      SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=domain.com", nullptr);
-      GetACookie(cookieService, "http://domain.com", nullptr, getter_Copies(cookie));
-      rv[0] = CheckResult(cookie.get(), MUST_EQUAL, "test=domain");
-      GetACookie(cookieService, "http://domain.com.", nullptr, getter_Copies(cookie));
-      rv[1] = CheckResult(cookie.get(), MUST_BE_NULL);
-      GetACookie(cookieService, "http://www.domain.com", nullptr, getter_Copies(cookie));
-      rv[2] = CheckResult(cookie.get(), MUST_EQUAL, "test=domain");
-      GetACookie(cookieService, "http://foo.domain.com", nullptr, getter_Copies(cookie));
-      rv[3] = CheckResult(cookie.get(), MUST_EQUAL, "test=domain");
-      SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=domain.com; max-age=-1", nullptr);
-      GetACookie(cookieService, "http://domain.com", nullptr, getter_Copies(cookie));
-      rv[4] = CheckResult(cookie.get(), MUST_BE_NULL);
+    SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=.foo.domain.com", nullptr);
+    GetACookie(cookieService, "http://foo.domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=.domain.com", nullptr);
-      GetACookie(cookieService, "http://domain.com", nullptr, getter_Copies(cookie));
-      rv[5] = CheckResult(cookie.get(), MUST_EQUAL, "test=domain");
-      GetACookie(cookieService, "http://www.domain.com", nullptr, getter_Copies(cookie));
-      rv[6] = CheckResult(cookie.get(), MUST_EQUAL, "test=domain");
-      GetACookie(cookieService, "http://bah.domain.com", nullptr, getter_Copies(cookie));
-      rv[7] = CheckResult(cookie.get(), MUST_EQUAL, "test=domain");
-      SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=.domain.com; max-age=-1", nullptr);
-      GetACookie(cookieService, "http://domain.com", nullptr, getter_Copies(cookie));
-      rv[8] = CheckResult(cookie.get(), MUST_BE_NULL);
+    SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=moose.com", nullptr);
+    GetACookie(cookieService, "http://foo.domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+
+    SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=domain.com.", nullptr);
+    GetACookie(cookieService, "http://foo.domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=.foo.domain.com", nullptr);
-      GetACookie(cookieService, "http://foo.domain.com", nullptr, getter_Copies(cookie));
-      rv[9] = CheckResult(cookie.get(), MUST_BE_NULL);
+    SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=..domain.com", nullptr);
+    GetACookie(cookieService, "http://foo.domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=moose.com", nullptr);
-      GetACookie(cookieService, "http://foo.domain.com", nullptr, getter_Copies(cookie));
-      rv[10] = CheckResult(cookie.get(), MUST_BE_NULL);
+    SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=..domain.com.", nullptr);
+    GetACookie(cookieService, "http://foo.domain.com", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=domain.com.", nullptr);
-      GetACookie(cookieService, "http://foo.domain.com", nullptr, getter_Copies(cookie));
-      rv[11] = CheckResult(cookie.get(), MUST_BE_NULL);
+    SetACookie(cookieService, "http://path.net/path/file", nullptr, R"(test=taco; path="/bogus")", nullptr);
+    GetACookie(cookieService, "http://path.net/path/file", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=taco"));
+    SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=taco; max-age=-1", nullptr);
+    GetACookie(cookieService, "http://path.net/path/file", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=..domain.com", nullptr);
-      GetACookie(cookieService, "http://foo.domain.com", nullptr, getter_Copies(cookie));
-      rv[12] = CheckResult(cookie.get(), MUST_BE_NULL);
-
-      SetACookie(cookieService, "http://www.domain.com", nullptr, "test=domain; domain=..domain.com.", nullptr);
-      GetACookie(cookieService, "http://foo.domain.com", nullptr, getter_Copies(cookie));
-      rv[13] = CheckResult(cookie.get(), MUST_BE_NULL);
+    // *** path tests
 
-      SetACookie(cookieService, "http://path.net/path/file", nullptr, R"(test=taco; path="/bogus")", nullptr);
-      GetACookie(cookieService, "http://path.net/path/file", nullptr, getter_Copies(cookie));
-      rv[14] = CheckResult(cookie.get(), MUST_EQUAL, "test=taco");
-      SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=taco; max-age=-1", nullptr);
-      GetACookie(cookieService, "http://path.net/path/file", nullptr, getter_Copies(cookie));
-      rv[15] = CheckResult(cookie.get(), MUST_BE_NULL);
-
-      allTestsPassed = PrintResult(rv, 16) && allTestsPassed;
-
-
-      // *** path tests
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning path tests...\n");
+    // test some variations of the domain & path, for different paths of
+    // a path cookie
+    SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=path; path=/path", nullptr);
+    GetACookie(cookieService, "http://path.net/path", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=path"));
+    GetACookie(cookieService, "http://path.net/path/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=path"));
+    GetACookie(cookieService, "http://path.net/path/hithere.foo", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=path"));
+    GetACookie(cookieService, "http://path.net/path?hithere/foo", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=path"));
+    GetACookie(cookieService, "http://path.net/path2", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    GetACookie(cookieService, "http://path.net/path2/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=path; path=/path; max-age=-1", nullptr);
+    GetACookie(cookieService, "http://path.net/path/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      // test some variations of the domain & path, for different paths of
-      // a path cookie
-      SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=path; path=/path", nullptr);
-      GetACookie(cookieService, "http://path.net/path", nullptr, getter_Copies(cookie));
-      rv[0] = CheckResult(cookie.get(), MUST_EQUAL, "test=path");
-      GetACookie(cookieService, "http://path.net/path/", nullptr, getter_Copies(cookie));
-      rv[1] = CheckResult(cookie.get(), MUST_EQUAL, "test=path");
-      GetACookie(cookieService, "http://path.net/path/hithere.foo", nullptr, getter_Copies(cookie));
-      rv[2] = CheckResult(cookie.get(), MUST_EQUAL, "test=path");
-      GetACookie(cookieService, "http://path.net/path?hithere/foo", nullptr, getter_Copies(cookie));
-      rv[3] = CheckResult(cookie.get(), MUST_EQUAL, "test=path");
-      GetACookie(cookieService, "http://path.net/path2", nullptr, getter_Copies(cookie));
-      rv[4] = CheckResult(cookie.get(), MUST_BE_NULL);
-      GetACookie(cookieService, "http://path.net/path2/", nullptr, getter_Copies(cookie));
-      rv[5] = CheckResult(cookie.get(), MUST_BE_NULL);
-      SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=path; path=/path; max-age=-1", nullptr);
-      GetACookie(cookieService, "http://path.net/path/", nullptr, getter_Copies(cookie));
-      rv[6] = CheckResult(cookie.get(), MUST_BE_NULL);
+    SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=path; path=/path/", nullptr);
+    GetACookie(cookieService, "http://path.net/path", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=path"));
+    GetACookie(cookieService, "http://path.net/path/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=path"));
+    SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=path; path=/path/; max-age=-1", nullptr);
+    GetACookie(cookieService, "http://path.net/path/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=path; path=/path/", nullptr);
-      GetACookie(cookieService, "http://path.net/path", nullptr, getter_Copies(cookie));
-      rv[7] = CheckResult(cookie.get(), MUST_EQUAL, "test=path");
-      GetACookie(cookieService, "http://path.net/path/", nullptr, getter_Copies(cookie));
-      rv[8] = CheckResult(cookie.get(), MUST_EQUAL, "test=path");
-      SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=path; path=/path/; max-age=-1", nullptr);
-      GetACookie(cookieService, "http://path.net/path/", nullptr, getter_Copies(cookie));
-      rv[9] = CheckResult(cookie.get(), MUST_BE_NULL);
+    // note that a site can set a cookie for a path it's not on.
+    // this is an intentional deviation from spec (see comments in
+    // nsCookieService::CheckPath()), so we test this functionality too
+    SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=path; path=/foo/", nullptr);
+    GetACookie(cookieService, "http://path.net/path", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    GetACookie(cookieService, "http://path.net/foo", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=path"));
+    SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=path; path=/foo/; max-age=-1", nullptr);
+    GetACookie(cookieService, "http://path.net/foo/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      // note that a site can set a cookie for a path it's not on.
-      // this is an intentional deviation from spec (see comments in
-      // nsCookieService::CheckPath()), so we test this functionality too
-      SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=path; path=/foo/", nullptr);
-      GetACookie(cookieService, "http://path.net/path", nullptr, getter_Copies(cookie));
-      rv[10] = CheckResult(cookie.get(), MUST_BE_NULL);
-      GetACookie(cookieService, "http://path.net/foo", nullptr, getter_Copies(cookie));
-      rv[11] = CheckResult(cookie.get(), MUST_EQUAL, "test=path");
-      SetACookie(cookieService, "http://path.net/path/file", nullptr, "test=path; path=/foo/; max-age=-1", nullptr);
-      GetACookie(cookieService, "http://path.net/foo/", nullptr, getter_Copies(cookie));
-      rv[12] = CheckResult(cookie.get(), MUST_BE_NULL);
-
-      // bug 373228: make sure cookies with paths longer than 1024 bytes,
-      // and cookies with paths or names containing tabs, are rejected.
-      // the following cookie has a path > 1024 bytes explicitly specified in the cookie
-      SetACookie(cookieService, "http://path.net/", nullptr, "test=path; path=/1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/", nullptr);
-      GetACookie(cookieService, "http://path.net/1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", nullptr, getter_Copies(cookie));
-      rv[13] = CheckResult(cookie.get(), MUST_BE_NULL);
-      // the following cookie has a path > 1024 bytes implicitly specified by the uri path
-      SetACookie(cookieService, "http://path.net/1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/", nullptr, "test=path", nullptr);
-      GetACookie(cookieService, "http://path.net/1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/", nullptr, getter_Copies(cookie));
-      rv[14] = CheckResult(cookie.get(), MUST_BE_NULL);
-      // the following cookie includes a tab in the path
-      SetACookie(cookieService, "http://path.net/", nullptr, "test=path; path=/foo\tbar/", nullptr);
-      GetACookie(cookieService, "http://path.net/foo\tbar/", nullptr, getter_Copies(cookie));
-      rv[15] = CheckResult(cookie.get(), MUST_BE_NULL);
-      // the following cookie includes a tab in the name
-      SetACookie(cookieService, "http://path.net/", nullptr, "test\ttabs=tab", nullptr);
-      GetACookie(cookieService, "http://path.net/", nullptr, getter_Copies(cookie));
-      rv[16] = CheckResult(cookie.get(), MUST_BE_NULL);
-      // the following cookie includes a tab in the value - allowed
-      SetACookie(cookieService, "http://path.net/", nullptr, "test=tab\ttest", nullptr);
-      GetACookie(cookieService, "http://path.net/", nullptr, getter_Copies(cookie));
-      rv[17] = CheckResult(cookie.get(), MUST_EQUAL, "test=tab\ttest");
-      SetACookie(cookieService, "http://path.net/", nullptr, "test=tab\ttest; max-age=-1", nullptr);
-      GetACookie(cookieService, "http://path.net/", nullptr, getter_Copies(cookie));
-      rv[18] = CheckResult(cookie.get(), MUST_BE_NULL);
-
-      allTestsPassed = PrintResult(rv, 19) && allTestsPassed;
+    // bug 373228: make sure cookies with paths longer than 1024 bytes,
+    // and cookies with paths or names containing tabs, are rejected.
+    // the following cookie has a path > 1024 bytes explicitly specified in the cookie
+    SetACookie(cookieService, "http://path.net/", nullptr, "test=path; path=/1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/", nullptr);
+    GetACookie(cookieService, "http://path.net/1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    // the following cookie has a path > 1024 bytes implicitly specified by the uri path
+    SetACookie(cookieService, "http://path.net/1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/", nullptr, "test=path", nullptr);
+    GetACookie(cookieService, "http://path.net/1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    // the following cookie includes a tab in the path
+    SetACookie(cookieService, "http://path.net/", nullptr, "test=path; path=/foo\tbar/", nullptr);
+    GetACookie(cookieService, "http://path.net/foo\tbar/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    // the following cookie includes a tab in the name
+    SetACookie(cookieService, "http://path.net/", nullptr, "test\ttabs=tab", nullptr);
+    GetACookie(cookieService, "http://path.net/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    // the following cookie includes a tab in the value - allowed
+    SetACookie(cookieService, "http://path.net/", nullptr, "test=tab\ttest", nullptr);
+    GetACookie(cookieService, "http://path.net/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=tab\ttest"));
+    SetACookie(cookieService, "http://path.net/", nullptr, "test=tab\ttest; max-age=-1", nullptr);
+    GetACookie(cookieService, "http://path.net/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
 
-      // *** expiry & deletion tests
-      // XXX add server time str parsing tests here
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning expiry & deletion tests...\n");
+    // *** expiry & deletion tests
+    // XXX add server time str parsing tests here
+
+    // test some variations of the expiry time,
+    // and test deletion of previously set cookies
+    SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; max-age=-1", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; max-age=0", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; expires=bad", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=expiry"));
+    SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; expires=Thu, 10 Apr 1980 16:33:12 GMT", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    SetACookie(cookieService, "http://expireme.org/", nullptr, R"(test=expiry; expires="Thu, 10 Apr 1980 16:33:12 GMT)", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    SetACookie(cookieService, "http://expireme.org/", nullptr, R"(test=expiry; expires="Thu, 10 Apr 1980 16:33:12 GMT")", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      // test some variations of the expiry time,
-      // and test deletion of previously set cookies
-      SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; max-age=-1", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[0] = CheckResult(cookie.get(), MUST_BE_NULL);
-      SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; max-age=0", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[1] = CheckResult(cookie.get(), MUST_BE_NULL);
-      SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; expires=bad", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[2] = CheckResult(cookie.get(), MUST_EQUAL, "test=expiry");
-      SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; expires=Thu, 10 Apr 1980 16:33:12 GMT", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[3] = CheckResult(cookie.get(), MUST_BE_NULL);
-      SetACookie(cookieService, "http://expireme.org/", nullptr, R"(test=expiry; expires="Thu, 10 Apr 1980 16:33:12 GMT)", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[4] = CheckResult(cookie.get(), MUST_BE_NULL);
-      SetACookie(cookieService, "http://expireme.org/", nullptr, R"(test=expiry; expires="Thu, 10 Apr 1980 16:33:12 GMT")", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[5] = CheckResult(cookie.get(), MUST_BE_NULL);
-
-      SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; max-age=60", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[6] = CheckResult(cookie.get(), MUST_EQUAL, "test=expiry");
-      SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; max-age=-20", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[7] = CheckResult(cookie.get(), MUST_BE_NULL);
-      SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; max-age=60", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[8] = CheckResult(cookie.get(), MUST_EQUAL, "test=expiry");
-      SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; expires=Thu, 10 Apr 1980 16:33:12 GMT", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[9] = CheckResult(cookie.get(), MUST_BE_NULL);
-      SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; max-age=60", nullptr);
-      SetACookie(cookieService, "http://expireme.org/", nullptr, "newtest=expiry; max-age=60", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[10] = CheckResult(cookie.get(), MUST_CONTAIN, "test=expiry");
-      rv[11] = CheckResult(cookie.get(), MUST_CONTAIN, "newtest=expiry");
-      SetACookie(cookieService, "http://expireme.org/", nullptr, "test=differentvalue; max-age=0", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[12] = CheckResult(cookie.get(), MUST_EQUAL, "newtest=expiry");
-      SetACookie(cookieService, "http://expireme.org/", nullptr, "newtest=evendifferentvalue; max-age=0", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[13] = CheckResult(cookie.get(), MUST_BE_NULL);
+    SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; max-age=60", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=expiry"));
+    SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; max-age=-20", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; max-age=60", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=expiry"));
+    SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; expires=Thu, 10 Apr 1980 16:33:12 GMT", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    SetACookie(cookieService, "http://expireme.org/", nullptr, "test=expiry; max-age=60", nullptr);
+    SetACookie(cookieService, "http://expireme.org/", nullptr, "newtest=expiry; max-age=60", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, "test=expiry"));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, "newtest=expiry"));
+    SetACookie(cookieService, "http://expireme.org/", nullptr, "test=differentvalue; max-age=0", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "newtest=expiry"));
+    SetACookie(cookieService, "http://expireme.org/", nullptr, "newtest=evendifferentvalue; max-age=0", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      SetACookie(cookieService, "http://foo.expireme.org/", nullptr, "test=expiry; domain=.expireme.org; max-age=60", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[14] = CheckResult(cookie.get(), MUST_EQUAL, "test=expiry");
-      SetACookie(cookieService, "http://bar.expireme.org/", nullptr, "test=differentvalue; domain=.expireme.org; max-age=0", nullptr);
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[15] = CheckResult(cookie.get(), MUST_BE_NULL);
+    SetACookie(cookieService, "http://foo.expireme.org/", nullptr, "test=expiry; domain=.expireme.org; max-age=60", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=expiry"));
+    SetACookie(cookieService, "http://bar.expireme.org/", nullptr, "test=differentvalue; domain=.expireme.org; max-age=0", nullptr);
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      nsAutoCString ServerTime;
-      nsAutoCString CookieString;
+    nsAutoCString ServerTime;
+    nsAutoCString CookieString;
 
-      SetTime(-OFFSET_ONE_WEEK, ServerTime, CookieString, true);
-      SetACookie(cookieService, "http://expireme.org/", nullptr, CookieString.get(), ServerTime.get());
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[16] = CheckResult(cookie.get(), MUST_BE_NULL);
-      // Set server time earlier than client time for one year + one day, and expirty time earlier than server time for one day.
-      SetTime(-(OFFSET_ONE_DAY + OFFSET_ONE_WEEK), ServerTime, CookieString, false);
-      SetACookie(cookieService, "http://expireme.org/", nullptr, CookieString.get(), ServerTime.get());
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[17] = CheckResult(cookie.get(), MUST_BE_NULL);
-      // Set server time later than client time for one year, and expiry time later than server time for one day.
-      SetTime(OFFSET_ONE_WEEK, ServerTime, CookieString, false);
-      SetACookie(cookieService, "http://expireme.org/", nullptr, CookieString.get(), ServerTime.get());
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[18] = CheckResult(cookie.get(), MUST_EQUAL, "test=expiry");
-      // Set server time later than client time for one year + one day, and expiry time earlier than server time for one day.
-      SetTime((OFFSET_ONE_DAY + OFFSET_ONE_WEEK), ServerTime, CookieString, true);
-      SetACookie(cookieService, "http://expireme.org/", nullptr, CookieString.get(), ServerTime.get());
-      GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
-      rv[19] = CheckResult(cookie.get(), MUST_EQUAL, "test=expiry");
-      allTestsPassed = PrintResult(rv, 20) && allTestsPassed;
+    SetTime(-OFFSET_ONE_WEEK, ServerTime, CookieString, true);
+    SetACookie(cookieService, "http://expireme.org/", nullptr, CookieString.get(), ServerTime.get());
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    // Set server time earlier than client time for one year + one day, and expirty time earlier than server time for one day.
+    SetTime(-(OFFSET_ONE_DAY + OFFSET_ONE_WEEK), ServerTime, CookieString, false);
+    SetACookie(cookieService, "http://expireme.org/", nullptr, CookieString.get(), ServerTime.get());
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    // Set server time later than client time for one year, and expiry time later than server time for one day.
+    SetTime(OFFSET_ONE_WEEK, ServerTime, CookieString, false);
+    SetACookie(cookieService, "http://expireme.org/", nullptr, CookieString.get(), ServerTime.get());
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=expiry"));
+    // Set server time later than client time for one year + one day, and expiry time earlier than server time for one day.
+    SetTime((OFFSET_ONE_DAY + OFFSET_ONE_WEEK), ServerTime, CookieString, true);
+    SetACookie(cookieService, "http://expireme.org/", nullptr, CookieString.get(), ServerTime.get());
+    GetACookie(cookieService, "http://expireme.org/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=expiry"));
 
-      // *** multiple cookie tests
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning multiple cookie tests...\n");
+    // *** multiple cookie tests
 
-      // test the setting of multiple cookies, and test the order of precedence
-      // (a later cookie overwriting an earlier one, in the same header string)
-      SetACookie(cookieService, "http://multiple.cookies/", nullptr, "test=multiple; domain=.multiple.cookies \n test=different \n test=same; domain=.multiple.cookies \n newtest=ciao \n newtest=foo; max-age=-6 \n newtest=reincarnated", nullptr);
-      GetACookie(cookieService, "http://multiple.cookies/", nullptr, getter_Copies(cookie));
-      rv[0] = CheckResult(cookie.get(), MUST_NOT_CONTAIN, "test=multiple");
-      rv[1] = CheckResult(cookie.get(), MUST_CONTAIN, "test=different");
-      rv[2] = CheckResult(cookie.get(), MUST_CONTAIN, "test=same");
-      rv[3] = CheckResult(cookie.get(), MUST_NOT_CONTAIN, "newtest=ciao");
-      rv[4] = CheckResult(cookie.get(), MUST_NOT_CONTAIN, "newtest=foo");
-      rv[5] = CheckResult(cookie.get(), MUST_CONTAIN, "newtest=reincarnated");
-      SetACookie(cookieService, "http://multiple.cookies/", nullptr, "test=expiry; domain=.multiple.cookies; max-age=0", nullptr);
-      GetACookie(cookieService, "http://multiple.cookies/", nullptr, getter_Copies(cookie));
-      rv[6] = CheckResult(cookie.get(), MUST_NOT_CONTAIN, "test=same");
-      SetACookie(cookieService, "http://multiple.cookies/", nullptr,  "\n test=different; max-age=0 \n", nullptr);
-      GetACookie(cookieService, "http://multiple.cookies/", nullptr, getter_Copies(cookie));
-      rv[7] = CheckResult(cookie.get(), MUST_NOT_CONTAIN, "test=different");
-      SetACookie(cookieService, "http://multiple.cookies/", nullptr,  "newtest=dead; max-age=0", nullptr);
-      GetACookie(cookieService, "http://multiple.cookies/", nullptr, getter_Copies(cookie));
-      rv[8] = CheckResult(cookie.get(), MUST_BE_NULL);
-
-      allTestsPassed = PrintResult(rv, 9) && allTestsPassed;
+    // test the setting of multiple cookies, and test the order of precedence
+    // (a later cookie overwriting an earlier one, in the same header string)
+    SetACookie(cookieService, "http://multiple.cookies/", nullptr, "test=multiple; domain=.multiple.cookies \n test=different \n test=same; domain=.multiple.cookies \n newtest=ciao \n newtest=foo; max-age=-6 \n newtest=reincarnated", nullptr);
+    GetACookie(cookieService, "http://multiple.cookies/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_NOT_CONTAIN, "test=multiple"));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, "test=different"));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, "test=same"));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_NOT_CONTAIN, "newtest=ciao"));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_NOT_CONTAIN, "newtest=foo"));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, "newtest=reincarnated"));
+    SetACookie(cookieService, "http://multiple.cookies/", nullptr, "test=expiry; domain=.multiple.cookies; max-age=0", nullptr);
+    GetACookie(cookieService, "http://multiple.cookies/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_NOT_CONTAIN, "test=same"));
+    SetACookie(cookieService, "http://multiple.cookies/", nullptr,  "\n test=different; max-age=0 \n", nullptr);
+    GetACookie(cookieService, "http://multiple.cookies/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_NOT_CONTAIN, "test=different"));
+    SetACookie(cookieService, "http://multiple.cookies/", nullptr,  "newtest=dead; max-age=0", nullptr);
+    GetACookie(cookieService, "http://multiple.cookies/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
 
-      // *** parser tests
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning parser tests...\n");
+    // *** parser tests
 
-      // test the cookie header parser, under various circumstances.
-      SetACookie(cookieService, "http://parser.test/", nullptr, "test=parser; domain=.parser.test; ;; ;=; ,,, ===,abc,=; abracadabra! max-age=20;=;;", nullptr);
-      GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
-      rv[0] = CheckResult(cookie.get(), MUST_EQUAL, "test=parser");
-      SetACookie(cookieService, "http://parser.test/", nullptr, "test=parser; domain=.parser.test; max-age=0", nullptr);
-      GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
-      rv[1] = CheckResult(cookie.get(), MUST_BE_NULL);
-      SetACookie(cookieService, "http://parser.test/", nullptr, "test=\"fubar! = foo;bar\\\";\" parser; domain=.parser.test; max-age=6\nfive; max-age=2.63,", nullptr);
-      GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
-      rv[2] = CheckResult(cookie.get(), MUST_CONTAIN, R"(test="fubar! = foo)");
-      rv[3] = CheckResult(cookie.get(), MUST_CONTAIN, "five");
-      SetACookie(cookieService, "http://parser.test/", nullptr, "test=kill; domain=.parser.test; max-age=0 \n five; max-age=0", nullptr);
-      GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
-      rv[4] = CheckResult(cookie.get(), MUST_BE_NULL);
+    // test the cookie header parser, under various circumstances.
+    SetACookie(cookieService, "http://parser.test/", nullptr, "test=parser; domain=.parser.test; ;; ;=; ,,, ===,abc,=; abracadabra! max-age=20;=;;", nullptr);
+    GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=parser"));
+    SetACookie(cookieService, "http://parser.test/", nullptr, "test=parser; domain=.parser.test; max-age=0", nullptr);
+    GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    SetACookie(cookieService, "http://parser.test/", nullptr, "test=\"fubar! = foo;bar\\\";\" parser; domain=.parser.test; max-age=6\nfive; max-age=2.63,", nullptr);
+    GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, R"(test="fubar! = foo)"));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, "five"));
+    SetACookie(cookieService, "http://parser.test/", nullptr, "test=kill; domain=.parser.test; max-age=0 \n five; max-age=0", nullptr);
+    GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      // test the handling of VALUE-only cookies (see bug 169091),
-      // i.e. "six" should assume an empty NAME, which allows other VALUE-only
-      // cookies to overwrite it
-      SetACookie(cookieService, "http://parser.test/", nullptr, "six", nullptr);
-      GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
-      rv[5] = CheckResult(cookie.get(), MUST_EQUAL, "six");
-      SetACookie(cookieService, "http://parser.test/", nullptr, "seven", nullptr);
-      GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
-      rv[6] = CheckResult(cookie.get(), MUST_EQUAL, "seven");
-      SetACookie(cookieService, "http://parser.test/", nullptr, " =eight", nullptr);
-      GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
-      rv[7] = CheckResult(cookie.get(), MUST_EQUAL, "eight");
-      SetACookie(cookieService, "http://parser.test/", nullptr, "test=six", nullptr);
-      GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
-      rv[9] = CheckResult(cookie.get(), MUST_CONTAIN, "test=six");
+    // test the handling of VALUE-only cookies (see bug 169091),
+    // i.e. "six" should assume an empty NAME, which allows other VALUE-only
+    // cookies to overwrite it
+    SetACookie(cookieService, "http://parser.test/", nullptr, "six", nullptr);
+    GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "six"));
+    SetACookie(cookieService, "http://parser.test/", nullptr, "seven", nullptr);
+    GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "seven"));
+    SetACookie(cookieService, "http://parser.test/", nullptr, " =eight", nullptr);
+    GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "eight"));
+    SetACookie(cookieService, "http://parser.test/", nullptr, "test=six", nullptr);
+    GetACookie(cookieService, "http://parser.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, "test=six"));
 
-      allTestsPassed = PrintResult(rv, 10) && allTestsPassed;
-
-
-      // *** path ordering tests
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning path ordering tests...\n");
+    // *** path ordering tests
 
-      // test that cookies are returned in path order - longest to shortest.
-      // if the header doesn't specify a path, it's taken from the host URI.
-      SetACookie(cookieService, "http://multi.path.tests/", nullptr, "test1=path; path=/one/two/three", nullptr);
-      SetACookie(cookieService, "http://multi.path.tests/", nullptr, "test2=path; path=/one \n test3=path; path=/one/two/three/four \n test4=path; path=/one/two \n test5=path; path=/one/two/", nullptr);
-      SetACookie(cookieService, "http://multi.path.tests/one/two/three/four/five/", nullptr, "test6=path", nullptr);
-      SetACookie(cookieService, "http://multi.path.tests/one/two/three/four/five/six/", nullptr, "test7=path; path=", nullptr);
-      SetACookie(cookieService, "http://multi.path.tests/", nullptr, "test8=path; path=/", nullptr);
-      GetACookie(cookieService, "http://multi.path.tests/one/two/three/four/five/six/", nullptr, getter_Copies(cookie));
-      rv[0] = CheckResult(cookie.get(), MUST_EQUAL, "test7=path; test6=path; test3=path; test1=path; test5=path; test4=path; test2=path; test8=path");
-
-      allTestsPassed = PrintResult(rv, 1) && allTestsPassed;
+    // test that cookies are returned in path order - longest to shortest.
+    // if the header doesn't specify a path, it's taken from the host URI.
+    SetACookie(cookieService, "http://multi.path.tests/", nullptr, "test1=path; path=/one/two/three", nullptr);
+    SetACookie(cookieService, "http://multi.path.tests/", nullptr, "test2=path; path=/one \n test3=path; path=/one/two/three/four \n test4=path; path=/one/two \n test5=path; path=/one/two/", nullptr);
+    SetACookie(cookieService, "http://multi.path.tests/one/two/three/four/five/", nullptr, "test6=path", nullptr);
+    SetACookie(cookieService, "http://multi.path.tests/one/two/three/four/five/six/", nullptr, "test7=path; path=", nullptr);
+    SetACookie(cookieService, "http://multi.path.tests/", nullptr, "test8=path; path=/", nullptr);
+    GetACookie(cookieService, "http://multi.path.tests/one/two/three/four/five/six/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test7=path; test6=path; test3=path; test1=path; test5=path; test4=path; test2=path; test8=path"));
 
 
-      // *** httponly tests
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning httponly tests...\n");
+    // *** httponly tests
 
-      // Since this cookie is NOT set via http, setting it fails
-      SetACookieNoHttp(cookieService, "http://httponly.test/", "test=httponly; httponly");
-      GetACookie(cookieService, "http://httponly.test/", nullptr, getter_Copies(cookie));
-      rv[0] = CheckResult(cookie.get(), MUST_BE_NULL);
-      // Since this cookie is set via http, it can be retrieved
-      SetACookie(cookieService, "http://httponly.test/", nullptr, "test=httponly; httponly", nullptr);
-      GetACookie(cookieService, "http://httponly.test/", nullptr, getter_Copies(cookie));
-      rv[1] = CheckResult(cookie.get(), MUST_EQUAL, "test=httponly");
-      // ... but not by web content
-      GetACookieNoHttp(cookieService, "http://httponly.test/", getter_Copies(cookie));
-      rv[2] = CheckResult(cookie.get(), MUST_BE_NULL);
-      // Non-Http cookies should not replace HttpOnly cookies
-      SetACookie(cookieService, "http://httponly.test/", nullptr, "test=httponly; httponly", nullptr);
-      SetACookieNoHttp(cookieService, "http://httponly.test/", "test=not-httponly");
-      GetACookie(cookieService, "http://httponly.test/", nullptr, getter_Copies(cookie));
-      rv[3] = CheckResult(cookie.get(), MUST_EQUAL, "test=httponly");
-      // ... and, if an HttpOnly cookie already exists, should not be set at all
-      GetACookieNoHttp(cookieService, "http://httponly.test/", getter_Copies(cookie));
-      rv[4] = CheckResult(cookie.get(), MUST_BE_NULL);
-      // Non-Http cookies should not delete HttpOnly cookies
-      SetACookie(cookieService, "http://httponly.test/", nullptr, "test=httponly; httponly", nullptr);
-      SetACookieNoHttp(cookieService, "http://httponly.test/", "test=httponly; max-age=-1");
-      GetACookie(cookieService, "http://httponly.test/", nullptr, getter_Copies(cookie));
-      rv[5] = CheckResult(cookie.get(), MUST_EQUAL, "test=httponly");
-      // ... but HttpOnly cookies should
-      SetACookie(cookieService, "http://httponly.test/", nullptr, "test=httponly; httponly; max-age=-1", nullptr);
-      GetACookie(cookieService, "http://httponly.test/", nullptr, getter_Copies(cookie));
-      rv[6] = CheckResult(cookie.get(), MUST_BE_NULL);
-      // Non-Httponly cookies can replace HttpOnly cookies when set over http
-      SetACookie(cookieService, "http://httponly.test/", nullptr, "test=httponly; httponly", nullptr);
-      SetACookie(cookieService, "http://httponly.test/", nullptr, "test=not-httponly", nullptr);
-      GetACookieNoHttp(cookieService, "http://httponly.test/", getter_Copies(cookie));
-      rv[7] = CheckResult(cookie.get(), MUST_EQUAL, "test=not-httponly");
-      // scripts should not be able to set httponly cookies by replacing an existing non-httponly cookie
-      SetACookie(cookieService, "http://httponly.test/", nullptr, "test=not-httponly", nullptr);
-      SetACookieNoHttp(cookieService, "http://httponly.test/", "test=httponly; httponly");
-      GetACookieNoHttp(cookieService, "http://httponly.test/", getter_Copies(cookie));
-      rv[8] = CheckResult(cookie.get(), MUST_EQUAL, "test=not-httponly");
-
-      allTestsPassed = PrintResult(rv, 9) && allTestsPassed;
-
+    // Since this cookie is NOT set via http, setting it fails
+    SetACookieNoHttp(cookieService, "http://httponly.test/", "test=httponly; httponly");
+    GetACookie(cookieService, "http://httponly.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    // Since this cookie is set via http, it can be retrieved
+    SetACookie(cookieService, "http://httponly.test/", nullptr, "test=httponly; httponly", nullptr);
+    GetACookie(cookieService, "http://httponly.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=httponly"));
+    // ... but not by web content
+    GetACookieNoHttp(cookieService, "http://httponly.test/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    // Non-Http cookies should not replace HttpOnly cookies
+    SetACookie(cookieService, "http://httponly.test/", nullptr, "test=httponly; httponly", nullptr);
+    SetACookieNoHttp(cookieService, "http://httponly.test/", "test=not-httponly");
+    GetACookie(cookieService, "http://httponly.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=httponly"));
+    // ... and, if an HttpOnly cookie already exists, should not be set at all
+    GetACookieNoHttp(cookieService, "http://httponly.test/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    // Non-Http cookies should not delete HttpOnly cookies
+    SetACookie(cookieService, "http://httponly.test/", nullptr, "test=httponly; httponly", nullptr);
+    SetACookieNoHttp(cookieService, "http://httponly.test/", "test=httponly; max-age=-1");
+    GetACookie(cookieService, "http://httponly.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=httponly"));
+    // ... but HttpOnly cookies should
+    SetACookie(cookieService, "http://httponly.test/", nullptr, "test=httponly; httponly; max-age=-1", nullptr);
+    GetACookie(cookieService, "http://httponly.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    // Non-Httponly cookies can replace HttpOnly cookies when set over http
+    SetACookie(cookieService, "http://httponly.test/", nullptr, "test=httponly; httponly", nullptr);
+    SetACookie(cookieService, "http://httponly.test/", nullptr, "test=not-httponly", nullptr);
+    GetACookieNoHttp(cookieService, "http://httponly.test/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=not-httponly"));
+    // scripts should not be able to set httponly cookies by replacing an existing non-httponly cookie
+    SetACookie(cookieService, "http://httponly.test/", nullptr, "test=not-httponly", nullptr);
+    SetACookieNoHttp(cookieService, "http://httponly.test/", "test=httponly; httponly");
+    GetACookieNoHttp(cookieService, "http://httponly.test/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=not-httponly"));
 
-      // *** Cookie prefix tests
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning cookie prefix tests...\n");
+    // *** Cookie prefix tests
 
-      // prefixed cookies can't be set from insecure HTTP
-      SetACookie(cookieService, "http://prefixed.test/", nullptr, "__Secure-test1=test", nullptr);
-      SetACookie(cookieService, "http://prefixed.test/", nullptr, "__Secure-test2=test; secure", nullptr);
-      SetACookie(cookieService, "http://prefixed.test/", nullptr, "__Host-test1=test", nullptr);
-      SetACookie(cookieService, "http://prefixed.test/", nullptr, "__Host-test2=test; secure", nullptr);
-      GetACookie(cookieService, "http://prefixed.test/", nullptr, getter_Copies(cookie));
-      rv[0] = CheckResult(cookie.get(), MUST_BE_NULL);
+    // prefixed cookies can't be set from insecure HTTP
+    SetACookie(cookieService, "http://prefixed.test/", nullptr, "__Secure-test1=test", nullptr);
+    SetACookie(cookieService, "http://prefixed.test/", nullptr, "__Secure-test2=test; secure", nullptr);
+    SetACookie(cookieService, "http://prefixed.test/", nullptr, "__Host-test1=test", nullptr);
+    SetACookie(cookieService, "http://prefixed.test/", nullptr, "__Host-test2=test; secure", nullptr);
+    GetACookie(cookieService, "http://prefixed.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      // prefixed cookies won't be set without the secure flag
-      SetACookie(cookieService, "https://prefixed.test/", nullptr, "__Secure-test=test", nullptr);
-      SetACookie(cookieService, "https://prefixed.test/", nullptr, "__Host-test=test", nullptr);
-      GetACookie(cookieService, "https://prefixed.test/", nullptr, getter_Copies(cookie));
-      rv[1] = CheckResult(cookie.get(), MUST_BE_NULL);
+    // prefixed cookies won't be set without the secure flag
+    SetACookie(cookieService, "https://prefixed.test/", nullptr, "__Secure-test=test", nullptr);
+    SetACookie(cookieService, "https://prefixed.test/", nullptr, "__Host-test=test", nullptr);
+    GetACookie(cookieService, "https://prefixed.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      // prefixed cookies can be set when done correctly
-      SetACookie(cookieService, "https://prefixed.test/", nullptr, "__Secure-test=test; secure", nullptr);
-      SetACookie(cookieService, "https://prefixed.test/", nullptr, "__Host-test=test; secure", nullptr);
-      GetACookie(cookieService, "https://prefixed.test/", nullptr, getter_Copies(cookie));
-      rv[2] = CheckResult(cookie.get(), MUST_CONTAIN, "__Secure-test=test");
-      rv[3] = CheckResult(cookie.get(), MUST_CONTAIN, "__Host-test=test");
+    // prefixed cookies can be set when done correctly
+    SetACookie(cookieService, "https://prefixed.test/", nullptr, "__Secure-test=test; secure", nullptr);
+    SetACookie(cookieService, "https://prefixed.test/", nullptr, "__Host-test=test; secure", nullptr);
+    GetACookie(cookieService, "https://prefixed.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, "__Secure-test=test"));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, "__Host-test=test"));
 
-      // but when set must not be returned to the host insecurely
-      GetACookie(cookieService, "http://prefixed.test/", nullptr, getter_Copies(cookie));
-      rv[4] = CheckResult(cookie.get(), MUST_BE_NULL);
+    // but when set must not be returned to the host insecurely
+    GetACookie(cookieService, "http://prefixed.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      // Host-prefixed cookies cannot specify a domain
-      SetACookie(cookieService, "https://host.prefixed.test/", nullptr, "__Host-a=test; secure; domain=prefixed.test", nullptr);
-      SetACookie(cookieService, "https://host.prefixed.test/", nullptr, "__Host-b=test; secure; domain=.prefixed.test", nullptr);
-      SetACookie(cookieService, "https://host.prefixed.test/", nullptr, "__Host-c=test; secure; domain=host.prefixed.test", nullptr);
-      SetACookie(cookieService, "https://host.prefixed.test/", nullptr, "__Host-d=test; secure; domain=.host.prefixed.test", nullptr);
-      GetACookie(cookieService, "https://host.prefixed.test/", nullptr, getter_Copies(cookie));
-      rv[5] = CheckResult(cookie.get(), MUST_BE_NULL);
+    // Host-prefixed cookies cannot specify a domain
+    SetACookie(cookieService, "https://host.prefixed.test/", nullptr, "__Host-a=test; secure; domain=prefixed.test", nullptr);
+    SetACookie(cookieService, "https://host.prefixed.test/", nullptr, "__Host-b=test; secure; domain=.prefixed.test", nullptr);
+    SetACookie(cookieService, "https://host.prefixed.test/", nullptr, "__Host-c=test; secure; domain=host.prefixed.test", nullptr);
+    SetACookie(cookieService, "https://host.prefixed.test/", nullptr, "__Host-d=test; secure; domain=.host.prefixed.test", nullptr);
+    GetACookie(cookieService, "https://host.prefixed.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-      // Host-prefixed cookies can only have a path of "/"
-      SetACookie(cookieService, "https://host.prefixed.test/some/path", nullptr, "__Host-e=test; secure", nullptr);
-      SetACookie(cookieService, "https://host.prefixed.test/some/path", nullptr, "__Host-f=test; secure; path=/", nullptr);
-      SetACookie(cookieService, "https://host.prefixed.test/some/path", nullptr, "__Host-g=test; secure; path=/some", nullptr);
-      GetACookie(cookieService, "https://host.prefixed.test/", nullptr, getter_Copies(cookie));
-      rv[6] = CheckResult(cookie.get(), MUST_EQUAL, "__Host-f=test");
+    // Host-prefixed cookies can only have a path of "/"
+    SetACookie(cookieService, "https://host.prefixed.test/some/path", nullptr, "__Host-e=test; secure", nullptr);
+    SetACookie(cookieService, "https://host.prefixed.test/some/path", nullptr, "__Host-f=test; secure; path=/", nullptr);
+    SetACookie(cookieService, "https://host.prefixed.test/some/path", nullptr, "__Host-g=test; secure; path=/some", nullptr);
+    GetACookie(cookieService, "https://host.prefixed.test/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "__Host-f=test"));
 
-      allTestsPassed = PrintResult(rv, 7) && allTestsPassed;
+    // *** leave-secure-alone tests
 
-      // *** leave-secure-alone tests
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning leave-secure-alone tests...\n");
+    // testing items 0 & 1 for 3.1 of spec Deprecate modification of ’secure’
+    // cookies from non-secure origins
+    SetACookie(cookieService, "http://www.security.test/", nullptr, "test=non-security; secure", nullptr);
+    GetACookieNoHttp(cookieService, "https://www.security.test/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
+    SetACookie(cookieService, "https://www.security.test/path/", nullptr, "test=security; secure; path=/path/", nullptr);
+    GetACookieNoHttp(cookieService, "https://www.security.test/path/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=security"));
+    // testing items 2 & 3 & 4 for 3.2 of spec Deprecate modification of ’secure’
+    // cookies from non-secure origins
+    // Secure site can modify cookie value
+    SetACookie(cookieService, "https://www.security.test/path/", nullptr, "test=security2; secure; path=/path/", nullptr);
+    GetACookieNoHttp(cookieService, "https://www.security.test/path/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=security2"));
+    // If new cookie contains same name, same host and partially matching path with
+    // an existing security cookie on non-security site, it can't modify an existing
+    // security cookie.
+    SetACookie(cookieService, "http://www.security.test/path/foo/", nullptr, "test=non-security; path=/path/foo", nullptr);
+    GetACookieNoHttp(cookieService, "https://www.security.test/path/foo/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=security2"));
+    // Non-secure cookie can set by same name, same host and non-matching path.
+    SetACookie(cookieService, "http://www.security.test/bar/", nullptr, "test=non-security; path=/bar", nullptr);
+    GetACookieNoHttp(cookieService, "http://www.security.test/bar/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test=non-security"));
+    // Modify value and downgrade secure level.
+    SetACookie(cookieService, "https://www.security.test/", nullptr, "test_modify_cookie=security-cookie; secure; domain=.security.test", nullptr);
+    GetACookieNoHttp(cookieService, "https://www.security.test/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test_modify_cookie=security-cookie"));
+    SetACookie(cookieService, "https://www.security.test/", nullptr, "test_modify_cookie=non-security-cookie; domain=.security.test", nullptr);
+    GetACookieNoHttp(cookieService, "https://www.security.test/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, "test_modify_cookie=non-security-cookie"));
+    // Test the non-security cookie can set when domain or path not same to secure cookie of same name.
+    SetACookie(cookieService, "https://www.security.test/", nullptr, "test=security3", nullptr);
+    GetACookieNoHttp(cookieService, "http://www.security.test/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, "test=security3"));
+    SetACookie(cookieService, "http://www.security.test/", nullptr, "test=non-security2; domain=security.test", nullptr);
+    GetACookieNoHttp(cookieService, "http://www.security.test/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, "test=non-security2"));
 
-      // testing items 0 & 1 for 3.1 of spec Deprecate modification of ’secure’
-      // cookies from non-secure origins
-      SetACookie(cookieService, "http://www.security.test/", nullptr, "test=non-security; secure", nullptr);
-      GetACookieNoHttp(cookieService, "https://www.security.test/", getter_Copies(cookie));
-      rv[0] = CheckResult(cookie.get(), MUST_BE_NULL);
-      SetACookie(cookieService, "https://www.security.test/path/", nullptr, "test=security; secure; path=/path/", nullptr);
-      GetACookieNoHttp(cookieService, "https://www.security.test/path/", getter_Copies(cookie));
-      rv[1] = CheckResult(cookie.get(), MUST_EQUAL, "test=security");
-      // testing items 2 & 3 & 4 for 3.2 of spec Deprecate modification of ’secure’
-      // cookies from non-secure origins
-      // Secure site can modify cookie value
-      SetACookie(cookieService, "https://www.security.test/path/", nullptr, "test=security2; secure; path=/path/", nullptr);
-      GetACookieNoHttp(cookieService, "https://www.security.test/path/", getter_Copies(cookie));
-      rv[2] = CheckResult(cookie.get(), MUST_EQUAL, "test=security2");
-      // If new cookie contains same name, same host and partially matching path with
-      // an existing security cookie on non-security site, it can't modify an existing
-      // security cookie.
-      SetACookie(cookieService, "http://www.security.test/path/foo/", nullptr, "test=non-security; path=/path/foo", nullptr);
-      GetACookieNoHttp(cookieService, "https://www.security.test/path/foo/", getter_Copies(cookie));
-      rv[3] = CheckResult(cookie.get(), MUST_EQUAL, "test=security2");
-      // Non-secure cookie can set by same name, same host and non-matching path.
-      SetACookie(cookieService, "http://www.security.test/bar/", nullptr, "test=non-security; path=/bar", nullptr);
-      GetACookieNoHttp(cookieService, "http://www.security.test/bar/", getter_Copies(cookie));
-      rv[4] = CheckResult(cookie.get(), MUST_EQUAL, "test=non-security");
-      // Modify value and downgrade secure level.
-      SetACookie(cookieService, "https://www.security.test/", nullptr, "test_modify_cookie=security-cookie; secure; domain=.security.test", nullptr);
-      GetACookieNoHttp(cookieService, "https://www.security.test/", getter_Copies(cookie));
-      rv[5] = CheckResult(cookie.get(), MUST_EQUAL, "test_modify_cookie=security-cookie");
-      SetACookie(cookieService, "https://www.security.test/", nullptr, "test_modify_cookie=non-security-cookie; domain=.security.test", nullptr);
-      GetACookieNoHttp(cookieService, "https://www.security.test/", getter_Copies(cookie));
-      rv[6] = CheckResult(cookie.get(), MUST_EQUAL, "test_modify_cookie=non-security-cookie");
-      // Test the non-security cookie can set when domain or path not same to secure cookie of same name.
-      SetACookie(cookieService, "https://www.security.test/", nullptr, "test=security3", nullptr);
-      GetACookieNoHttp(cookieService, "http://www.security.test/", getter_Copies(cookie));
-      rv[7] = CheckResult(cookie.get(), MUST_CONTAIN, "test=security3");
-      SetACookie(cookieService, "http://www.security.test/", nullptr, "test=non-security2; domain=security.test", nullptr);
-      GetACookieNoHttp(cookieService, "http://www.security.test/", getter_Copies(cookie));
-      rv[8] = CheckResult(cookie.get(), MUST_CONTAIN, "test=non-security2");
-
-      allTestsPassed = PrintResult(rv, 9) && allTestsPassed;
+    // *** nsICookieManager{2} interface tests
+    nsCOMPtr<nsICookieManager> cookieMgr = do_GetService(NS_COOKIEMANAGER_CONTRACTID, &rv0);
+    ASSERT_TRUE(NS_SUCCEEDED(rv0));
 
-      // *** nsICookieManager{2} interface tests
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning nsICookieManager{2} interface tests...\n");
-      nsCOMPtr<nsICookieManager> cookieMgr = do_GetService(NS_COOKIEMANAGER_CONTRACTID, &rv0);
-      if (NS_FAILED(rv0)) return -1;
-      nsCOMPtr<nsICookieManager2> cookieMgr2 = do_QueryInterface(cookieMgr);
-      if (!cookieMgr2) return -1;
+    nsCOMPtr<nsICookieManager2> cookieMgr2 = do_QueryInterface(cookieMgr);
+    ASSERT_TRUE(cookieMgr2);
 
-      mozilla::NeckoOriginAttributes attrs;
+    mozilla::NeckoOriginAttributes attrs;
 
-      // first, ensure a clean slate
-      rv[0] = NS_SUCCEEDED(cookieMgr->RemoveAll());
-      // add some cookies
-      rv[1] = NS_SUCCEEDED(cookieMgr2->AddNative(NS_LITERAL_CSTRING("cookiemgr.test"), // domain
-                                           NS_LITERAL_CSTRING("/foo"),           // path
-                                           NS_LITERAL_CSTRING("test1"),          // name
-                                           NS_LITERAL_CSTRING("yes"),            // value
-                                           false,                             // is secure
-                                           false,                             // is httponly
-                                           true,                              // is session
-                                           INT64_MAX,                            // expiry time
-                                           &attrs));                         // originAttributes
-      rv[2] = NS_SUCCEEDED(cookieMgr2->AddNative(NS_LITERAL_CSTRING("cookiemgr.test"), // domain
-                                           NS_LITERAL_CSTRING("/foo"),           // path
-                                           NS_LITERAL_CSTRING("test2"),          // name
-                                           NS_LITERAL_CSTRING("yes"),            // value
-                                           false,                             // is secure
-                                           true,                              // is httponly
-                                           true,                              // is session
-                                           PR_Now() / PR_USEC_PER_SEC + 2,       // expiry time
-                                           &attrs));                         // originAttributes
-      rv[3] = NS_SUCCEEDED(cookieMgr2->AddNative(NS_LITERAL_CSTRING("new.domain"),     // domain
-                                           NS_LITERAL_CSTRING("/rabbit"),        // path
-                                           NS_LITERAL_CSTRING("test3"),          // name
-                                           NS_LITERAL_CSTRING("yes"),            // value
-                                           false,                             // is secure
-                                           false,                             // is httponly
-                                           true,                              // is session
-                                           INT64_MAX,                            // expiry time
-                                           &attrs));                         // originAttributes
-      // confirm using enumerator
-      nsCOMPtr<nsISimpleEnumerator> enumerator;
-      rv[4] = NS_SUCCEEDED(cookieMgr->GetEnumerator(getter_AddRefs(enumerator)));
-      int32_t i = 0;
-      bool more;
-      nsCOMPtr<nsICookie2> expiredCookie, newDomainCookie;
-      while (NS_SUCCEEDED(enumerator->HasMoreElements(&more)) && more) {
+    // first, ensure a clean slate
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr->RemoveAll()));
+    // add some cookies
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr2->AddNative(NS_LITERAL_CSTRING("cookiemgr.test"), // domain
+                                                   NS_LITERAL_CSTRING("/foo"),           // path
+                                                   NS_LITERAL_CSTRING("test1"),          // name
+                                                   NS_LITERAL_CSTRING("yes"),            // value
+                                                   false,                             // is secure
+                                                   false,                             // is httponly
+                                                   true,                              // is session
+                                                   INT64_MAX,                            // expiry time
+                                                   &attrs)));                         // originAttributes
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr2->AddNative(NS_LITERAL_CSTRING("cookiemgr.test"), // domain
+                                                   NS_LITERAL_CSTRING("/foo"),           // path
+                                                   NS_LITERAL_CSTRING("test2"),          // name
+                                                   NS_LITERAL_CSTRING("yes"),            // value
+                                                   false,                             // is secure
+                                                   true,                              // is httponly
+                                                   true,                              // is session
+                                                   PR_Now() / PR_USEC_PER_SEC + 2,       // expiry time
+                                                   &attrs)));                         // originAttributes
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr2->AddNative(NS_LITERAL_CSTRING("new.domain"),     // domain
+                                                   NS_LITERAL_CSTRING("/rabbit"),        // path
+                                                   NS_LITERAL_CSTRING("test3"),          // name
+                                                   NS_LITERAL_CSTRING("yes"),            // value
+                                                   false,                             // is secure
+                                                   false,                             // is httponly
+                                                   true,                              // is session
+                                                   INT64_MAX,                            // expiry time
+                                                   &attrs)));                         // originAttributes
+    // confirm using enumerator
+    nsCOMPtr<nsISimpleEnumerator> enumerator;
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr->GetEnumerator(getter_AddRefs(enumerator))));
+    int32_t i = 0;
+    bool more;
+    nsCOMPtr<nsICookie2> expiredCookie, newDomainCookie;
+    while (NS_SUCCEEDED(enumerator->HasMoreElements(&more)) && more) {
         nsCOMPtr<nsISupports> cookie;
         if (NS_FAILED(enumerator->GetNext(getter_AddRefs(cookie)))) break;
         ++i;
 
         // keep tabs on the second and third cookies, so we can check them later
         nsCOMPtr<nsICookie2> cookie2(do_QueryInterface(cookie));
         if (!cookie2) break;
         nsAutoCString name;
         cookie2->GetName(name);
         if (name.EqualsLiteral("test2"))
-          expiredCookie = cookie2;
+            expiredCookie = cookie2;
         else if (name.EqualsLiteral("test3"))
-          newDomainCookie = cookie2;
-      }
-      rv[5] = i == 3;
-      // check the httpOnly attribute of the second cookie is honored
-      GetACookie(cookieService, "http://cookiemgr.test/foo/", nullptr, getter_Copies(cookie));
-      rv[6] = CheckResult(cookie.get(), MUST_CONTAIN, "test2=yes");
-      GetACookieNoHttp(cookieService, "http://cookiemgr.test/foo/", getter_Copies(cookie));
-      rv[7] = CheckResult(cookie.get(), MUST_NOT_CONTAIN, "test2=yes");
-      // check CountCookiesFromHost()
-      uint32_t hostCookies = 0;
-      rv[8] = NS_SUCCEEDED(cookieMgr2->CountCookiesFromHost(NS_LITERAL_CSTRING("cookiemgr.test"), &hostCookies)) &&
-              hostCookies == 2;
-      // check CookieExistsNative() using the third cookie
-      bool found;
-      rv[9] = NS_SUCCEEDED(cookieMgr2->CookieExistsNative(newDomainCookie, &attrs,  &found)) && found;
+            newDomainCookie = cookie2;
+    }
+    EXPECT_EQ(i, 3);
+    // check the httpOnly attribute of the second cookie is honored
+    GetACookie(cookieService, "http://cookiemgr.test/foo/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_CONTAIN, "test2=yes"));
+    GetACookieNoHttp(cookieService, "http://cookiemgr.test/foo/", getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_NOT_CONTAIN, "test2=yes"));
+    // check CountCookiesFromHost()
+    uint32_t hostCookies = 0;
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr2->CountCookiesFromHost(NS_LITERAL_CSTRING("cookiemgr.test"), &hostCookies)));
+    EXPECT_EQ(hostCookies, 2u);
+    // check CookieExistsNative() using the third cookie
+    bool found;
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr2->CookieExistsNative(newDomainCookie, &attrs,  &found)));
+    EXPECT_TRUE(found);
 
 
-      // remove the cookie, block it, and ensure it can't be added again
-      rv[10] = NS_SUCCEEDED(cookieMgr->RemoveNative(NS_LITERAL_CSTRING("new.domain"), // domain
-                                                    NS_LITERAL_CSTRING("test3"),      // name
-                                                    NS_LITERAL_CSTRING("/rabbit"),    // path
-                                                    true,                             // is blocked
-                                                    &attrs));                         // originAttributes
-      rv[11] = NS_SUCCEEDED(cookieMgr2->CookieExistsNative(newDomainCookie, &attrs, &found)) && !found;
-      rv[12] = NS_SUCCEEDED(cookieMgr2->AddNative(NS_LITERAL_CSTRING("new.domain"),     // domain
-                                            NS_LITERAL_CSTRING("/rabbit"),        // path
-                                            NS_LITERAL_CSTRING("test3"),          // name
-                                            NS_LITERAL_CSTRING("yes"),            // value
-                                            false,                             // is secure
-                                            false,                             // is httponly
-                                            true,                              // is session
-                                            INT64_MIN,                            // expiry time
-                                            &attrs));                         // originAttributes
-      rv[13] = NS_SUCCEEDED(cookieMgr2->CookieExistsNative(newDomainCookie, &attrs, &found)) && !found;
-      // sleep four seconds, to make sure the second cookie has expired
-      PR_Sleep(4 * PR_TicksPerSecond());
-      // check that both CountCookiesFromHost() and CookieExistsNative() count the
-      // expired cookie
-      rv[14] = NS_SUCCEEDED(cookieMgr2->CountCookiesFromHost(NS_LITERAL_CSTRING("cookiemgr.test"), &hostCookies)) &&
-              hostCookies == 2;
-      rv[15] = NS_SUCCEEDED(cookieMgr2->CookieExistsNative(expiredCookie, &attrs, &found)) && found;
-      // double-check RemoveAll() using the enumerator
-      rv[16] = NS_SUCCEEDED(cookieMgr->RemoveAll());
-      rv[17] = NS_SUCCEEDED(cookieMgr->GetEnumerator(getter_AddRefs(enumerator))) &&
-               NS_SUCCEEDED(enumerator->HasMoreElements(&more)) &&
-               !more;
+    // remove the cookie, block it, and ensure it can't be added again
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr->RemoveNative(NS_LITERAL_CSTRING("new.domain"), // domain
+                                                     NS_LITERAL_CSTRING("test3"),      // name
+                                                     NS_LITERAL_CSTRING("/rabbit"),    // path
+                                                     true,                             // is blocked
+                                                     &attrs)));                         // originAttributes
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr2->CookieExistsNative(newDomainCookie, &attrs, &found)));
+    EXPECT_FALSE(found);
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr2->AddNative(NS_LITERAL_CSTRING("new.domain"),     // domain
+                                                   NS_LITERAL_CSTRING("/rabbit"),        // path
+                                                   NS_LITERAL_CSTRING("test3"),          // name
+                                                   NS_LITERAL_CSTRING("yes"),            // value
+                                                   false,                             // is secure
+                                                   false,                             // is httponly
+                                                   true,                              // is session
+                                                   INT64_MIN,                            // expiry time
+                                                   &attrs)));                         // originAttributes
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr2->CookieExistsNative(newDomainCookie, &attrs, &found)));
+    EXPECT_FALSE(found);
+    // sleep four seconds, to make sure the second cookie has expired
+    PR_Sleep(4 * PR_TicksPerSecond());
+    // check that both CountCookiesFromHost() and CookieExistsNative() count the
+    // expired cookie
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr2->CountCookiesFromHost(NS_LITERAL_CSTRING("cookiemgr.test"), &hostCookies)));
+    EXPECT_EQ(hostCookies, 2u);
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr2->CookieExistsNative(expiredCookie, &attrs, &found)));
+    EXPECT_TRUE(found);
+    // double-check RemoveAll() using the enumerator
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr->RemoveAll()));
+    EXPECT_TRUE(NS_SUCCEEDED(cookieMgr->GetEnumerator(getter_AddRefs(enumerator))) &&
+                NS_SUCCEEDED(enumerator->HasMoreElements(&more)) &&
+                !more);
 
-      allTestsPassed = PrintResult(rv, 18) && allTestsPassed;
-
-
-      // *** eviction and creation ordering tests
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning eviction and creation ordering tests...\n");
+    // *** eviction and creation ordering tests
 
-      // test that cookies are
-      // a) returned by order of creation time (oldest first, newest last)
-      // b) evicted by order of lastAccessed time, if the limit on cookies per host (50) is reached
-      nsAutoCString name;
-      nsAutoCString expected;
-      for (int32_t i = 0; i < 60; ++i) {
+    // test that cookies are
+    // a) returned by order of creation time (oldest first, newest last)
+    // b) evicted by order of lastAccessed time, if the limit on cookies per host (50) is reached
+    nsAutoCString name;
+    nsAutoCString expected;
+    for (int32_t i = 0; i < 60; ++i) {
         name = NS_LITERAL_CSTRING("test");
         name.AppendInt(i);
         name += NS_LITERAL_CSTRING("=creation");
         SetACookie(cookieService, "http://creation.ordering.tests/", nullptr, name.get(), nullptr);
 
         if (i >= 10) {
-          expected += name;
-          if (i < 59)
-            expected += NS_LITERAL_CSTRING("; ");
+            expected += name;
+            if (i < 59)
+                expected += NS_LITERAL_CSTRING("; ");
         }
-      }
-      GetACookie(cookieService, "http://creation.ordering.tests/", nullptr, getter_Copies(cookie));
-      rv[0] = CheckResult(cookie.get(), MUST_EQUAL, expected.get());
-
-      allTestsPassed = PrintResult(rv, 1) && allTestsPassed;
-
-      // *** eviction and creation ordering tests after enable network.cookie.leave-secure-alone
-      sBuffer = PR_sprintf_append(sBuffer, "*** Beginning eviction and creation tests after enable nework.cookie.leave-secure-alone...\n");
-      // reset cookie
-      cookieMgr->RemoveAll();
+    }
+    GetACookie(cookieService, "http://creation.ordering.tests/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_EQUAL, expected.get()));
 
-      for (int32_t i = 0; i < 60; ++i) {
-        name = NS_LITERAL_CSTRING("test");
-        name.AppendInt(i);
-        name += NS_LITERAL_CSTRING("=delete_non_security");
+    // *** eviction and creation ordering tests after enable network.cookie.leave-secure-alone
+    // reset cookie
+    cookieMgr->RemoveAll();
 
-        // Create 50 cookies that include the secure flag.
-        if (i < 50) {
-          name += NS_LITERAL_CSTRING("; secure");
-          SetACookie(cookieService, "https://creation.ordering.tests/", nullptr, name.get(), nullptr);
-        } else {
-          // non-security cookies will be removed beside the latest cookie that be created.
-          SetACookie(cookieService, "http://creation.ordering.tests/", nullptr, name.get(), nullptr);
-        }
-      }
-      GetACookie(cookieService, "http://creation.ordering.tests/", nullptr, getter_Copies(cookie));
-      rv[0] = CheckResult(cookie.get(), MUST_BE_NULL);
+    for (int32_t i = 0; i < 60; ++i) {
+      name = NS_LITERAL_CSTRING("test");
+      name.AppendInt(i);
+      name += NS_LITERAL_CSTRING("=delete_non_security");
 
-      allTestsPassed = PrintResult(rv, 1) && allTestsPassed;
-
-
-      // XXX the following are placeholders: add these tests please!
-      // *** "noncompliant cookie" tests
-      // *** IP address tests
-      // *** speed tests
-
-
-      sBuffer = PR_sprintf_append(sBuffer, "\n*** Result: %s!\n\n", allTestsPassed ? "all tests passed" : "TEST(S) FAILED");
+      // Create 50 cookies that include the secure flag.
+      if (i < 50) {
+        name += NS_LITERAL_CSTRING("; secure");
+        SetACookie(cookieService, "https://creation.ordering.tests/", nullptr, name.get(), nullptr);
+      } else {
+        // non-security cookies will be removed beside the latest cookie that be created.
+        SetACookie(cookieService, "http://creation.ordering.tests/", nullptr, name.get(), nullptr);
+      }
     }
+    GetACookie(cookieService, "http://creation.ordering.tests/", nullptr, getter_Copies(cookie));
+    EXPECT_TRUE(CheckResult(cookie.get(), MUST_BE_NULL));
 
-    if (!allTestsPassed) {
-      // print the entire log
-      printf("%s", sBuffer);
-      return 1;
-    }
-
-    PR_smprintf_free(sBuffer);
-    sBuffer = nullptr;
-
-    return 0;
+    // XXX the following are placeholders: add these tests please!
+    // *** "noncompliant cookie" tests
+    // *** IP address tests
+    // *** speed tests
 }
-
-// Stubs to make this test happy
-
-mozilla::dom::OriginAttributesDictionary::OriginAttributesDictionary()
-  : mAppId(0),
-    mInIsolatedMozBrowser(false),
-    mPrivateBrowsingId(0),
-    mUserContextId(0)
-{}
deleted file mode 100644
--- a/netwerk/test/TestDNS.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "TestCommon.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "nsIServiceManager.h"
-#include "nsPIDNSService.h"
-#include "nsIDNSListener.h"
-#include "nsIDNSRecord.h"
-#include "nsICancelable.h"
-#include "nsCOMPtr.h"
-#include "nsStringAPI.h"
-#include "nsNetCID.h"
-#include "prinrval.h"
-#include "prthread.h"
-#include "prnetdb.h"
-#include "nsXPCOM.h"
-#include "nsServiceManagerUtils.h"
-
-class myDNSListener : public nsIDNSListener
-{
-public:
-    NS_DECL_THREADSAFE_ISUPPORTS
-
-    myDNSListener(const char *host, int32_t index)
-        : mHost(host)
-        , mIndex(index) {}
-
-    NS_IMETHOD OnLookupComplete(nsICancelable *request,
-                                nsIDNSRecord  *rec,
-                                nsresult       status) override
-    {
-        printf("%d: OnLookupComplete called [host=%s status=%x rec=%p]\n",
-            mIndex, mHost.get(), static_cast<uint32_t>(status), (void*)rec);
-
-        if (NS_SUCCEEDED(status)) {
-            nsAutoCString buf;
-
-            rec->GetCanonicalName(buf);
-            printf("%d: canonname=%s\n", mIndex, buf.get());
-
-            bool hasMore;
-            while (NS_SUCCEEDED(rec->HasMore(&hasMore)) && hasMore) {
-                rec->GetNextAddrAsString(buf);
-                printf("%d: => %s\n", mIndex, buf.get());
-            }
-        }
-
-        return NS_OK;
-    }
-
-private:
-    virtual ~myDNSListener() = default;
-
-    nsCString mHost;
-    int32_t   mIndex;
-};
-
-
-NS_IMPL_ISUPPORTS(myDNSListener, nsIDNSListener)
-
-static bool IsAscii(const char *s)
-{
-  for (; *s; ++s) {
-    if (*s & 0x80)
-      return false;
-  }
-
-  return true;
-}
-
-int main(int argc, char **argv)
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    int sleepLen = 10; // default: 10 seconds
-
-    if (argc == 1) {
-        printf("usage: TestDNS [-N] hostname1 [hostname2 ...]\n");
-        return -1;
-    }
-
-    {
-        nsCOMPtr<nsIServiceManager> servMan;
-        NS_InitXPCOM2(getter_AddRefs(servMan), nullptr, nullptr);
-
-        nsCOMPtr<nsPIDNSService> dns = do_GetService(NS_DNSSERVICE_CONTRACTID);
-        if (!dns)
-            return -1;
-
-        if (argv[1][0] == '-') {
-            sleepLen = atoi(argv[1]+1);
-            argv++;
-            argc--;
-        }
-
-        for (int j=0; j<2; ++j) {
-            for (int i=1; i<argc; ++i) {
-                // assume non-ASCII input is given in the native charset 
-                nsAutoCString hostBuf;
-                if (IsAscii(argv[i]))
-                    hostBuf.Assign(argv[i]);
-                else
-                    hostBuf = NS_ConvertUTF16toUTF8(NS_ConvertASCIItoUTF16(argv[i]));
-
-                nsCOMPtr<nsIDNSListener> listener = new myDNSListener(argv[i], i);
-
-                nsCOMPtr<nsICancelable> req;
-                nsresult rv = dns->AsyncResolve(hostBuf,
-                                                nsIDNSService::RESOLVE_CANONICAL_NAME,
-                                                listener, nullptr, getter_AddRefs(req));
-                if (NS_FAILED(rv))
-                    printf("### AsyncResolve failed [rv=%x]\n",
-                           static_cast<uint32_t>(rv));
-            }
-
-            printf("main thread sleeping for %d seconds...\n", sleepLen);
-            PR_Sleep(PR_SecondsToInterval(sleepLen));
-        }
-
-        printf("shutting down main thread...\n");
-        dns->Shutdown();
-    }
-
-    NS_ShutdownXPCOM(nullptr);
-    return 0;
-}
deleted file mode 100644
--- a/netwerk/test/TestIDN.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "TestCommon.h"
-#include <stdio.h>
-#include "nsIIDNService.h"
-#include "nsCOMPtr.h"
-#include "nsIServiceManager.h"
-#include "nsServiceManagerUtils.h"
-#include "nsNetCID.h"
-#include "nsStringAPI.h"
-
-int main(int argc, char **argv) {
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    // Test case from RFC 3492 (7.1 - Simplified Chinese)
-    const char plain[] =
-         "\xE4\xBB\x96\xE4\xBB\xAC\xE4\xB8\xBA\xE4\xBB\x80\xE4\xB9\x88\xE4\xB8\x8D\xE8\xAF\xB4\xE4\xB8\xAD\xE6\x96\x87";
-    const char encoded[] = "xn--ihqwcrb4cv8a8dqg056pqjye";
-
-    nsCOMPtr<nsIIDNService> converter = do_GetService(NS_IDNSERVICE_CONTRACTID);
-    NS_ASSERTION(converter, "idnSDK not installed!");
-    if (converter) {
-        nsAutoCString buf;
-        nsresult rv = converter->ConvertUTF8toACE(NS_LITERAL_CSTRING(plain), buf);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "error ConvertUTF8toACE");
-        NS_ASSERTION(buf.Equals(NS_LITERAL_CSTRING(encoded)), 
-                     "encode result incorrect");
-        printf("encoded = %s\n", buf.get());
-
-        buf.Truncate();
-        rv = converter->ConvertACEtoUTF8(NS_LITERAL_CSTRING(encoded), buf);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "error ConvertACEtoUTF8");
-        NS_ASSERTION(buf.Equals(NS_LITERAL_CSTRING(plain)), 
-                     "decode result incorrect");
-        printf("decoded = ");
-        NS_ConvertUTF8toUTF16 utf(buf);
-        const char16_t *u = utf.get();
-        for (int i = 0; u[i]; i++) {
-          printf("U+%.4X ", u[i]);
-        }
-        printf("\n");
-
-        bool isAce;
-        rv = converter->IsACE(NS_LITERAL_CSTRING("www.xn--ihqwcrb4cv8a8dqg056pqjye.com"), &isAce);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "error IsACE");
-        NS_ASSERTION(isAce, "IsACE incorrect result");
-    }
-    return 0;
-}
deleted file mode 100644
--- a/netwerk/test/TestIOThreads.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "TestCommon.h"
-#include "nsXPCOM.h"
-#include "nsIServiceManager.h"
-#include "nsServiceManagerUtils.h"
-#include "nsIEventTarget.h"
-#include "nsCOMPtr.h"
-#include "nsNetCID.h"
-#include "mozilla/Logging.h"
-
-//
-// set NSPR_LOG_MODULES=Test:5
-//
-static PRLogModuleInfo *gTestLog = nullptr;
-#define LOG(args) MOZ_LOG(gTestLog, mozilla::LogLevel::Debug, args)
-
-class nsIOEvent : public nsIRunnable {
-public:
-    NS_DECL_THREADSAFE_ISUPPORTS
-
-    nsIOEvent(int i) : mIndex(i) {}
-
-    NS_IMETHOD Run() override {
-        LOG(("Run [%d]\n", mIndex));
-        return NS_OK;
-    }
-
-private:
-    int mIndex;
-};
-NS_IMPL_ISUPPORTS(nsIOEvent, nsIRunnable)
-
-static nsresult RunTest()
-{
-    nsresult rv;
-    nsCOMPtr<nsIEventTarget> target =
-        do_GetService(NS_STREAMTRANSPORTSERVICE_CONTRACTID, &rv);
-    if (NS_FAILED(rv))
-        return rv;
-
-    for (int i=0; i<10; ++i) {
-        nsCOMPtr<nsIRunnable> event = new nsIOEvent(i); 
-        LOG(("Dispatch %d\n", i));
-        target->Dispatch(event, NS_DISPATCH_NORMAL);
-    }
-
-    return NS_OK;
-}
-
-int main(int argc, char **argv)
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    nsresult rv;
-
-    gTestLog = PR_NewLogModule("Test");
-
-    rv = NS_InitXPCOM2(nullptr, nullptr, nullptr);
-    if (NS_FAILED(rv))
-        return rv;
-
-    rv = RunTest();
-    if (NS_FAILED(rv))
-        LOG(("RunTest failed [rv=%x]\n", rv));
-
-    LOG(("sleeping main thread for 2 seconds...\n"));
-    PR_Sleep(PR_SecondsToInterval(2));
-    
-    NS_ShutdownXPCOM(nullptr);
-    return 0;
-}
deleted file mode 100644
--- a/netwerk/test/TestIncrementalDownload.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 cin et: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include <inttypes.h>
-#include <stdlib.h>
-#include "TestCommon.h"
-#include "nsNetUtil.h"
-#include "nsComponentManagerUtils.h"
-#include "nsIIncrementalDownload.h"
-#include "nsIRequestObserver.h"
-#include "nsIProgressEventSink.h"
-#include "nsThreadUtils.h"
-#include "nsAutoPtr.h"
-#include "prprf.h"
-#include "prenv.h"
-#include "mozilla/Attributes.h"
-
-//-----------------------------------------------------------------------------
-
-class FetchObserver final : public nsIRequestObserver
-                          , public nsIProgressEventSink
-{
-  ~FetchObserver() = default;
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSIREQUESTOBSERVER
-  NS_DECL_NSIPROGRESSEVENTSINK
-};
-
-NS_IMPL_ISUPPORTS(FetchObserver, nsIRequestObserver,
-                  nsIProgressEventSink)
-
-NS_IMETHODIMP
-FetchObserver::OnStartRequest(nsIRequest *request, nsISupports *context)
-{
-  printf("FetchObserver::OnStartRequest\n");
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-FetchObserver::OnProgress(nsIRequest *request, nsISupports *context,
-                          int64_t progress, int64_t progressMax)
-{
-  printf("FetchObserver::OnProgress [%" PRId64 "/%" PRId64 "]\n",
-         progress, progressMax);
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-FetchObserver::OnStatus(nsIRequest *request, nsISupports *context,
-                        nsresult status, const char16_t *statusText)
-{
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-FetchObserver::OnStopRequest(nsIRequest *request, nsISupports *context,
-                             nsresult status)
-{
-  printf("FetchObserver::OnStopRequest [status=%x]\n",
-         static_cast<uint32_t>(status));
-
-  QuitPumpingEvents();
-  return NS_OK;
-}
-
-//-----------------------------------------------------------------------------
-
-static nsresult
-DoIncrementalFetch(const char *uriSpec, const char *resultPath, int32_t chunkSize,
-                   int32_t interval)
-{
-  nsCOMPtr<nsIFile> resultFile;
-  nsresult rv = NS_NewNativeLocalFile(nsDependentCString(resultPath),
-                                      false, getter_AddRefs(resultFile));
-  if (NS_FAILED(rv))
-    return rv;
-
-  nsCOMPtr<nsIURI> uri;
-  rv = NS_NewURI(getter_AddRefs(uri), uriSpec);
-  if (NS_FAILED(rv))
-    return rv;
-
-  nsCOMPtr<nsIRequestObserver> observer = new FetchObserver();
-  if (!observer)
-    return NS_ERROR_OUT_OF_MEMORY;
-  
-  nsCOMPtr<nsIIncrementalDownload> download =
-      do_CreateInstance(NS_INCREMENTALDOWNLOAD_CONTRACTID, &rv);
-  if (NS_FAILED(rv))
-    return rv;
-
-  rv = download->Init(uri, resultFile, chunkSize, interval);
-  if (NS_FAILED(rv))
-    return rv;
-
-  rv = download->Start(observer, nullptr);
-  if (NS_FAILED(rv))
-    return rv;
-
-  PumpEvents();
-  return NS_OK;
-}
-
-int
-main(int argc, char **argv)
-{
-  if (PR_GetEnv("MOZ_BREAK_ON_MAIN"))
-    NS_BREAK();
-
-  if (argc < 5) {
-    fprintf(stderr, "USAGE: TestIncrementalDownload <url> <file> <chunksize> <interval-in-seconds>\n");
-    return -1;
-  }
-
-  nsresult rv = NS_InitXPCOM2(nullptr, nullptr, nullptr);
-  if (NS_FAILED(rv))
-    return -1;
-
-  int32_t chunkSize = atoi(argv[3]);
-  int32_t interval = atoi(argv[4]);
-
-  rv = DoIncrementalFetch(argv[1], argv[2], chunkSize, interval);
-  if (NS_FAILED(rv))
-    fprintf(stderr, "ERROR: DoIncrementalFetch failed [%x]\n",
-            static_cast<uint32_t>(rv));
-
-  NS_ShutdownXPCOM(nullptr);
-  return 0;
-}
--- a/netwerk/test/TestNamedPipeService.cpp
+++ b/netwerk/test/TestNamedPipeService.cpp
@@ -1,15 +1,15 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "TestCommon.h"
-#include "TestHarness.h"
+#include "gtest/gtest.h"
 
 #include <Windows.h>
 
 #include "mozilla/Atomics.h"
 #include "mozilla/Monitor.h"
 #include "nsINamedPipeService.h"
 #include "nsNetCID.h"
 
@@ -58,106 +58,104 @@ nsNamedPipeDataObserver::Read(void* aBuf
   if (!ReadFile(mPipe, aBuffer, aSize, &bytesRead, &mOverlapped)) {
     switch(GetLastError()) {
       case ERROR_IO_PENDING:
         {
           MonitorAutoLock lock(mMonitor);
           mMonitor.Wait();
         }
         if (!GetOverlappedResult(mPipe, &mOverlapped, &bytesRead, FALSE)) {
-          fail("GetOverlappedResult failed");
+          ADD_FAILURE() << "GetOverlappedResult failed";
           return -1;
         }
         if (mBytesTransferred != bytesRead) {
-          fail("GetOverlappedResult mismatch");
+          ADD_FAILURE() << "GetOverlappedResult mismatch";
           return -1;
         }
 
         break;
       default:
-        fail("ReadFile error %d", GetLastError());
+        ADD_FAILURE() << "ReadFile error " << GetLastError();
         return -1;
     }
   } else {
     MonitorAutoLock lock(mMonitor);
     mMonitor.Wait();
 
     if (mBytesTransferred != bytesRead) {
-      fail("GetOverlappedResult mismatch");
+      ADD_FAILURE() << "GetOverlappedResult mismatch";
       return -1;
     }
   }
 
   mBytesTransferred = 0;
-  passed("[read] match");
   return bytesRead;
 }
 
 int
 nsNamedPipeDataObserver::Write(const void* aBuffer, uint32_t aSize)
 {
   DWORD bytesWritten = 0;
   if (!WriteFile(mPipe, aBuffer, aSize, &bytesWritten, &mOverlapped)) {
     switch(GetLastError()) {
       case ERROR_IO_PENDING:
         {
           MonitorAutoLock lock(mMonitor);
           mMonitor.Wait();
         }
         if (!GetOverlappedResult(mPipe, &mOverlapped, &bytesWritten, FALSE)) {
-          fail("GetOverlappedResult failed");
+          ADD_FAILURE() << "GetOverlappedResult failed";
           return -1;
         }
         if (mBytesTransferred != bytesWritten) {
-          fail("GetOverlappedResult mismatch");
+          ADD_FAILURE() << "GetOverlappedResult mismatch";
           return -1;
         }
 
         break;
       default:
-        fail("WriteFile error %d", GetLastError());
+        ADD_FAILURE() << "WriteFile error " << GetLastError();
         return -1;
     }
   } else {
     MonitorAutoLock lock(mMonitor);
     mMonitor.Wait();
 
     if (mBytesTransferred != bytesWritten) {
-      fail("GetOverlappedResult mismatch");
+      ADD_FAILURE() << "GetOverlappedResult mismatch";
       return -1;
     }
   }
 
   mBytesTransferred = 0;
-  passed("[write] match");
   return bytesWritten;
 }
 
 NS_IMETHODIMP
 nsNamedPipeDataObserver::OnDataAvailable(uint32_t aBytesTransferred,
                                          void *aOverlapped)
 {
   if (aOverlapped != &mOverlapped) {
-    fail("invalid overlapped object");
+    ADD_FAILURE() << "invalid overlapped object";
     return NS_ERROR_FAILURE;
   }
 
   DWORD bytesTransferred = 0;
   BOOL ret = GetOverlappedResult(mPipe,
                                  reinterpret_cast<LPOVERLAPPED>(aOverlapped),
                                  &bytesTransferred,
                                  FALSE);
 
   if (!ret) {
-    fail("GetOverlappedResult failed");
+    ADD_FAILURE() << "GetOverlappedResult failed";
     return NS_ERROR_FAILURE;
   }
 
   if (bytesTransferred != aBytesTransferred) {
-    fail("GetOverlappedResult mismatch");
+    ADD_FAILURE() << "GetOverlappedResult mismatch";
     return NS_ERROR_FAILURE;
   }
 
   mBytesTransferred += aBytesTransferred;
   MonitorAutoLock lock(mMonitor);
   mMonitor.Notify();
 
   return NS_OK;
@@ -169,166 +167,121 @@ nsNamedPipeDataObserver::OnError(uint32_
   return NS_ERROR_NOT_IMPLEMENTED;
 }
 
 BOOL CreateAndConnectInstance(LPOVERLAPPED aOverlapped, LPHANDLE aPipe);
 BOOL ConnectToNewClient(HANDLE aPipe, LPOVERLAPPED aOverlapped);
 
 BOOL CreateAndConnectInstance(LPOVERLAPPED aOverlapped, LPHANDLE aPipe)
 {
-  if (!aPipe) {
-    fail("Parameter aPipe is NULL\n");
-    return FALSE;
-  }
-
   // FIXME: adjust parameters
   *aPipe = CreateNamedPipeA(
     PIPE_NAME,
     PIPE_ACCESS_DUPLEX |
     FILE_FLAG_OVERLAPPED,
     PIPE_TYPE_MESSAGE |
     PIPE_READMODE_MESSAGE |
     PIPE_WAIT,
     1,
     65536,
     65536,
     3000,
     NULL);
 
   if (*aPipe == INVALID_HANDLE_VALUE) {
-    fail("CreateNamedPipe failed [%d]\n", GetLastError());
+    ADD_FAILURE() << "CreateNamedPipe failed " << GetLastError();
     return FALSE;
   }
 
   return ConnectToNewClient(*aPipe, aOverlapped);
 }
 
 BOOL ConnectToNewClient(HANDLE aPipe, LPOVERLAPPED aOverlapped)
 {
   if (ConnectNamedPipe(aPipe, aOverlapped)) {
-    fail("Unexpected, overlapped ConnectNamedPipe() always returns 0.\n");
+    ADD_FAILURE() << "Unexpected, overlapped ConnectNamedPipe() always returns 0.";
     return FALSE;
   }
 
   switch (GetLastError())
   {
   case ERROR_IO_PENDING:
     return TRUE;
 
   case ERROR_PIPE_CONNECTED:
     if (SetEvent(aOverlapped->hEvent))
       break;
 
   default: // error
-    fail("ConnectNamedPipe failed [%d]\n", GetLastError());
+    ADD_FAILURE() << "ConnectNamedPipe failed " << GetLastError();
     break;
   }
 
   return FALSE;
 }
 
 static nsresult
 CreateNamedPipe(LPHANDLE aServer, LPHANDLE aClient)
 {
   OVERLAPPED overlapped;
   overlapped.hEvent = CreateEvent(NULL, TRUE, TRUE, NULL);
   BOOL ret;
 
   ret = CreateAndConnectInstance(&overlapped, aServer);
   if (!ret) {
-    fail("pipe server should be pending");
+    ADD_FAILURE() << "pipe server should be pending";
     return NS_ERROR_FAILURE;
   }
 
   *aClient = CreateFileA(PIPE_NAME,
                          GENERIC_READ | GENERIC_WRITE,
                          FILE_SHARE_READ | FILE_SHARE_WRITE,
                          nullptr,
                          OPEN_EXISTING,
                          FILE_FLAG_OVERLAPPED,
                          nullptr);
 
   if (*aClient == INVALID_HANDLE_VALUE) {
-    fail("Unable to create pipe client");
+    ADD_FAILURE() << "Unable to create pipe client";
     CloseHandle(*aServer);
     return NS_ERROR_FAILURE;
   }
 
   DWORD pipeMode = PIPE_READMODE_MESSAGE;
   if (!SetNamedPipeHandleState(*aClient, &pipeMode, nullptr, nullptr)) {
-    fail("SetNamedPipeHandleState error (%d)", GetLastError());
+    ADD_FAILURE() << "SetNamedPipeHandleState error " << GetLastError();
     CloseHandle(*aServer);
     CloseHandle(*aClient);
     return NS_ERROR_FAILURE;
   }
 
   WaitForSingleObjectEx(overlapped.hEvent, INFINITE, TRUE);
 
   return NS_OK;
 }
 
-int
-main(int32_t argc, char* argv[])
+TEST(TestNamedPipeService,Test)
 {
-  ScopedXPCOM xpcom("NamedPipeService");
-  if (xpcom.failed()) {
-    fail("Unable to initalize XPCOM.");
-    return -1;
-  }
-
   nsresult rv;
   nsCOMPtr<nsINamedPipeService> svc =
     do_GetService(NS_NAMEDPIPESERVICE_CONTRACTID, &rv);
-  if (NS_FAILED(rv)) {
-    fail("Unable to create named pipe service");
-    return -1;
-  }
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
 
   HANDLE readPipe, writePipe;
-  if (NS_FAILED(rv = CreateNamedPipe(&readPipe, &writePipe))) {
-    fail("Unable to create pipes %d", GetLastError());
-    return -1;
-  }
+  rv = CreateNamedPipe(&readPipe, &writePipe);
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
 
   RefPtr<nsNamedPipeDataObserver> readObserver =
     new nsNamedPipeDataObserver(readPipe);
   RefPtr<nsNamedPipeDataObserver> writeObserver =
     new nsNamedPipeDataObserver(writePipe);
 
-  if (NS_WARN_IF(NS_FAILED(svc->AddDataObserver(readPipe, readObserver)))) {
-    fail("Unable to add read data observer");
-    return -1;
-  }
-
-  if (NS_WARN_IF(NS_FAILED(svc->AddDataObserver(writePipe, writeObserver)))) {
-    fail("Unable to add read data observer");
-    return -1;
-  }
-
-  if (writeObserver->Write(TEST_STR, sizeof(TEST_STR)) != sizeof(TEST_STR)) {
-    fail("write error");
-    return -1;
-  }
+  ASSERT_TRUE(NS_SUCCEEDED(svc->AddDataObserver(readPipe, readObserver)));
+  ASSERT_TRUE(NS_SUCCEEDED(svc->AddDataObserver(writePipe, writeObserver)));
+  ASSERT_EQ(writeObserver->Write(TEST_STR, sizeof(TEST_STR)), sizeof(TEST_STR));
 
   char buffer[sizeof(TEST_STR)];
-  if (readObserver->Read(buffer, sizeof(buffer)) != sizeof(TEST_STR)) {
-    fail("read error");
-    return -1;
-  }
-
-  if (strcmp(buffer, TEST_STR) != 0) {
-    fail("I/O mismatch");
-    return -1;
-  }
+  ASSERT_EQ(readObserver->Read(buffer, sizeof(buffer)), sizeof(TEST_STR));
+  ASSERT_STREQ(buffer, TEST_STR) << "I/O mismatch";
 
-  if (NS_WARN_IF(NS_FAILED(svc->RemoveDataObserver(readPipe, readObserver)))) {
-    fail("Unable to remove read data observer");
-    return -1;
-  }
-
-  if (NS_WARN_IF(NS_FAILED(svc->RemoveDataObserver(writePipe, writeObserver)))) {
-    fail("Unable to remove read data observer");
-    return -1;
-  }
-
-  passed("Finish");
-  return 0;
-}
\ No newline at end of file
+  ASSERT_TRUE(NS_SUCCEEDED(svc->RemoveDataObserver(readPipe, readObserver)));
+  ASSERT_TRUE(NS_SUCCEEDED(svc->RemoveDataObserver(writePipe, writeObserver)));
+}
deleted file mode 100644
--- a/netwerk/test/TestOpen.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "TestCommon.h"
-#include "nsCOMPtr.h"
-#include "nsStringAPI.h"
-#include "nsIURI.h"
-#include "nsIChannel.h"
-#include "nsIHttpChannel.h"
-#include "nsIInputStream.h"
-#include "nsNetUtil.h"
-#include "nsServiceManagerUtils.h"
-#include "mozilla/Unused.h"
-#include "nsIScriptSecurityManager.h"
-
-#include <stdio.h>
-
-using namespace mozilla;
-
-/*
- * Test synchronous Open.
- */
-
-#define RETURN_IF_FAILED(rv, what) \
-    PR_BEGIN_MACRO \
-    if (NS_FAILED(rv)) { \
-        printf(what ": failed - %08x\n", static_cast<uint32_t>(rv)); \
-        return -1; \
-    } \
-    PR_END_MACRO
-
-int
-main(int argc, char **argv)
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    nsresult rv = NS_InitXPCOM2(nullptr, nullptr, nullptr);
-    if (NS_FAILED(rv)) return -1;
-
-    char buf[256];
-
-    if (argc != 3) {
-        printf("Usage: TestOpen url filename\nLoads a URL using ::Open, writing it to a file\n");
-        return -1;
-    }
-
-    nsCOMPtr<nsIURI> uri;
-    nsCOMPtr<nsIInputStream> stream;
-
-    rv = NS_NewURI(getter_AddRefs(uri), argv[1]);
-    RETURN_IF_FAILED(rv, "NS_NewURI");
-
-    nsCOMPtr<nsIScriptSecurityManager> secman =
-      do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
-    RETURN_IF_FAILED(rv, "Couldn't get script security manager!");
-       nsCOMPtr<nsIPrincipal> systemPrincipal;
-    rv = secman->GetSystemPrincipal(getter_AddRefs(systemPrincipal));
-    RETURN_IF_FAILED(rv, "Couldn't get system principal!");
-
-    nsCOMPtr<nsIChannel> channel;
-    rv = NS_NewChannel(getter_AddRefs(channel),
-                       uri,
-                       systemPrincipal,
-                       nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL,
-                       nsIContentPolicy::TYPE_OTHER);
-    RETURN_IF_FAILED(rv, "NS_NewChannel");
-
-    rv = channel->Open2(getter_AddRefs(stream));
-    RETURN_IF_FAILED(rv, "channel->Open2()");
-
-    FILE* outfile = fopen(argv[2], "wb");
-    if (!outfile) {
-      printf("error opening %s\n", argv[2]);
-      return 1;
-    }
-
-    uint32_t read;
-    while (NS_SUCCEEDED(stream->Read(buf, sizeof(buf), &read)) && read) {
-      Unused << fwrite(buf, 1, read, outfile);
-    }
-    printf("Done\n");
-
-    fclose(outfile);
-
-    NS_ShutdownXPCOM(nullptr);
-    return 0;
-}
deleted file mode 100644
--- a/netwerk/test/TestProtocols.cpp
+++ /dev/null
@@ -1,890 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 sw=2 et cindent: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/* 
-    The TestProtocols tests the basic protocols architecture and can 
-    be used to test individual protocols as well. If this grows too
-    big then we should split it to individual protocols. 
-
-    -Gagan Saksena 04/29/99
-*/
-
-#include "TestCommon.h"
-#include <algorithm>
-
-#include <stdio.h>
-#ifdef WIN32 
-#include <windows.h>
-#endif
-#ifdef XP_UNIX
-#include <unistd.h>
-#endif
-#include "nspr.h"
-#include "nscore.h"
-#include "nsCOMPtr.h"
-#include "nsIIOService.h"
-#include "nsIServiceManager.h"
-#include "nsIStreamListener.h"
-#include "nsIInputStream.h"
-#include "nsIInputStream.h"
-#include "nsCRT.h"
-#include "nsIChannel.h"
-#include "nsIResumableChannel.h"
-#include "nsIURL.h"
-#include "nsIHttpChannel.h"
-#include "nsIHttpChannelInternal.h"
-#include "nsIHttpHeaderVisitor.h"
-#include "nsIChannelEventSink.h" 
-#include "nsIAsyncVerifyRedirectCallback.h"
-#include "nsIInterfaceRequestor.h" 
-#include "nsIInterfaceRequestorUtils.h"
-#include "nsIDNSService.h" 
-#include "nsIAuthPrompt.h"
-#include "nsIPrefService.h"
-#include "nsIPrefBranch.h"
-#include "nsIPropertyBag2.h"
-#include "nsIWritablePropertyBag2.h"
-#include "nsITimedChannel.h"
-#include "mozilla/Attributes.h"
-#include "mozilla/Unused.h"
-#include "nsIScriptSecurityManager.h"
-
-#include "nsISimpleEnumerator.h"
-#include "nsStringAPI.h"
-#include "nsNetUtil.h"
-#include "nsServiceManagerUtils.h"
-#include "NetwerkTestLogging.h"
-
-using namespace mozilla;
-
-namespace TestProtocols {
-
-//
-// set NSPR_LOG_MODULES=Test:5
-//
-static PRLogModuleInfo *gTestLog = nullptr;
-#define LOG(args) MOZ_LOG(gTestLog, mozilla::LogLevel::Debug, args)
-
-static NS_DEFINE_CID(kIOServiceCID,              NS_IOSERVICE_CID);
-
-//static PRTime gElapsedTime; // enable when we time it...
-static int gKeepRunning = 0;
-static bool gVerbose = false;
-static bool gAskUserForInput = false;
-static bool gResume = false;
-static uint64_t gStartAt = 0;
-
-static const char* gEntityID;
-
-//-----------------------------------------------------------------------------
-// Set proxy preferences for testing
-//-----------------------------------------------------------------------------
-
-static nsresult
-SetHttpProxy(const char *proxy)
-{
-  const char *colon = strchr(proxy, ':');
-  if (!colon)
-  {
-    NS_WARNING("invalid proxy token; use host:port");
-    return NS_ERROR_UNEXPECTED;
-  }
-  int port = atoi(colon + 1);
-  if (port == 0)
-  {
-    NS_WARNING("invalid proxy port; must be an integer");
-    return NS_ERROR_UNEXPECTED;
-  }
-  nsAutoCString proxyHost;
-  proxyHost = Substring(proxy, colon);
-
-  nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
-  if (prefs)
-  {
-    prefs->SetCharPref("network.proxy.http", proxyHost.get());
-    prefs->SetIntPref("network.proxy.http_port", port);
-    prefs->SetIntPref("network.proxy.type", 1); // manual proxy config
-  }
-  LOG(("connecting via proxy=%s:%d\n", proxyHost.get(), port));
-  return NS_OK;
-}
-
-static nsresult
-SetPACFile(const char* pacURL)
-{
-  nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
-  if (prefs)
-  {
-    prefs->SetCharPref("network.proxy.autoconfig_url", pacURL);
-    prefs->SetIntPref("network.proxy.type", 2); // PAC file
-  }
-  LOG(("connecting using PAC file %s\n", pacURL));
-  return NS_OK;
-}
-
-//-----------------------------------------------------------------------------
-// Timing information
-//-----------------------------------------------------------------------------
-
-void PrintTimingInformation(nsITimedChannel* channel) {
-#define PRINT_VALUE(property)                                              \
-    {                                                                      \
-        PRTime value;                                                      \
-        channel->Get##property(&value);                                    \
-        if (value) {                                                       \
-          PRExplodedTime exploded;                                         \
-          PR_ExplodeTime(value, PR_LocalTimeParameters, &exploded);        \
-          char buf[256];                                                   \
-          PR_FormatTime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &exploded); \
-          LOG(("  " #property ":\t%s (%i usec)", buf, exploded.tm_usec));  \
-        } else {                                                           \
-          LOG(("  " #property ":\t0"));                                    \
-        }                                                                  \
-    }
-    LOG(("Timing data:"));
-    PRINT_VALUE(ChannelCreationTime)
-    PRINT_VALUE(AsyncOpenTime)
-    PRINT_VALUE(DomainLookupStartTime)
-    PRINT_VALUE(DomainLookupEndTime)
-    PRINT_VALUE(ConnectStartTime)
-    PRINT_VALUE(ConnectEndTime)
-    PRINT_VALUE(RequestStartTime)
-    PRINT_VALUE(ResponseStartTime)
-    PRINT_VALUE(ResponseEndTime)
-    PRINT_VALUE(CacheReadStartTime)
-    PRINT_VALUE(CacheReadEndTime)
-}
-
-//-----------------------------------------------------------------------------
-// HeaderVisitor
-//-----------------------------------------------------------------------------
-
-class HeaderVisitor : public nsIHttpHeaderVisitor
-{
-  virtual ~HeaderVisitor() = default;
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSIHTTPHEADERVISITOR
-
-  HeaderVisitor() { }
-};
-NS_IMPL_ISUPPORTS(HeaderVisitor, nsIHttpHeaderVisitor)
-
-NS_IMETHODIMP
-HeaderVisitor::VisitHeader(const nsACString &header, const nsACString &value)
-{
-  LOG(("  %s: %s\n",
-    PromiseFlatCString(header).get(),
-    PromiseFlatCString(value).get()));
-  return NS_OK;
-}
-
-//-----------------------------------------------------------------------------
-// URLLoadInfo
-//-----------------------------------------------------------------------------
-
-class URLLoadInfo : public nsISupports
-{
-  virtual ~URLLoadInfo();
-
-public:
-
-  explicit URLLoadInfo(const char* aUrl);
-
-  // ISupports interface...
-  NS_DECL_THREADSAFE_ISUPPORTS
-
-  const char* Name() { return mURLString.get(); }
-  int64_t   mBytesRead;
-  PRTime    mTotalTime;
-  PRTime    mConnectTime;
-  nsCString mURLString;
-};
-
-URLLoadInfo::URLLoadInfo(const char *aUrl) : mURLString(aUrl)
-{
-  mBytesRead = 0;
-  mConnectTime = mTotalTime = PR_Now();
-}
-
-URLLoadInfo::~URLLoadInfo() = default;
-
-
-NS_IMPL_ISUPPORTS0(URLLoadInfo)
-
-//-----------------------------------------------------------------------------
-// TestChannelEventSink
-//-----------------------------------------------------------------------------
-
-class TestChannelEventSink : public nsIChannelEventSink
-{
-  virtual ~TestChannelEventSink();
-
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSICHANNELEVENTSINK
-
-  TestChannelEventSink();
-};
-
-TestChannelEventSink::TestChannelEventSink()
-{
-}
-
-TestChannelEventSink::~TestChannelEventSink() = default;
-
-
-NS_IMPL_ISUPPORTS(TestChannelEventSink, nsIChannelEventSink)
-
-NS_IMETHODIMP
-TestChannelEventSink::AsyncOnChannelRedirect(nsIChannel *channel,
-                                             nsIChannel *newChannel,
-                                             uint32_t flags,
-                                             nsIAsyncVerifyRedirectCallback *callback)
-{
-    LOG(("\n+++ TestChannelEventSink::OnChannelRedirect (with flags %x) +++\n",
-         flags));
-    callback->OnRedirectVerifyCallback(NS_OK);
-    return NS_OK;
-}
-
-//-----------------------------------------------------------------------------
-// TestAuthPrompt
-//-----------------------------------------------------------------------------
-
-class TestAuthPrompt : public nsIAuthPrompt
-{
-  virtual ~TestAuthPrompt();
-
-public:
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSIAUTHPROMPT
-
-  TestAuthPrompt();
-};
-
-NS_IMPL_ISUPPORTS(TestAuthPrompt, nsIAuthPrompt)
-
-TestAuthPrompt::TestAuthPrompt()
-{
-}
-
-TestAuthPrompt::~TestAuthPrompt() = default;
-
-NS_IMETHODIMP
-TestAuthPrompt::Prompt(const char16_t *dialogTitle,
-                       const char16_t *text,
-                       const char16_t *passwordRealm,
-                       uint32_t savePassword,
-                       const char16_t *defaultText,
-                       char16_t **result,
-                       bool *_retval)
-{
-    *_retval = false;
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-NS_IMETHODIMP
-TestAuthPrompt::PromptUsernameAndPassword(const char16_t *dialogTitle,
-                                          const char16_t *dialogText,
-                                          const char16_t *passwordRealm,
-                                          uint32_t savePassword,
-                                          char16_t **user,
-                                          char16_t **pwd,
-                                          bool *_retval)
-{
-    NS_ConvertUTF16toUTF8 text(passwordRealm);
-    printf("* --------------------------------------------------------------------------- *\n");
-    printf("* Authentication Required [%s]\n", text.get());
-    printf("* --------------------------------------------------------------------------- *\n");
-
-    char buf[256];
-    int n;
-
-    printf("Enter username: ");
-    Unused << fgets(buf, sizeof(buf), stdin);
-    n = strlen(buf);
-    buf[n-1] = '\0'; // trim trailing newline
-    *user = NS_StringCloneData(NS_ConvertUTF8toUTF16(buf));
-
-    const char *p;
-#if defined(XP_UNIX) && !defined(ANDROID)
-    p = getpass("Enter password: ");
-#else
-    printf("Enter password: ");
-    fgets(buf, sizeof(buf), stdin);
-    n = strlen(buf);
-    buf[n-1] = '\0'; // trim trailing newline
-    p = buf;
-#endif
-    *pwd = NS_StringCloneData(NS_ConvertUTF8toUTF16(p));
-
-    // zap buf 
-    memset(buf, 0, sizeof(buf));
-
-    *_retval = true;
-    return NS_OK;
-}
-
-NS_IMETHODIMP
-TestAuthPrompt::PromptPassword(const char16_t *dialogTitle,
-                               const char16_t *text,
-                               const char16_t *passwordRealm,
-                               uint32_t savePassword,
-                               char16_t **pwd,
-                               bool *_retval)
-{
-    *_retval = false;
-    return NS_ERROR_NOT_IMPLEMENTED;
-}
-
-//-----------------------------------------------------------------------------
-// InputTestConsumer
-//-----------------------------------------------------------------------------
-
-class InputTestConsumer : public nsIStreamListener
-{
-  virtual ~InputTestConsumer();
-
-public:
-
-  explicit InputTestConsumer(URLLoadInfo* aURLLoadInfo);
-
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSIREQUESTOBSERVER
-  NS_DECL_NSISTREAMLISTENER
-private:
-  URLLoadInfo* mURLLoadInfo;
-};
-
-InputTestConsumer::InputTestConsumer(URLLoadInfo* aURLLoadInfo)
-: mURLLoadInfo(aURLLoadInfo)
-{
-  NS_IF_ADDREF(mURLLoadInfo);
-}
-
-InputTestConsumer::~InputTestConsumer()
-{
-  NS_RELEASE(mURLLoadInfo);
-}
-
-NS_IMPL_ISUPPORTS(InputTestConsumer, nsIStreamListener, nsIRequestObserver)
-
-NS_IMETHODIMP
-InputTestConsumer::OnStartRequest(nsIRequest *request, nsISupports* context)
-{
-  LOG(("InputTestConsumer::OnStartRequest\n"));
-
-  NS_ASSERTION(!context, "context needs to be null when calling asyncOpen2");
-
-  if (mURLLoadInfo)
-    mURLLoadInfo->mConnectTime = PR_Now() - mURLLoadInfo->mConnectTime;
-
-  if (gVerbose) {
-    LOG(("\nStarted loading: %s\n", mURLLoadInfo ? mURLLoadInfo->Name() : "UNKNOWN URL"));
-  }
-
-  nsAutoCString value;
-
-  nsCOMPtr<nsIChannel> channel = do_QueryInterface(request);
-  if (channel) {
-    nsresult status;
-    channel->GetStatus(&status);
-    LOG(("Channel Status: %08x\n", status));
-    if (NS_SUCCEEDED(status)) {
-      LOG(("Channel Info:\n"));
-
-      channel->GetName(value);
-      LOG(("\tName: %s\n", value.get()));
-
-      channel->GetContentType(value);
-      LOG(("\tContent-Type: %s\n", value.get()));
-
-      channel->GetContentCharset(value);
-      LOG(("\tContent-Charset: %s\n", value.get()));
-
-      int64_t length = -1;
-      if (NS_SUCCEEDED(channel->GetContentLength(&length))) {
-        LOG(("\tContent-Length: %lld\n", length));
-      } else {
-        LOG(("\tContent-Length: Unknown\n"));
-      }
-    }
-
-    nsCOMPtr<nsISupports> owner;
-    channel->GetOwner(getter_AddRefs(owner));
-    LOG(("\tChannel Owner: %x\n", owner.get()));
-  }
-
-  nsCOMPtr<nsIPropertyBag2> props = do_QueryInterface(request);
-  if (props) {
-      nsCOMPtr<nsIURI> foo;
-      props->GetPropertyAsInterface(NS_LITERAL_STRING("test.foo"),
-                                    NS_GET_IID(nsIURI),
-                                    getter_AddRefs(foo));
-      if (foo) {
-          LOG(("\ttest.foo: %s\n", foo->GetSpecOrDefault().get()));
-      }
-  }
-
-  nsCOMPtr<nsIHttpChannelInternal> httpChannelInt(do_QueryInterface(request));
-  if (httpChannelInt) {
-      uint32_t majorVer, minorVer;
-      nsresult rv = httpChannelInt->GetResponseVersion(&majorVer, &minorVer);
-      if (NS_SUCCEEDED(rv)) {
-          LOG(("HTTP Response version: %u.%u\n", majorVer, minorVer));
-      }
-  }
-  nsCOMPtr<nsIHttpChannel> httpChannel(do_QueryInterface(request));
-  if (httpChannel) {
-    auto *visitor = new HeaderVisitor();
-    if (!visitor)
-      return NS_ERROR_OUT_OF_MEMORY;
-    NS_ADDREF(visitor);
-
-    LOG(("HTTP request headers:\n"));
-    httpChannel->VisitRequestHeaders(visitor);
-
-    LOG(("HTTP response headers:\n"));
-    httpChannel->VisitResponseHeaders(visitor);
-
-    NS_RELEASE(visitor);
-  }
-
-  nsCOMPtr<nsIResumableChannel> resChannel = do_QueryInterface(request);
-  if (resChannel) {
-      LOG(("Resumable entity identification:\n"));
-      nsAutoCString entityID;
-      nsresult rv = resChannel->GetEntityID(entityID);
-      if (NS_SUCCEEDED(rv)) {
-          LOG(("\t|%s|\n", entityID.get()));
-      }
-      else {
-          LOG(("\t<none>\n"));
-      }
-  }
-
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-InputTestConsumer::OnDataAvailable(nsIRequest *request, 
-                                   nsISupports* context,
-                                   nsIInputStream *aIStream, 
-                                   uint64_t aSourceOffset,
-                                   uint32_t aLength)
-{
-  NS_ASSERTION(!context, "context needs to be null when calling asyncOpen2");
-
-  char buf[1025];
-  uint32_t amt, size;
-  nsresult rv;
-
-  while (aLength) {
-    size = std::min<uint32_t>(aLength, sizeof(buf));
-
-    rv = aIStream->Read(buf, size, &amt);
-    if (NS_FAILED(rv)) {
-      NS_ASSERTION((NS_BASE_STREAM_WOULD_BLOCK != rv), 
-                   "The stream should never block.");
-      return rv;
-    }
-    if (gVerbose) {
-      buf[amt] = '\0';
-      puts(buf);
-    }
-    if (mURLLoadInfo) {
-      mURLLoadInfo->mBytesRead += amt;
-    }
-
-    aLength -= amt;
-  }
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-InputTestConsumer::OnStopRequest(nsIRequest *request, nsISupports* context,
-                                 nsresult aStatus)
-{
-  LOG(("InputTestConsumer::OnStopRequest [status=%x]\n", aStatus));
-
-  if (mURLLoadInfo) {
-    uint32_t httpStatus;
-    bool bHTTPURL = false;
-
-    mURLLoadInfo->mTotalTime = PR_Now() - mURLLoadInfo->mTotalTime;
-
-    double readTime = ((mURLLoadInfo->mTotalTime-mURLLoadInfo->mConnectTime)/1000.0)/1000.0;
-
-    nsCOMPtr<nsIHttpChannel> pHTTPCon(do_QueryInterface(request));
-    if (pHTTPCon) {
-        pHTTPCon->GetResponseStatus(&httpStatus);
-        bHTTPURL = true;
-    }
-
-    LOG(("\nFinished loading: %s  Status Code: %x\n", mURLLoadInfo->Name(), aStatus));
-    if (bHTTPURL) {
-      LOG(("\tHTTP Status: %u\n", httpStatus));
-    }
-    if (NS_ERROR_UNKNOWN_HOST == aStatus ||
-        NS_ERROR_UNKNOWN_PROXY_HOST == aStatus) {
-      LOG(("\tDNS lookup failed.\n"));
-    }
-    LOG(("\tTime to connect: %.3f seconds\n", (mURLLoadInfo->mConnectTime/1000.0)/1000.0));
-    LOG(("\tTime to read: %.3f seconds.\n", readTime));
-    LOG(("\tRead: %lld bytes.\n", mURLLoadInfo->mBytesRead));
-    if (mURLLoadInfo->mBytesRead == int64_t(0)) {
-    } else if (readTime > 0.0) {
-      LOG(("\tThroughput: %.0f bps.\n", (double)(mURLLoadInfo->mBytesRead*int64_t(8))/readTime));
-    } else {
-      LOG(("\tThroughput: REAL FAST!!\n"));
-    }
-
-    nsCOMPtr<nsITimedChannel> timed(do_QueryInterface(request));
-    if (timed)
-        PrintTimingInformation(timed);
-  } else {
-    LOG(("\nFinished loading: UNKNOWN URL. Status Code: %x\n", aStatus));
-  }
-
-  if (--gKeepRunning == 0)
-    QuitPumpingEvents();
-  return NS_OK;
-}
-
-//-----------------------------------------------------------------------------
-// NotificationCallbacks
-//-----------------------------------------------------------------------------
-
-class NotificationCallbacks final : public nsIInterfaceRequestor {
-
-    ~NotificationCallbacks() = default;
-
-public:
-    NS_DECL_ISUPPORTS
-
-    NotificationCallbacks() {
-    }
-
-    NS_IMETHOD GetInterface(const nsIID& iid, void* *result) override {
-        nsresult rv = NS_ERROR_FAILURE;
-
-        if (iid.Equals(NS_GET_IID(nsIChannelEventSink))) {
-          TestChannelEventSink *sink;
-
-          sink = new TestChannelEventSink();
-          if (sink == nullptr)
-            return NS_ERROR_OUT_OF_MEMORY;
-          NS_ADDREF(sink);
-          rv = sink->QueryInterface(iid, result);
-          NS_RELEASE(sink);
-        }
-
-        if (iid.Equals(NS_GET_IID(nsIAuthPrompt))) {
-          TestAuthPrompt *prompt;
-
-          prompt = new TestAuthPrompt();
-          if (prompt == nullptr)
-            return NS_ERROR_OUT_OF_MEMORY;
-          NS_ADDREF(prompt);
-          rv = prompt->QueryInterface(iid, result);
-          NS_RELEASE(prompt);
-        }
-        return rv;
-    }
-};
-
-NS_IMPL_ISUPPORTS(NotificationCallbacks, nsIInterfaceRequestor)
-
-//-----------------------------------------------------------------------------
-// helpers...
-//-----------------------------------------------------------------------------
-
-nsresult StartLoadingURL(const char* aUrlString)
-{
-    nsresult rv;
-
-    nsCOMPtr<nsIIOService> pService(do_GetService(kIOServiceCID, &rv));
-    if (pService) {
-        nsCOMPtr<nsIURI> pURL;
-
-        rv = pService->NewURI(nsDependentCString(aUrlString), nullptr, nullptr, getter_AddRefs(pURL));
-        if (NS_FAILED(rv)) {
-            LOG(("ERROR: NewURI failed for %s [rv=%x]\n", aUrlString));
-            return rv;
-        }
-        nsCOMPtr<nsIChannel> pChannel;
-
-        auto* callbacks = new NotificationCallbacks();
-        if (!callbacks) {
-            LOG(("Failed to create a new consumer!"));
-            return NS_ERROR_OUT_OF_MEMORY;;
-        }
-        NS_ADDREF(callbacks);
-
-        nsCOMPtr<nsIScriptSecurityManager> secman =
-          do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
-        NS_ENSURE_SUCCESS(rv, rv);
-           nsCOMPtr<nsIPrincipal> systemPrincipal;
-        rv = secman->GetSystemPrincipal(getter_AddRefs(systemPrincipal));
-        NS_ENSURE_SUCCESS(rv, rv);
-
-        // Async reading thru the calls of the event sink interface
-        rv = NS_NewChannel(getter_AddRefs(pChannel),
-                           pURL,
-                           systemPrincipal,
-                           nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL,
-                           nsIContentPolicy::TYPE_OTHER,
-                           nullptr,  // loadGroup
-                           callbacks,
-                           nsIRequest::LOAD_NORMAL,
-                           pService);
-
-        NS_RELEASE(callbacks);
-        if (NS_FAILED(rv)) {
-            LOG(("ERROR: NS_NewChannel failed for %s [rv=%x]\n", aUrlString, rv));
-            return rv;
-        }
-
-        nsCOMPtr<nsITimedChannel> timed(do_QueryInterface(pChannel));
-        if (timed)
-            timed->SetTimingEnabled(true);
-
-        nsCOMPtr<nsIWritablePropertyBag2> props = do_QueryInterface(pChannel);
-        if (props) {
-            rv = props->SetPropertyAsInterface(NS_LITERAL_STRING("test.foo"),
-                                               pURL);
-            if (NS_SUCCEEDED(rv)) {
-                LOG(("set prop 'test.foo'\n"));
-            }
-        }
-
-        /* 
-           You may optionally add/set other headers on this
-           request object. This is done by QI for the specific
-           protocolConnection.
-        */
-        nsCOMPtr<nsIHttpChannel> pHTTPCon(do_QueryInterface(pChannel));
-
-        if (pHTTPCon) {
-            // Setting a sample header.
-            rv = pHTTPCon->SetRequestHeader(NS_LITERAL_CSTRING("sample-header"),
-                                            NS_LITERAL_CSTRING("Sample-Value"),
-                                            false);
-            if (NS_FAILED(rv)) return rv;
-        }            
-        auto* info = new URLLoadInfo(aUrlString);
-        if (!info) {
-            NS_ERROR("Failed to create a load info!");
-            return NS_ERROR_OUT_OF_MEMORY;
-        }
-
-        auto* listener = new InputTestConsumer(info);
-        NS_IF_ADDREF(listener);
-        if (!listener) {
-            NS_ERROR("Failed to create a new stream listener!");
-            return NS_ERROR_OUT_OF_MEMORY;;
-        }
-
-
-        if (gResume) {
-            nsCOMPtr<nsIResumableChannel> res = do_QueryInterface(pChannel);
-            if (!res) {
-                NS_ERROR("Channel is not resumable!");
-                return NS_ERROR_UNEXPECTED;
-            }
-            nsAutoCString id;
-            if (gEntityID)
-                id = gEntityID;
-            LOG(("* resuming at %llu bytes, with entity id |%s|\n", gStartAt, id.get()));
-            res->ResumeAt(gStartAt, id);
-        }
-        rv = pChannel->AsyncOpen2(listener);
-
-        if (NS_SUCCEEDED(rv)) {
-            gKeepRunning++;
-        }
-        else {
-            LOG(("ERROR: AsyncOpen failed [rv=%x]\n", rv));
-        }
-        NS_RELEASE(listener);
-    }
-
-    return rv;
-}
-
-static int32_t
-FindChar(nsCString& buffer, char c)
-{
-    const char *b;
-    int32_t len = NS_CStringGetData(buffer, &b);
-
-    for (int32_t offset = 0; offset < len; ++offset) {
-        if (b[offset] == c)
-            return offset;
-    }
-
-    return -1;
-}
-        
-
-static void
-StripChar(nsCString& buffer, char c)
-{
-    const char *b;
-    uint32_t len = NS_CStringGetData(buffer, &b) - 1;
-
-    for (; len > 0; --len) {
-        if (b[len] == c) {
-            buffer.Cut(len, 1);
-            NS_CStringGetData(buffer, &b);
-        }
-    }
-}
-
-nsresult LoadURLsFromFile(char *aFileName)
-{
-    nsresult rv = NS_OK;
-    int32_t len, offset;
-    PRFileDesc* fd;
-    char buffer[1024];
-    nsCString fileBuffer;
-    nsCString urlString;
-
-    fd = PR_Open(aFileName, PR_RDONLY, 777);
-    if (!fd) {
-        return NS_ERROR_FAILURE;
-    }
-
-    // Keep reading the file until EOF (or an error) is reached...        
-    do {
-        len = PR_Read(fd, buffer, sizeof(buffer));
-        if (len>0) {
-            fileBuffer.Append(buffer, len);
-            // Treat each line as a URL...
-            while ((offset = FindChar(fileBuffer, '\n')) != -1) {
-                urlString = StringHead(fileBuffer, offset);
-                fileBuffer.Cut(0, offset+1);
-
-                StripChar(urlString, '\r');
-                if (urlString.Length()) {
-                    LOG(("\t%s\n", urlString.get()));
-                    rv = StartLoadingURL(urlString.get());
-                    if (NS_FAILED(rv)) {
-                        // No need to log an error -- StartLoadingURL already
-                        // did that for us, probably.
-                        PR_Close(fd);
-                        return rv;
-                    }
-                }
-            }
-        }
-    } while (len>0);
-
-    // If anything is left in the fileBuffer, treat it as a URL...
-    StripChar(fileBuffer, '\r');
-    if (fileBuffer.Length()) {
-        LOG(("\t%s\n", fileBuffer.get()));
-        StartLoadingURL(fileBuffer.get());
-    }
-
-    PR_Close(fd);
-    return NS_OK;
-}
-
-
-nsresult LoadURLFromConsole()
-{
-    char buffer[1024];
-    printf(R"(Enter URL ("q" to start): )");
-    Unused << scanf("%s", buffer);
-    if (buffer[0]=='q') 
-        gAskUserForInput = false;
-    else
-        StartLoadingURL(buffer);
-    return NS_OK;
-}
-
-} // namespace TestProtocols
-
-using namespace TestProtocols;
-
-int
-main(int argc, char* argv[])
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    nsresult rv= (nsresult)-1;
-    if (argc < 2) {
-        printf("usage: %s [-verbose] [-file <name>] [-resume <startoffset>"
-               "[-entityid <entityid>]] [-proxy <proxy>] [-pac <pacURL>]"
-               "[-console] <url> <url> ... \n", argv[0]);
-        return -1;
-    }
-
-    gTestLog = PR_NewLogModule("Test");
-
-    /* 
-      The following code only deals with XPCOM registration stuff. and setting
-      up the event queues. Copied from TestSocketIO.cpp
-    */
-
-    rv = NS_InitXPCOM2(nullptr, nullptr, nullptr);
-    if (NS_FAILED(rv)) return -1;
-
-    {
-        int i;
-        LOG(("Trying to load:\n"));
-        for (i=1; i<argc; i++) {
-            // Turn on verbose printing...
-            if (PL_strcasecmp(argv[i], "-verbose") == 0) {
-                gVerbose = true;
-                continue;
-            }
-
-            // Turn on netlib tracing...
-            if (PL_strcasecmp(argv[i], "-file") == 0) {
-                LoadURLsFromFile(argv[++i]);
-                continue;
-            }
-
-            if (PL_strcasecmp(argv[i], "-console") == 0) {
-                gAskUserForInput = true;
-                continue;
-            }
-
-            if (PL_strcasecmp(argv[i], "-resume") == 0) {
-                gResume = true;
-                PR_sscanf(argv[++i], "%llu", &gStartAt);
-                continue;
-            }
-
-            if (PL_strcasecmp(argv[i], "-entityid") == 0) {
-                gEntityID = argv[++i];
-                continue;
-            }
-
-            if (PL_strcasecmp(argv[i], "-proxy") == 0) {
-                SetHttpProxy(argv[++i]);
-                continue;
-            }
-
-            if (PL_strcasecmp(argv[i], "-pac") == 0) {
-                SetPACFile(argv[++i]);
-                continue;
-            }
-
-            LOG(("\t%s\n", argv[i]));
-            rv = StartLoadingURL(argv[i]);
-        }
-        // Enter the message pump to allow the URL load to proceed.
-        PumpEvents();
-    } // this scopes the nsCOMPtrs
-    // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM
-    NS_ShutdownXPCOM(nullptr);
-    return NS_FAILED(rv) ? -1 : 0;
-}
deleted file mode 100644
--- a/netwerk/test/TestServ.cpp
+++ /dev/null
@@ -1,146 +0,0 @@
-/* vim:set ts=4 sw=4 et cindent: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "TestCommon.h"
-#include <stdlib.h>
-#include "nsIServiceManager.h"
-#include "nsIServerSocket.h"
-#include "nsISocketTransport.h"
-#include "nsIInputStream.h"
-#include "nsIOutputStream.h"
-#include "nsNetCID.h"
-#include "nsComponentManagerUtils.h"
-#include "nsStringAPI.h"
-#include "nsCOMPtr.h"
-#include "NetwerkTestLogging.h"
-
-//
-// set NSPR_LOG_MODULES=Test:5
-//
-static PRLogModuleInfo *gTestLog = nullptr;
-#define LOG(args) MOZ_LOG(gTestLog, mozilla::LogLevel::Debug, args)
-
-class MySocketListener : public nsIServerSocketListener
-{
-protected:
-    virtual ~MySocketListener() = default;
-
-public:
-    NS_DECL_THREADSAFE_ISUPPORTS
-    NS_DECL_NSISERVERSOCKETLISTENER
-
-    MySocketListener() {}
-};
-
-NS_IMPL_ISUPPORTS(MySocketListener, nsIServerSocketListener)
-
-NS_IMETHODIMP
-MySocketListener::OnSocketAccepted(nsIServerSocket *serv,
-                                   nsISocketTransport *trans)
-{
-    LOG(("MySocketListener::OnSocketAccepted [serv=%p trans=%p]\n", serv, trans));
-
-    nsAutoCString host;
-    int32_t port;
-
-    trans->GetHost(host);
-    trans->GetPort(&port);
-
-    LOG(("  -> %s:%d\n", host.get(), port));
-
-    nsCOMPtr<nsIInputStream> input;
-    nsCOMPtr<nsIOutputStream> output;
-    nsresult rv;
-
-    rv = trans->OpenInputStream(nsITransport::OPEN_BLOCKING, 0, 0, getter_AddRefs(input));
-    if (NS_FAILED(rv))
-        return rv;
-
-    rv = trans->OpenOutputStream(nsITransport::OPEN_BLOCKING, 0, 0, getter_AddRefs(output));
-    if (NS_FAILED(rv))
-        return rv;
-
-    char buf[256];
-    uint32_t n;
-
-    rv = input->Read(buf, sizeof(buf), &n);
-    if (NS_FAILED(rv))
-        return rv;
-
-    const char response[] = "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n\r\nFooooopy!!\r\n";
-    rv = output->Write(response, sizeof(response) - 1, &n);
-    if (NS_FAILED(rv))
-        return rv;
-
-    input->Close();
-    output->Close();
-    return NS_OK;
-}
-
-NS_IMETHODIMP
-MySocketListener::OnStopListening(nsIServerSocket *serv, nsresult status)
-{
-    LOG(("MySocketListener::OnStopListening [serv=%p status=%x]\n", serv, status));
-    QuitPumpingEvents();
-    return NS_OK;
-}
-
-static nsresult
-MakeServer(int32_t port)
-{
-    nsresult rv;
-    nsCOMPtr<nsIServerSocket> serv = do_CreateInstance(NS_SERVERSOCKET_CONTRACTID, &rv);
-    if (NS_FAILED(rv))
-        return rv;
-
-    rv = serv->Init(port, true, 5);
-    if (NS_FAILED(rv))
-        return rv;
-
-    rv = serv->GetPort(&port);
-    if (NS_FAILED(rv))
-        return rv;
-    LOG(("  listening on port %d\n", port));
-
-    rv = serv->AsyncListen(new MySocketListener());
-    return rv;
-}
-
-int
-main(int argc, char* argv[])
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    nsresult rv= (nsresult)-1;
-    if (argc < 2) {
-        printf("usage: %s <port>\n", argv[0]);
-        return -1;
-    }
-
-    gTestLog = PR_NewLogModule("Test");
-
-    /* 
-     * The following code only deals with XPCOM registration stuff. and setting
-     * up the event queues. Copied from TestSocketIO.cpp
-     */
-
-    rv = NS_InitXPCOM2(nullptr, nullptr, nullptr);
-    if (NS_FAILED(rv)) return -1;
-
-    {
-        rv = MakeServer(atoi(argv[1]));
-        if (NS_FAILED(rv)) {
-            LOG(("MakeServer failed [rv=%x]\n", rv));
-            return -1;
-        }
-
-        // Enter the message pump to allow the URL load to proceed.
-        PumpEvents();
-    } // this scopes the nsCOMPtrs
-    // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM
-    NS_ShutdownXPCOM(nullptr);
-    return 0;
-}
deleted file mode 100644
--- a/netwerk/test/TestSocketTransport.cpp
+++ /dev/null
@@ -1,307 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "TestCommon.h"
-#include "nsIComponentRegistrar.h"
-#include "nsPISocketTransportService.h"
-#include "nsISocketTransport.h"
-#include "nsIAsyncInputStream.h"
-#include "nsIAsyncOutputStream.h"
-#include "nsIProgressEventSink.h"
-#include "nsIInterfaceRequestor.h"
-#include "nsIInterfaceRequestorUtils.h"
-#include "nsIRequest.h"
-#include "nsIServiceManager.h"
-#include "nsIComponentManager.h"
-#include "nsCOMPtr.h"
-#include "nsMemory.h"
-#include "nsStringAPI.h"
-#include "nsIDNSService.h"
-#include "nsIFileStreams.h"
-#include "nsIStreamListener.h"
-#include "nsIFile.h"
-#include "nsAutoLock.h"
-#include "mozilla/Logging.h"
-
-////////////////////////////////////////////////////////////////////////////////
-
-//
-// set NSPR_LOG_MODULES=Test:5
-//
-static PRLogModuleInfo *gTestLog = nullptr;
-#define LOG(args) MOZ_LOG(gTestLog, mozilla::LogLevel::Debug, args)
-
-////////////////////////////////////////////////////////////////////////////////
-
-static NS_DEFINE_CID(kSocketTransportServiceCID, NS_SOCKETTRANSPORTSERVICE_CID);
-
-////////////////////////////////////////////////////////////////////////////////
-
-class MyHandler : public nsIOutputStreamCallback
-                , public nsIInputStreamCallback
-{
-public:
-    NS_DECL_THREADSAFE_ISUPPORTS
-
-    MyHandler(const char *path,
-              nsIAsyncInputStream *in,
-              nsIAsyncOutputStream *out)
-        : mInput(in)
-        , mOutput(out)
-        , mWriteOffset(0)
-        {
-            mBuf.AssignLiteral("GET ");
-            mBuf.Append(path);
-            mBuf.AppendLiteral(" HTTP/1.0\r\n\r\n");
-        }
-    virtual ~MyHandler() {}
-
-    // called on any thread
-    NS_IMETHOD OnOutputStreamReady(nsIAsyncOutputStream *out)
-    {
-        LOG(("OnOutputStreamReady\n"));
-
-        nsresult rv;
-        uint32_t n, count = mBuf.Length() - mWriteOffset;
-
-        rv = out->Write(mBuf.get() + mWriteOffset, count, &n);
-
-        LOG(("  write returned [rv=%x count=%u]\n", rv, n));
-
-        if (NS_FAILED(rv) || (n == 0)) {
-            if (rv != NS_BASE_STREAM_WOULD_BLOCK) {
-                LOG(("  done writing; starting to read\n"));
-                mInput->AsyncWait(this, 0, 0, nullptr);
-                return NS_OK;
-            }
-        }
-
-        mWriteOffset += n;
-
-        return out->AsyncWait(this, 0, 0, nullptr);
-    }
-
-    // called on any thread
-    NS_IMETHOD OnInputStreamReady(nsIAsyncInputStream *in)
-    {
-        LOG(("OnInputStreamReady\n"));
-
-        nsresult rv;
-        uint32_t n;
-        char buf[500];
-
-        rv = in->Read(buf, sizeof(buf), &n);
-
-        LOG(("  read returned [rv=%x count=%u]\n", rv, n));
-
-        if (NS_FAILED(rv) || (n == 0)) {
-            if (rv != NS_BASE_STREAM_WOULD_BLOCK) {
-                QuitPumpingEvents();
-                return NS_OK;
-            }
-        }
-
-        return in->AsyncWait(this, 0, 0, nullptr);
-    }
-
-private:
-    nsCOMPtr<nsIAsyncInputStream>  mInput;
-    nsCOMPtr<nsIAsyncOutputStream> mOutput;
-    nsCString mBuf;
-    uint32_t  mWriteOffset;
-};
-
-NS_IMPL_ISUPPORTS(MyHandler,
-                  nsIOutputStreamCallback,
-                  nsIInputStreamCallback)
-
-////////////////////////////////////////////////////////////////////////////////
-
-/**
- * create transport, open streams, and close
- */
-static nsresult
-RunCloseTest(nsISocketTransportService *sts,
-             const char *host, int port,
-             uint32_t inFlags, uint32_t outFlags)
-{
-    nsresult rv;
-
-    LOG(("RunCloseTest\n"));
-
-    nsCOMPtr<nsISocketTransport> transport;
-    rv = sts->CreateTransport(nullptr, 0,
-                              nsDependentCString(host), port, nullptr,
-                              getter_AddRefs(transport));
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsIInputStream> in;
-    rv = transport->OpenInputStream(inFlags, 0, 0, getter_AddRefs(in));
-    nsCOMPtr<nsIAsyncInputStream> asyncIn = do_QueryInterface(in, &rv);
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsIOutputStream> out;
-    rv = transport->OpenOutputStream(outFlags, 0, 0, getter_AddRefs(out));
-    nsCOMPtr<nsIAsyncOutputStream> asyncOut = do_QueryInterface(out, &rv);
-    if (NS_FAILED(rv)) return rv;
-
-    LOG(("waiting 1 second before closing transport and streams...\n"));
-    PR_Sleep(PR_SecondsToInterval(1));
-    
-    // let nsCOMPtr destructors close everything...
-    return NS_OK;
-}
-
-
-/**
- * asynchronously read socket stream
- */
-static nsresult
-RunTest(nsISocketTransportService *sts,
-        const char *host, int port, const char *path,
-        uint32_t inFlags, uint32_t outFlags)
-{
-    nsresult rv;
-
-    LOG(("RunTest\n"));
-
-    nsCOMPtr<nsISocketTransport> transport;
-    rv = sts->CreateTransport(nullptr, 0,
-                              nsDependentCString(host), port, nullptr,
-                              getter_AddRefs(transport));
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsIInputStream> in;
-    rv = transport->OpenInputStream(inFlags, 0, 0, getter_AddRefs(in));
-    nsCOMPtr<nsIAsyncInputStream> asyncIn = do_QueryInterface(in, &rv);
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsIOutputStream> out;
-    rv = transport->OpenOutputStream(outFlags, 0, 0, getter_AddRefs(out));
-    nsCOMPtr<nsIAsyncOutputStream> asyncOut = do_QueryInterface(out, &rv);
-    if (NS_FAILED(rv)) return rv;
-
-    MyHandler *handler = new MyHandler(path, asyncIn, asyncOut);
-    if (handler == nullptr)
-        return NS_ERROR_OUT_OF_MEMORY;
-    NS_ADDREF(handler);
-
-    rv = asyncOut->AsyncWait(handler, 0, 0, nullptr);
-
-    if (NS_SUCCEEDED(rv))
-        PumpEvents();
-
-    NS_RELEASE(handler);
-
-    return NS_OK;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-int
-main(int argc, char* argv[])
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    nsresult rv;
-
-    if (argc < 4) {
-        printf("usage: TestSocketTransport <host> <port> <path>\n");
-        return -1;
-    }
-
-    {
-        nsCOMPtr<nsIServiceManager> servMan;
-        NS_InitXPCOM2(getter_AddRefs(servMan), nullptr, nullptr);
-        nsCOMPtr<nsIComponentRegistrar> registrar = do_QueryInterface(servMan);
-        NS_ASSERTION(registrar, "Null nsIComponentRegistrar");
-        if (registrar)
-            registrar->AutoRegister(nullptr);
-
-        gTestLog = PR_NewLogModule("Test");
-
-        // Make sure the DNS service is initialized on the main thread
-        nsCOMPtr<nsIDNSService> dns =
-                 do_GetService(NS_DNSSERVICE_CONTRACTID, &rv);
-        if (NS_FAILED(rv)) return rv;
-
-        nsCOMPtr<nsPISocketTransportService> sts =
-            do_GetService(kSocketTransportServiceCID, &rv);
-        if (NS_FAILED(rv)) return rv;
-
-        LOG(("phase 1 tests...\n"));
-
-        LOG(("flags = { OPEN_UNBUFFERED, OPEN_UNBUFFERED }\n"));
-        rv = RunCloseTest(sts, argv[1], atoi(argv[2]),
-                          nsITransport::OPEN_UNBUFFERED,
-                          nsITransport::OPEN_UNBUFFERED);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "RunCloseTest failed");
-
-        LOG(("flags = { OPEN_BUFFERED, OPEN_UNBUFFERED }\n"));
-        rv = RunCloseTest(sts, argv[1], atoi(argv[2]),
-                          0 /* nsITransport::OPEN_BUFFERED */,
-                          nsITransport::OPEN_UNBUFFERED);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "RunCloseTest failed");
-
-        LOG(("flags = { OPEN_UNBUFFERED, OPEN_BUFFERED }\n"));
-        rv = RunCloseTest(sts, argv[1], atoi(argv[2]),
-                          nsITransport::OPEN_UNBUFFERED,
-                          0 /*nsITransport::OPEN_BUFFERED */);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "RunCloseTest failed");
-
-        LOG(("flags = { OPEN_BUFFERED, OPEN_BUFFERED }\n"));
-        rv = RunCloseTest(sts, argv[1], atoi(argv[2]),
-                          0 /*nsITransport::OPEN_BUFFERED */,
-                          0 /*nsITransport::OPEN_BUFFERED */);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "RunCloseTest failed");
-
-        LOG(("calling Shutdown on socket transport service:\n"));
-        sts->Shutdown();
-
-        LOG(("calling Init on socket transport service:\n"));
-        sts->Init();
-
-        LOG(("phase 2 tests...\n"));
-
-        LOG(("flags = { OPEN_UNBUFFERED, OPEN_UNBUFFERED }\n"));
-        rv = RunTest(sts, argv[1], atoi(argv[2]), argv[3],
-                     nsITransport::OPEN_UNBUFFERED,
-                     nsITransport::OPEN_UNBUFFERED);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "RunTest failed");
-
-        LOG(("flags = { OPEN_BUFFERED, OPEN_UNBUFFERED }\n"));
-        rv = RunTest(sts, argv[1], atoi(argv[2]), argv[3],
-                     0 /* nsITransport::OPEN_BUFFERED */,
-                     nsITransport::OPEN_UNBUFFERED);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "RunTest failed");
-
-        LOG(("flags = { OPEN_UNBUFFERED, OPEN_BUFFERED }\n"));
-        rv = RunTest(sts, argv[1], atoi(argv[2]), argv[3],
-                     nsITransport::OPEN_UNBUFFERED,
-                     0 /*nsITransport::OPEN_BUFFERED */);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "RunTest failed");
-
-        LOG(("flags = { OPEN_BUFFERED, OPEN_BUFFERED }\n"));
-        rv = RunTest(sts, argv[1], atoi(argv[2]), argv[3],
-                     0 /*nsITransport::OPEN_BUFFERED */,
-                     0 /*nsITransport::OPEN_BUFFERED */);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "RunTest failed");
-
-        LOG(("waiting 1 second before calling Shutdown...\n"));
-        PR_Sleep(PR_SecondsToInterval(1));
-
-        LOG(("calling Shutdown on socket transport service:\n"));
-        sts->Shutdown();
-
-        // give background threads a chance to finish whatever work they may
-        // be doing.
-        LOG(("waiting 1 second before exiting...\n"));
-        PR_Sleep(PR_SecondsToInterval(1));
-    } // this scopes the nsCOMPtrs
-    // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM
-    rv = NS_ShutdownXPCOM(nullptr);
-    NS_ASSERTION(NS_SUCCEEDED(rv), "NS_ShutdownXPCOM failed");
-    return 0;
-}
deleted file mode 100644
--- a/netwerk/test/TestStreamLoader.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-#include <stdio.h>
-#include "TestCommon.h"
-#include "nsNetUtil.h"
-#include "nsServiceManagerUtils.h"
-#include "nsThreadUtils.h"
-#include "NetwerkTestLogging.h"
-#include "mozilla/Attributes.h"
-#include "nsIScriptSecurityManager.h"
-
-//
-// set NSPR_LOG_MODULES=Test:5
-//
-static PRLogModuleInfo *gTestLog = nullptr;
-#define LOG(args) MOZ_LOG(gTestLog, mozilla::LogLevel::Debug, args)
-
-class MyStreamLoaderObserver final : public nsIStreamLoaderObserver
-{
-  ~MyStreamLoaderObserver() = default;
-
-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<nsIRequest> 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 <url>\n", argv[0]);
-    return -1;
-  }
-
-  gTestLog = PR_NewLogModule("Test");
-
-  nsresult rv = NS_InitXPCOM2(nullptr, nullptr, nullptr);
-  if (NS_FAILED(rv))
-    return -1;
-
-  {
-    nsCOMPtr<nsIURI> uri;
-    rv = NS_NewURI(getter_AddRefs(uri), nsDependentCString(argv[1]));
-    if (NS_FAILED(rv))
-      return -1;
-
-    nsCOMPtr<nsIScriptSecurityManager> secman =
-      do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
-    NS_ENSURE_SUCCESS(rv, -1);
-       nsCOMPtr<nsIPrincipal> systemPrincipal;
-    rv = secman->GetSystemPrincipal(getter_AddRefs(systemPrincipal));
-    NS_ENSURE_SUCCESS(rv, -1);
-
-    nsCOMPtr<nsIChannel> chan;
-    rv = NS_NewChannel(getter_AddRefs(chan),
-                       uri,
-                       systemPrincipal,
-                       nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_INHERITS,
-                       nsIContentPolicy::TYPE_OTHER);
-
-    if (NS_FAILED(rv))
-      return -1;
-
-    nsCOMPtr<nsIStreamLoaderObserver> observer = new MyStreamLoaderObserver();
-    if (!observer)
-      return -1;
-
-    nsCOMPtr<nsIStreamLoader> loader;
-    rv = NS_NewStreamLoader(getter_AddRefs(loader), observer);
-    if (NS_FAILED(rv))
-      return -1;
-
-    rv = chan->AsyncOpen2(loader);
-    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;
-}
deleted file mode 100644
--- a/netwerk/test/TestStreamPump.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "TestCommon.h"
-#include "nsIComponentRegistrar.h"
-#include "nsIStreamTransportService.h"
-#include "nsIAsyncInputStream.h"
-#include "nsIProgressEventSink.h"
-#include "nsIInterfaceRequestor.h"
-#include "nsIInterfaceRequestorUtils.h"
-#include "nsIRequest.h"
-#include "nsIServiceManager.h"
-#include "nsIComponentManager.h"
-#include "nsISeekableStream.h"
-#include "nsCOMPtr.h"
-#include "nsMemory.h"
-#include "nsStringAPI.h"
-#include "nsIFileStreams.h"
-#include "nsIStreamListener.h"
-#include "nsIFile.h"
-#include "nsNetUtil.h"
-#include "nsAutoLock.h"
-#include "mozilla/Logging.h"
-#include "prprf.h"
-#include <algorithm>
-
-////////////////////////////////////////////////////////////////////////////////
-
-//
-// set NSPR_LOG_MODULES=Test:5
-//
-static PRLogModuleInfo *gTestLog = nullptr;
-#define LOG(args) MOZ_LOG(gTestLog, mozilla::LogLevel::Debug, args)
-
-////////////////////////////////////////////////////////////////////////////////
-
-class MyListener : public nsIStreamListener
-{
-public:
-    NS_DECL_ISUPPORTS
-
-    MyListener() {}
-    virtual ~MyListener() {}
-
-    NS_IMETHOD OnStartRequest(nsIRequest *req, nsISupports *ctx)
-    {
-        LOG(("MyListener::OnStartRequest\n"));
-        return NS_OK;
-    }
-
-    NS_IMETHOD OnDataAvailable(nsIRequest *req, nsISupports *ctx,
-                               nsIInputStream *stream,
-                               uint64_t offset, uint32_t count)
-    {
-        LOG(("MyListener::OnDataAvailable [offset=%llu count=%u]\n", offset, count));
-
-        char buf[500];
-        nsresult rv;
-
-        while (count) {
-            uint32_t n, amt = std::min<uint32_t>(count, sizeof(buf));
-
-            rv = stream->Read(buf, amt, &n);
-            if (NS_FAILED(rv)) {
-                LOG(("  read returned 0x%08x\n", rv));
-                return rv;
-            }
-
-            fwrite(buf, n, 1, stdout);
-            printf("\n");
-
-            LOG(("  read %u bytes\n", n));
-            count -= n;
-        }
-
-        return NS_OK;
-    }
-
-    NS_IMETHOD OnStopRequest(nsIRequest *req, nsISupports *ctx, nsresult status)
-    {
-        LOG(("MyListener::OnStopRequest [status=%x]\n", status));
-        QuitPumpingEvents();
-        return NS_OK;
-    }
-};
-
-NS_IMPL_ISUPPORTS(MyListener,
-                  nsIRequestObserver,
-                  nsIStreamListener)
-
-////////////////////////////////////////////////////////////////////////////////
-
-/**
- * asynchronously copy file.
- */
-static nsresult
-RunTest(nsIFile *file, int64_t offset, int64_t length)
-{
-    nsresult rv;
-
-    LOG(("RunTest\n"));
-
-    nsCOMPtr<nsIInputStream> stream;
-    rv = NS_NewLocalFileInputStream(getter_AddRefs(stream), file);
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsIInputStreamPump> pump;
-    rv = NS_NewInputStreamPump(getter_AddRefs(pump), stream, offset, length);
-    if (NS_FAILED(rv)) return rv;
-
-    rv = pump->AsyncRead(new MyListener(), nullptr);
-    if (NS_FAILED(rv)) return rv;
-
-    PumpEvents();
-    return NS_OK;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-int
-main(int argc, char* argv[])
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    nsresult rv;
-
-    if (argc < 4) {
-        printf("usage: %s <file-to-read> <start-offset> <read-length>\n", argv[0]);
-        return -1;
-    }
-    char* fileName = argv[1];
-    int64_t offset, length;
-    int err = PR_sscanf(argv[2], "%lld", &offset);
-    if (err == -1) {
-      printf("Start offset must be an integer!\n");
-      return 1;
-    }
-    err = PR_sscanf(argv[3], "%lld", &length);
-    if (err == -1) {
-      printf("Length must be an integer!\n");
-      return 1;
-    }
-
-    {
-        nsCOMPtr<nsIServiceManager> servMan;
-        NS_InitXPCOM2(getter_AddRefs(servMan), nullptr, nullptr);
-        nsCOMPtr<nsIComponentRegistrar> registrar = do_QueryInterface(servMan);
-        NS_ASSERTION(registrar, "Null nsIComponentRegistrar");
-        if (registrar)
-            registrar->AutoRegister(nullptr);
-
-        gTestLog = PR_NewLogModule("Test");
-
-        nsCOMPtr<nsIFile> file;
-        rv = NS_NewNativeLocalFile(nsDependentCString(fileName), false, getter_AddRefs(file));
-        if (NS_FAILED(rv)) return rv;
-
-        rv = RunTest(file, offset, length);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "RunTest failed");
-
-        // give background threads a chance to finish whatever work they may
-        // be doing.
-        PR_Sleep(PR_SecondsToInterval(1));
-    } // this scopes the nsCOMPtrs
-    // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM
-    rv = NS_ShutdownXPCOM(nullptr);
-    NS_ASSERTION(NS_SUCCEEDED(rv), "NS_ShutdownXPCOM failed");
-    return NS_OK;
-}
deleted file mode 100644
--- a/netwerk/test/TestStreamTransport.cpp
+++ /dev/null
@@ -1,319 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "TestCommon.h"
-#include "nsIComponentRegistrar.h"
-#include "nsIStreamTransportService.h"
-#include "nsIAsyncInputStream.h"
-#include "nsIProgressEventSink.h"
-#include "nsIInterfaceRequestor.h"
-#include "nsIInterfaceRequestorUtils.h"
-#include "nsIRequest.h"
-#include "nsIServiceManager.h"
-#include "nsIComponentManager.h"
-#include "nsCOMPtr.h"
-#include "nsMemory.h"
-#include "nsStringAPI.h"
-#include "nsIFileStreams.h"
-#include "nsIStreamListener.h"
-#include "nsIFile.h"
-#include "nsNetUtil.h"
-#include "nsAutoLock.h"
-#include "mozilla/Logging.h"
-#include "prenv.h"
-
-////////////////////////////////////////////////////////////////////////////////
-
-//
-// set NSPR_LOG_MODULES=Test:5
-//
-static PRLogModuleInfo *gTestLog = nullptr;
-#define LOG(args) MOZ_LOG(gTestLog, mozilla::LogLevel::Debug, args)
-
-////////////////////////////////////////////////////////////////////////////////
-
-static NS_DEFINE_CID(kStreamTransportServiceCID, NS_STREAMTRANSPORTSERVICE_CID);
-
-////////////////////////////////////////////////////////////////////////////////
-
-#define CHUNK_SIZE 500
-
-class MyCopier : public nsIInputStreamCallback
-               , public nsIOutputStreamCallback
-{
-public:
-    NS_DECL_THREADSAFE_ISUPPORTS
-
-    MyCopier()
-        : mLock(nullptr)
-        , mInputCondition(NS_OK)
-    {
-    }
-
-    virtual ~MyCopier()
-    {
-        if (mLock)
-            nsAutoLock::DestroyLock(mLock);
-        if (mInput)
-            mInput->Close();
-        if (mOutput)
-            mOutput->Close();
-    }
-
-    // called on any thread
-    NS_IMETHOD OnInputStreamReady(nsIAsyncInputStream *inStr)
-    {
-        LOG(("OnInputStreamReady\n"));
-        nsAutoLock lock(mLock);
-        NS_ASSERTION(inStr == mInput, "unexpected stream");
-        Process_Locked();
-        return NS_OK;
-    }
-
-    // called on any thread
-    NS_IMETHOD OnOutputStreamReady(nsIAsyncOutputStream *outStr)
-    {
-        LOG(("OnOutputStreamReady\n"));
-        nsAutoLock lock(mLock);
-        NS_ASSERTION(outStr == mOutput, "unexpected stream");
-        Process_Locked();
-        return NS_OK;
-    }
-
-    void Close_Locked()
-    {
-        LOG(("Close_Locked\n"));
-
-        mOutput->Close();
-        mOutput = 0;
-        mInput->Close();
-        mInput = 0;
-
-        // post done copying event
-        QuitPumpingEvents();
-    }
-
-    void Process_Locked()
-    {
-        while (1) {
-            mInputCondition = NS_OK; // reset
-
-            uint32_t n;
-            nsresult rv = mOutput->WriteSegments(FillOutputBuffer, this, CHUNK_SIZE, &n);
-            if (NS_FAILED(rv) || (n == 0)) {
-                if (rv == NS_BASE_STREAM_WOULD_BLOCK)
-                    mOutput->AsyncWait(this, 0, 0, nullptr);
-                else if (mInputCondition == NS_BASE_STREAM_WOULD_BLOCK)
-                    mInput->AsyncWait(this, 0, 0, nullptr);
-                else
-                    Close_Locked();
-                break;
-            }
-        }
-    }
-
-    nsresult AsyncCopy(nsITransport *srcTrans, nsITransport *destTrans)
-    {
-        mLock = nsAutoLock::NewLock("MyCopier::mLock");
-        if (!mLock)
-            return NS_ERROR_OUT_OF_MEMORY;
-
-        nsresult rv;
-
-        nsCOMPtr<nsIInputStream> inStr;
-        rv = srcTrans->OpenInputStream(0, 0, 0, getter_AddRefs(inStr));
-        if (NS_FAILED(rv)) return rv;
-
-        nsCOMPtr<nsIOutputStream> outStr;
-        rv = destTrans->OpenOutputStream(0, 0, 0, getter_AddRefs(outStr));
-        if (NS_FAILED(rv)) return rv;
-
-        mInput = do_QueryInterface(inStr);
-        mOutput = do_QueryInterface(outStr);
-
-        return mInput->AsyncWait(this, 0, 0, nullptr);
-    }
-
-    static nsresult FillOutputBuffer(nsIOutputStream *outStr,
-                                     void *closure,
-                                     char *buffer,
-                                     uint32_t offset,
-                                     uint32_t count,
-                                     uint32_t *countRead)
-    {
-        MyCopier *self = (MyCopier *) closure;
-
-        nsresult rv = self->mInput->Read(buffer, count, countRead);
-        if (NS_FAILED(rv))
-            self->mInputCondition = rv;
-        else if (*countRead == 0)
-            self->mInputCondition = NS_BASE_STREAM_CLOSED;
-
-        return self->mInputCondition;
-    }
-
-protected:
-    PRLock                        *mLock;
-    nsCOMPtr<nsIAsyncInputStream>  mInput;
-    nsCOMPtr<nsIAsyncOutputStream> mOutput;
-    nsresult                       mInputCondition;
-};
-
-NS_IMPL_ISUPPORTS(MyCopier,
-                  nsIInputStreamCallback,
-                  nsIOutputStreamCallback)
-
-////////////////////////////////////////////////////////////////////////////////
-
-/**
- * asynchronously copy file.
- */
-static nsresult
-RunTest(nsIFile *srcFile, nsIFile *destFile)
-{
-    nsresult rv;
-
-    LOG(("RunTest\n"));
-
-    nsCOMPtr<nsIStreamTransportService> sts =
-        do_GetService(kStreamTransportServiceCID, &rv);
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsIInputStream> srcStr;
-    rv = NS_NewLocalFileInputStream(getter_AddRefs(srcStr), srcFile);
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsIOutputStream> destStr;
-    rv = NS_NewLocalFileOutputStream(getter_AddRefs(destStr), destFile);
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsITransport> srcTransport;
-    rv = sts->CreateInputTransport(srcStr, int64_t(-1), int64_t(-1), true,
-                                   getter_AddRefs(srcTransport));
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsITransport> destTransport;
-    rv = sts->CreateOutputTransport(destStr, int64_t(-1), int64_t(-1), true,
-                                    getter_AddRefs(destTransport));
-    if (NS_FAILED(rv)) return rv;
-
-    MyCopier *copier = new MyCopier();
-    if (copier == nullptr)
-        return NS_ERROR_OUT_OF_MEMORY;
-    NS_ADDREF(copier);
-
-    rv = copier->AsyncCopy(srcTransport, destTransport);
-    if (NS_FAILED(rv)) return rv;
-
-    PumpEvents();
-
-    NS_RELEASE(copier);
-    return NS_OK;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-static nsresult
-RunBlockingTest(nsIFile *srcFile, nsIFile *destFile)
-{
-    nsresult rv;
-
-    LOG(("RunBlockingTest\n"));
-
-    nsCOMPtr<nsIStreamTransportService> sts =
-        do_GetService(kStreamTransportServiceCID, &rv);
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsIInputStream> srcIn;
-    rv = NS_NewLocalFileInputStream(getter_AddRefs(srcIn), srcFile);
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsIOutputStream> fileOut;
-    rv = NS_NewLocalFileOutputStream(getter_AddRefs(fileOut), destFile);
-    if (NS_FAILED(rv)) return rv;
-    
-    nsCOMPtr<nsITransport> destTransport;
-    rv = sts->CreateOutputTransport(fileOut, int64_t(-1), int64_t(-1),
-                                    true, getter_AddRefs(destTransport));
-    if (NS_FAILED(rv)) return rv;
-
-    nsCOMPtr<nsIOutputStream> destOut;
-    rv = destTransport->OpenOutputStream(nsITransport::OPEN_BLOCKING, 100, 10, getter_AddRefs(destOut));
-    if (NS_FAILED(rv)) return rv;
-
-    char buf[120];
-    uint32_t n;
-    for (;;) {
-        rv = srcIn->Read(buf, sizeof(buf), &n);
-        if (NS_FAILED(rv) || (n == 0)) return rv;
-
-        rv = destOut->Write(buf, n, &n);
-        if (NS_FAILED(rv)) return rv;
-    }
-
-    return NS_OK;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-int
-main(int argc, char* argv[])
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    nsresult rv;
-
-    if (argc < 2) {
-        printf("usage: %s <file-to-read>\n", argv[0]);
-        return -1;
-    }
-    char* fileName = argv[1];
-    {
-        nsCOMPtr<nsIServiceManager> servMan;
-        NS_InitXPCOM2(getter_AddRefs(servMan), nullptr, nullptr);
-        nsCOMPtr<nsIComponentRegistrar> registrar = do_QueryInterface(servMan);
-        NS_ASSERTION(registrar, "Null nsIComponentRegistrar");
-        if (registrar)
-            registrar->AutoRegister(nullptr);
-
-        gTestLog = PR_NewLogModule("Test");
-
-        nsCOMPtr<nsIFile> srcFile;
-        rv = NS_NewNativeLocalFile(nsDependentCString(fileName), false, getter_AddRefs(srcFile));
-        if (NS_FAILED(rv)) return rv;
-
-        nsCOMPtr<nsIFile> destFile;
-        rv = srcFile->Clone(getter_AddRefs(destFile));
-        if (NS_FAILED(rv)) return rv;
-
-        nsAutoCString leafName;
-        rv = destFile->GetNativeLeafName(leafName);
-        if (NS_FAILED(rv)) return rv;
-
-        nsAutoCString newName(leafName);
-        newName.AppendLiteral(".1");
-        rv = destFile->SetNativeLeafName(newName);
-        if (NS_FAILED(rv)) return rv;
-
-        rv = RunTest(srcFile, destFile);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "RunTest failed");
-
-        newName = leafName;
-        newName.AppendLiteral(".2");
-        rv = destFile->SetNativeLeafName(newName);
-        if (NS_FAILED(rv)) return rv;
-
-        rv = RunBlockingTest(srcFile, destFile);
-        NS_ASSERTION(NS_SUCCEEDED(rv), "RunBlockingTest failed");
-
-        // give background threads a chance to finish whatever work they may
-        // be doing.
-        PR_Sleep(PR_SecondsToInterval(1));
-    } // this scopes the nsCOMPtrs
-    // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM
-    rv = NS_ShutdownXPCOM(nullptr);
-    NS_ASSERTION(NS_SUCCEEDED(rv), "NS_ShutdownXPCOM failed");
-    return NS_OK;
-}
--- a/netwerk/test/TestUDPSocket.cpp
+++ b/netwerk/test/TestUDPSocket.cpp
@@ -1,14 +1,14 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "TestCommon.h"
-#include "TestHarness.h"
+#include "gtest/gtest.h"
 #include "nsIUDPSocket.h"
 #include "nsISocketTransportService.h"
 #include "nsISocketTransport.h"
 #include "nsIOutputStream.h"
 #include "nsIInputStream.h"
 #include "nsINetAddr.h"
 #include "nsIScriptSecurityManager.h"
 #include "nsITimer.h"
@@ -17,41 +17,16 @@
 #include "mozilla/WindowsVersion.h"
 #endif
 #include "prerror.h"
 
 #define REQUEST  0x68656c6f
 #define RESPONSE 0x6f6c6568
 #define MULTICAST_TIMEOUT 2000
 
-#define EXPECT_SUCCESS(rv, ...) \
-  PR_BEGIN_MACRO \
-  if (NS_FAILED(rv)) { \
-    fail(__VA_ARGS__); \
-    return false; \
-  } \
-  PR_END_MACRO
-
-
-#define EXPECT_FAILURE(rv, ...) \
-  PR_BEGIN_MACRO \
-  if (NS_SUCCEEDED(rv)) { \
-    fail(__VA_ARGS__); \
-    return false; \
-  } \
-  PR_END_MACRO
-
-#define REQUIRE_EQUAL(a, b, ...) \
-  PR_BEGIN_MACRO \
-  if (a != b) { \
-    fail(__VA_ARGS__); \
-    return false; \
-  } \
-  PR_END_MACRO
-
 enum TestPhase {
   TEST_OUTPUT_STREAM,
   TEST_SEND_API,
   TEST_MULTICAST,
   TEST_NONE
 };
 
 static TestPhase phase = TEST_NONE;
@@ -63,54 +38,63 @@ static bool CheckMessageContent(nsIUDPMe
 
   const char* buffer = data.get();
   uint32_t len = data.Length();
 
   FallibleTArray<uint8_t>& rawData = aMessage->GetDataAsTArray();
   uint32_t rawLen = rawData.Length();
 
   if (len != rawLen) {
-    fail("Raw data length(%d) do not matches String data length(%d).", rawLen, len);
+    ADD_FAILURE() << "Raw data length " << rawLen << " does not match String data length " << len;
     return false;
   }
 
   for (uint32_t i = 0; i < len; i++) {
     if (buffer[i] != rawData[i]) {
-      fail("Raw data(%s) do not matches String data(%s)", rawData.Elements() ,buffer);
+      ADD_FAILURE();
       return false;
     }
   }
 
   uint32_t input = 0;
   for (uint32_t i = 0; i < len; i++) {
     input += buffer[i] << (8 * i);
   }
 
-  if (len != sizeof(uint32_t) || input != aExpectedContent)
-  {
-    fail("Request 0x%x received, expected 0x%x", input, aExpectedContent);
+  if (len != sizeof(uint32_t)) {
+    ADD_FAILURE() << "Message length mismatch, expected " << sizeof(uint32_t) <<
+      " got " << len;
     return false;
-  } else {
-    passed("Request 0x%x received as expected", input);
-    return true;
   }
+  if (input != aExpectedContent) {
+    ADD_FAILURE() << "Message content mismatch, expected 0x" <<
+      std::hex << aExpectedContent << " got 0x" << input;
+    return false;
+  }
+
+  return true;
 }
 
 /*
  * UDPClientListener: listens for incomming UDP packets
  */
 class UDPClientListener : public nsIUDPSocketListener
 {
 protected:
   virtual ~UDPClientListener();
 
 public:
+  explicit UDPClientListener(WaitForCondition* waiter)
+    : mWaiter(waiter)
+  { }
+
   NS_DECL_THREADSAFE_ISUPPORTS
   NS_DECL_NSIUDPSOCKETLISTENER
-  nsresult mResult;
+  nsresult mResult = NS_ERROR_FAILURE;
+  RefPtr<WaitForCondition> mWaiter;
 };
 
 NS_IMPL_ISUPPORTS(UDPClientListener, nsIUDPSocketListener)
 
 UDPClientListener::~UDPClientListener() = default;
 
 NS_IMETHODIMP
 UDPClientListener::OnPacketReceived(nsIUDPSocket* socket, nsIUDPMessage* message)
@@ -118,59 +102,62 @@ UDPClientListener::OnPacketReceived(nsIU
   mResult = NS_OK;
 
   uint16_t port;
   nsCString ip;
   nsCOMPtr<nsINetAddr> fromAddr;
   message->GetFromAddr(getter_AddRefs(fromAddr));
   fromAddr->GetPort(&port);
   fromAddr->GetAddress(ip);
-  passed("Packet received on client from %s:%d", ip.get(), port);
 
   if (TEST_SEND_API == phase && CheckMessageContent(message, REQUEST)) {
     uint32_t count;
     const uint32_t data = RESPONSE;
-    printf("*** Attempting to write response 0x%x to server by SendWithAddr...\n", RESPONSE);
     mResult = socket->SendWithAddr(fromAddr, (const uint8_t*)&data,
                                    sizeof(uint32_t), &count);
     if (mResult == NS_OK && count == sizeof(uint32_t)) {
-      passed("Response written");
+      SUCCEED();
     } else {
-      fail("Response written");
+      ADD_FAILURE();
     }
     return NS_OK;
   } else if (TEST_OUTPUT_STREAM != phase || !CheckMessageContent(message, RESPONSE)) {
     mResult = NS_ERROR_FAILURE;
   }
 
   // Notify thread
-  QuitPumpingEvents();
+  mWaiter->Notify();
   return NS_OK;
 }
 
 NS_IMETHODIMP
 UDPClientListener::OnStopListening(nsIUDPSocket*, nsresult)
 {
-  QuitPumpingEvents();
+  mWaiter->Notify();
   return NS_OK;
 }
 
 /*
  * UDPServerListener: listens for incomming UDP packets
  */
 class UDPServerListener : public nsIUDPSocketListener
 {
 protected:
   virtual ~UDPServerListener();
 
 public:
+  explicit UDPServerListener(WaitForCondition* waiter)
+    : mWaiter(waiter)
+  { }
+
   NS_DECL_THREADSAFE_ISUPPORTS
   NS_DECL_NSIUDPSOCKETLISTENER
 
-  nsresult mResult;
+  nsresult mResult = NS_ERROR_FAILURE;
+  RefPtr<WaitForCondition> mWaiter;
 };
 
 NS_IMPL_ISUPPORTS(UDPServerListener, nsIUDPSocketListener)
 
 UDPServerListener::~UDPServerListener() = default;
 
 NS_IMETHODIMP
 UDPServerListener::OnPacketReceived(nsIUDPSocket* socket, nsIUDPMessage* message)
@@ -178,166 +165,166 @@ UDPServerListener::OnPacketReceived(nsIU
   mResult = NS_OK;
 
   uint16_t port;
   nsCString ip;
   nsCOMPtr<nsINetAddr> fromAddr;
   message->GetFromAddr(getter_AddRefs(fromAddr));
   fromAddr->GetPort(&port);
   fromAddr->GetAddress(ip);
-  passed("Packet received on server from %s:%d", ip.get(), port);
+  SUCCEED();
 
   if (TEST_OUTPUT_STREAM == phase && CheckMessageContent(message, REQUEST))
   {
     nsCOMPtr<nsIOutputStream> outstream;
     message->GetOutputStream(getter_AddRefs(outstream));
 
     uint32_t count;
     const uint32_t data = RESPONSE;
-    printf("*** Attempting to write response 0x%x to client by OutputStream...\n", RESPONSE);
     mResult = outstream->Write((const char*)&data, sizeof(uint32_t), &count);
 
     if (mResult == NS_OK && count == sizeof(uint32_t)) {
-      passed("Response written");
+      SUCCEED();
     } else {
-      fail("Response written");
+      ADD_FAILURE();
     }
     return NS_OK;
   } else if (TEST_MULTICAST == phase && CheckMessageContent(message, REQUEST)) {
     mResult = NS_OK;
   } else if (TEST_SEND_API != phase || !CheckMessageContent(message, RESPONSE)) {
     mResult = NS_ERROR_FAILURE;
   }
 
   // Notify thread
-  QuitPumpingEvents();
+  mWaiter->Notify();
   return NS_OK;
 }
 
 NS_IMETHODIMP
 UDPServerListener::OnStopListening(nsIUDPSocket*, nsresult)
 {
-  QuitPumpingEvents();
+  mWaiter->Notify();
   return NS_OK;
 }
 
 /**
  * Multicast timer callback: detects delivery failure
  */
 class MulticastTimerCallback : public nsITimerCallback
 {
 protected:
   virtual ~MulticastTimerCallback();
 
 public:
+  explicit MulticastTimerCallback(WaitForCondition* waiter)
+    : mWaiter(waiter)
+  { }
+
   NS_DECL_THREADSAFE_ISUPPORTS
   NS_DECL_NSITIMERCALLBACK
 
   nsresult mResult;
+  RefPtr<WaitForCondition> mWaiter;
 };
 
 NS_IMPL_ISUPPORTS(MulticastTimerCallback, nsITimerCallback)
 
 MulticastTimerCallback::~MulticastTimerCallback() = default;
 
 NS_IMETHODIMP
 MulticastTimerCallback::Notify(nsITimer* timer)
 {
   if (TEST_MULTICAST != phase) {
     return NS_OK;
   }
   // Multicast ping failed
   printf("Multicast ping timeout expired\n");
   mResult = NS_ERROR_FAILURE;
-  QuitPumpingEvents();
+  mWaiter->Notify();
   return NS_OK;
 }
 
 /**** Main ****/
-int
-main(int32_t argc, char *argv[])
+
+TEST(TestUDPSocket, TestUDPSocketMain)
 {
   nsresult rv;
-  ScopedXPCOM xpcom("UDP ServerSocket");
-  if (xpcom.failed())
-    return -1;
 
   // Create UDPSocket
   nsCOMPtr<nsIUDPSocket> server, client;
   server = do_CreateInstance("@mozilla.org/network/udp-socket;1", &rv);
-  NS_ENSURE_SUCCESS(rv, -1);
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
+
   client = do_CreateInstance("@mozilla.org/network/udp-socket;1", &rv);
-  NS_ENSURE_SUCCESS(rv, -1);
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
+
+  RefPtr<WaitForCondition> waiter = new WaitForCondition();
 
   // Create UDPServerListener to process UDP packets
-  RefPtr<UDPServerListener> serverListener = new UDPServerListener();
+  RefPtr<UDPServerListener> serverListener = new UDPServerListener(waiter);
 
   nsCOMPtr<nsIScriptSecurityManager> secman =
     do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
-  NS_ENSURE_SUCCESS(rv, -1);
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
 
   nsCOMPtr<nsIPrincipal> systemPrincipal;
   rv = secman->GetSystemPrincipal(getter_AddRefs(systemPrincipal));
-  NS_ENSURE_SUCCESS(rv, -1);
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
 
   // Bind server socket to 0.0.0.0
   rv = server->Init(0, false, systemPrincipal, true, 0);
-  NS_ENSURE_SUCCESS(rv, -1);
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
   int32_t serverPort;
   server->GetPort(&serverPort);
   server->AsyncListen(serverListener);
 
   // Bind clinet on arbitrary port
-  RefPtr<UDPClientListener> clientListener = new UDPClientListener();
+  RefPtr<UDPClientListener> clientListener = new UDPClientListener(waiter);
   client->Init(0, false, systemPrincipal, true, 0);
   client->AsyncListen(clientListener);
 
   // Write data to server
   uint32_t count;
   const uint32_t data = REQUEST;
 
   phase = TEST_OUTPUT_STREAM;
   rv = client->Send(NS_LITERAL_CSTRING("127.0.0.1"), serverPort, (uint8_t*)&data, sizeof(uint32_t), &count);
-  NS_ENSURE_SUCCESS(rv, -1);
-  REQUIRE_EQUAL(count, sizeof(uint32_t), "Error");
-  passed("Request written by Send");
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
+  EXPECT_EQ(count, sizeof(uint32_t));
 
   // Wait for server
-  PumpEvents();
-  NS_ENSURE_SUCCESS(serverListener->mResult, -1);
+  waiter->Wait(1);
+  ASSERT_TRUE(NS_SUCCEEDED(serverListener->mResult));
 
   // Read response from server
-  NS_ENSURE_SUCCESS(clientListener->mResult, -1);
+  ASSERT_TRUE(NS_SUCCEEDED(clientListener->mResult));
 
   mozilla::net::NetAddr clientAddr;
   rv = client->GetAddress(&clientAddr);
-  NS_ENSURE_SUCCESS(rv, -1);
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
   // The client address is 0.0.0.0, but Windows won't receive packets there, so
   // use 127.0.0.1 explicitly
   clientAddr.inet.ip = PR_htonl(127 << 24 | 1);
 
   phase = TEST_SEND_API;
   rv = server->SendWithAddress(&clientAddr, (uint8_t*)&data, sizeof(uint32_t), &count);
-  NS_ENSURE_SUCCESS(rv, -1);
-  REQUIRE_EQUAL(count, sizeof(uint32_t), "Error");
-  passed("Request written by SendWithAddress");
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
+  EXPECT_EQ(count, sizeof(uint32_t));
 
   // Wait for server
-  PumpEvents();
-  NS_ENSURE_SUCCESS(serverListener->mResult, -1);
+  waiter->Wait(1);
+  ASSERT_TRUE(NS_SUCCEEDED(serverListener->mResult));
 
   // Read response from server
-  NS_ENSURE_SUCCESS(clientListener->mResult, -1);
+  ASSERT_TRUE(NS_SUCCEEDED(clientListener->mResult));
 
   // Setup timer to detect multicast failure
   nsCOMPtr<nsITimer> timer = do_CreateInstance("@mozilla.org/timer;1");
-  if (NS_WARN_IF(!timer)) {
-    return -1;
-  }
-  RefPtr<MulticastTimerCallback> timerCb = new MulticastTimerCallback();
+  ASSERT_TRUE(timer);
+  RefPtr<MulticastTimerCallback> timerCb = new MulticastTimerCallback(waiter);
 
   // The following multicast tests using multiple sockets require a firewall
   // exception on Windows XP (the earliest version of Windows we now support)
   // before they pass. For now, we'll skip them here. Later versions of Windows
   // (Win2003 and onward) don't seem to have this issue.
 #ifdef XP_WIN
   if (!mozilla::IsWin2003OrLater()) {   // i.e. if it is WinXP
     goto close;
@@ -347,127 +334,94 @@ main(int32_t argc, char *argv[])
   // Join multicast group
   printf("Joining multicast group\n");
   phase = TEST_MULTICAST;
   mozilla::net::NetAddr multicastAddr;
   multicastAddr.inet.family = AF_INET;
   multicastAddr.inet.ip = PR_htonl(224 << 24 | 255);
   multicastAddr.inet.port = PR_htons(serverPort);
   rv = server->JoinMulticastAddr(multicastAddr, nullptr);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return -1;
-  }
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
 
   // Send multicast ping
   timerCb->mResult = NS_OK;
   timer->InitWithCallback(timerCb, MULTICAST_TIMEOUT, nsITimer::TYPE_ONE_SHOT);
   rv = client->SendWithAddress(&multicastAddr, (uint8_t*)&data, sizeof(uint32_t), &count);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return -1;
-  }
-  REQUIRE_EQUAL(count, sizeof(uint32_t), "Error");
-  passed("Multicast ping written by SendWithAddress");
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
+  EXPECT_EQ(count, sizeof(uint32_t));
 
   // Wait for server to receive successfully
-  PumpEvents();
-  if (NS_WARN_IF(NS_FAILED(serverListener->mResult))) {
-    return -1;
-  }
-  if (NS_WARN_IF(NS_FAILED(timerCb->mResult))) {
-    return -1;
-  }
+  waiter->Wait(1);
+  ASSERT_TRUE(NS_SUCCEEDED(serverListener->mResult));
+  ASSERT_TRUE(NS_SUCCEEDED(timerCb->mResult));
   timer->Cancel();
-  passed("Server received ping successfully");
 
   // Disable multicast loopback
   printf("Disable multicast loopback\n");
   client->SetMulticastLoopback(false);
   server->SetMulticastLoopback(false);
 
   // Send multicast ping
   timerCb->mResult = NS_OK;
   timer->InitWithCallback(timerCb, MULTICAST_TIMEOUT, nsITimer::TYPE_ONE_SHOT);
   rv = client->SendWithAddress(&multicastAddr, (uint8_t*)&data, sizeof(uint32_t), &count);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return -1;
-  }
-  REQUIRE_EQUAL(count, sizeof(uint32_t), "Error");
-  passed("Multicast ping written by SendWithAddress");
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
+  EXPECT_EQ(count, sizeof(uint32_t));
 
   // Wait for server to fail to receive
-  PumpEvents();
-  if (NS_WARN_IF(NS_SUCCEEDED(timerCb->mResult))) {
-    return -1;
-  }
+  waiter->Wait(1);
+  ASSERT_FALSE(NS_SUCCEEDED(timerCb->mResult));
   timer->Cancel();
-  passed("Server failed to receive ping correctly");
 
   // Reset state
   client->SetMulticastLoopback(true);
   server->SetMulticastLoopback(true);
 
   // Change multicast interface
-  printf("Changing multicast interface\n");
   mozilla::net::NetAddr loopbackAddr;
   loopbackAddr.inet.family = AF_INET;
   loopbackAddr.inet.ip = PR_htonl(INADDR_LOOPBACK);
   client->SetMulticastInterfaceAddr(loopbackAddr);
 
   // Send multicast ping
   timerCb->mResult = NS_OK;
   timer->InitWithCallback(timerCb, MULTICAST_TIMEOUT, nsITimer::TYPE_ONE_SHOT);
   rv = client->SendWithAddress(&multicastAddr, (uint8_t*)&data, sizeof(uint32_t), &count);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return -1;
-  }
-  REQUIRE_EQUAL(count, sizeof(uint32_t), "Error");
-  passed("Multicast ping written by SendWithAddress");
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
+  EXPECT_EQ(count, sizeof(uint32_t));
 
   // Wait for server to fail to receive
-  PumpEvents();
-  if (NS_WARN_IF(NS_SUCCEEDED(timerCb->mResult))) {
-    return -1;
-  }
+  waiter->Wait(1);
+  ASSERT_FALSE(NS_SUCCEEDED(timerCb->mResult));
   timer->Cancel();
-  passed("Server failed to receive ping correctly");
 
   // Reset state
   mozilla::net::NetAddr anyAddr;
   anyAddr.inet.family = AF_INET;
   anyAddr.inet.ip = PR_htonl(INADDR_ANY);
   client->SetMulticastInterfaceAddr(anyAddr);
 
   // Leave multicast group
-  printf("Leave multicast group\n");
   rv = server->LeaveMulticastAddr(multicastAddr, nullptr);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return -1;
-  }
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
 
   // Send multicast ping
   timerCb->mResult = NS_OK;
   timer->InitWithCallback(timerCb, MULTICAST_TIMEOUT, nsITimer::TYPE_ONE_SHOT);
   rv = client->SendWithAddress(&multicastAddr, (uint8_t*)&data, sizeof(uint32_t), &count);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
-    return -1;
-  }
-  REQUIRE_EQUAL(count, sizeof(uint32_t), "Error");
-  passed("Multicast ping written by SendWithAddress");
+  ASSERT_TRUE(NS_SUCCEEDED(rv));
+  EXPECT_EQ(count, sizeof(uint32_t));
 
   // Wait for server to fail to receive
-  PumpEvents();
-  if (NS_WARN_IF(NS_SUCCEEDED(timerCb->mResult))) {
-    return -1;
-  }
+  waiter->Wait(1);
+  ASSERT_FALSE(NS_SUCCEEDED(timerCb->mResult));
   timer->Cancel();
-  passed("Server failed to receive ping correctly");
-  goto close;
+
+  goto close; // suppress warning about unused label
 
 close:
   // Close server
-  printf("*** Attempting to close server ...\n");
   server->Close();
   client->Close();
-  PumpEvents();
-  passed("Server closed");
 
-  return 0; // failure is a non-zero return
+  // Wait for client and server to see closing
+  waiter->Wait(2);
 }
deleted file mode 100644
--- a/netwerk/test/TestUDPSocketProvider.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "stdio.h"
-#include "TestCommon.h"
-#include "nsCOMPtr.h"
-#include "nsIServiceManager.h"
-#include "nsIComponentRegistrar.h"
-#include "nspr.h"
-#include "nsServiceManagerUtils.h"
-#include "nsISocketTransportService.h"
-#include "nsISocketTransport.h"
-#include "nsIOutputStream.h"
-#include "nsIInputStream.h"
-
-#define UDP_PORT 9050
-
-#define UDP_ASSERT(condition, message) \
-    PR_BEGIN_MACRO                     \
-    NS_ASSERTION(condition, message);  \
-    if (!(condition)) {                \
-        returnCode = -1;               \
-        break;                         \
-    }                                  \
-    PR_END_MACRO
-
-#define UDP_ASSERT_PRSTATUS(message) \
-    PR_BEGIN_MACRO \
-    NS_ASSERTION(status == PR_SUCCESS, message); \
-    if (status != PR_SUCCESS) { \
-        PRErrorCode err = PR_GetError(); \
-        fprintf(stderr, \
-                "FAIL nspr: %s: (%08x) %s\n", \
-                message, \
-                err, \
-                PR_ErrorToString(err, PR_LANGUAGE_I_DEFAULT)); \
-        returnCode = -1; \
-        break; \
-    } \
-    PR_END_MACRO
-
-#define UDP_ASSERT_NSRESULT(message) \
-    PR_BEGIN_MACRO \
-    NS_ASSERTION(NS_SUCCEEDED(rv), message); \
-    if (NS_FAILED(rv)) { \
-        fprintf(stderr, "FAIL UDPSocket: %s: %08x\n", \
-                message, rv); \
-        returnCode = -1; \
-        break; \
-    } \
-    PR_END_MACRO
-
-int
-main(int argc, char* argv[])
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    int returnCode = 0;
-    nsresult rv = NS_OK;
-    PRFileDesc *serverFD = nullptr;
-
-    do { // act both as a scope for nsCOMPtrs to be released before XPCOM
-         // shutdown, as well as a easy way to abort the test
-        PRStatus status = PR_SUCCESS;
-
-        nsCOMPtr<nsIServiceManager> servMan;
-        NS_InitXPCOM2(getter_AddRefs(servMan), nullptr, nullptr);
-        nsCOMPtr<nsIComponentRegistrar> registrar = do_QueryInterface(servMan);
-        UDP_ASSERT(registrar, "Null nsIComponentRegistrar");
-        if (registrar)
-            registrar->AutoRegister(nullptr);
-
-        // listen for a incoming UDP connection on localhost
-        serverFD = PR_OpenUDPSocket(PR_AF_INET);
-        UDP_ASSERT(serverFD, "Cannot open UDP socket for listening");
-
-        PRSocketOptionData socketOptions;
-        socketOptions.option = PR_SockOpt_Nonblocking;
-        socketOptions.value.non_blocking = false;
-        status = PR_SetSocketOption(serverFD, &socketOptions);
-        UDP_ASSERT_PRSTATUS("Failed to set server socket as blocking");
-
-        PRNetAddr addr;
-        status = PR_InitializeNetAddr(PR_IpAddrLoopback, UDP_PORT, &addr);
-        UDP_ASSERT_PRSTATUS("Failed to initialize loopback address");
-
-        status = PR_Bind(serverFD, &addr);
-        UDP_ASSERT_PRSTATUS("Failed to bind server socket");
-
-        // dummy IOService to get around bug 379890
-        nsCOMPtr<nsISupports> ios =
-            do_GetService("@mozilla.org/network/io-service;1");
-
-        // and have a matching UDP connection for the client
-        nsCOMPtr<nsISocketTransportService> sts =
-            do_GetService("@mozilla.org/network/socket-transport-service;1", &rv);
-        UDP_ASSERT_NSRESULT("Cannot get socket transport service");
-
-        nsCOMPtr<nsISocketTransport> transport;
-        const char *protocol = "udp";
-        rv = sts->CreateTransport(&protocol, 1, NS_LITERAL_CSTRING("localhost"),
-                                  UDP_PORT, nullptr, getter_AddRefs(transport));
-        UDP_ASSERT_NSRESULT("Cannot create transport");
-        
-        uint32_t count, read;
-        const uint32_t data = 0xFF0056A9;
-
-        // write to the output stream
-        nsCOMPtr<nsIOutputStream> outstream;
-        rv = transport->OpenOutputStream(nsITransport::OPEN_BLOCKING,
-                                         0, 0, getter_AddRefs(outstream));
-        UDP_ASSERT_NSRESULT("Cannot open output stream");
-
-        rv = outstream->Write((const char*)&data, sizeof(uint32_t), &count);
-        UDP_ASSERT_NSRESULT("Cannot write to output stream");
-        UDP_ASSERT(count == sizeof(uint32_t),
-                   "Did not write enough bytes to output stream");
-
-        // read from NSPR to check it's the same
-        count = PR_RecvFrom(serverFD, &read, sizeof(uint32_t), 0, &addr, 1);
-        UDP_ASSERT(count == sizeof(uint32_t),
-                   "Did not read enough bytes from NSPR");
-        status = (read == data ? PR_SUCCESS : PR_FAILURE);
-        UDP_ASSERT_PRSTATUS("Did not read expected data from NSPR");
-
-        // write to NSPR
-        count = PR_SendTo(serverFD, &data, sizeof(uint32_t), 0, &addr, 1);
-        status = (count == sizeof(uint32_t) ? PR_SUCCESS : PR_FAILURE);
-        UDP_ASSERT_PRSTATUS("Did not write enough bytes to NSPR");
-        
-        // read from stream
-        nsCOMPtr<nsIInputStream> instream;
-        rv = transport->OpenInputStream(nsITransport::OPEN_BLOCKING,
-                                        0, 0, getter_AddRefs(instream));
-        UDP_ASSERT_NSRESULT("Cannot open input stream");
-        
-        rv = instream->Read((char*)&read, sizeof(uint32_t), &count);
-        UDP_ASSERT_NSRESULT("Cannot read from input stream");
-        UDP_ASSERT(count == sizeof(uint32_t),
-                   "Did not read enough bytes from input stream");
-        UDP_ASSERT(read == data, "Did not read expected data from stream");
-
-    } while (false); // release all XPCOM things
-    if (serverFD) {
-        PRStatus status = PR_Close(serverFD);
-        if (status != PR_SUCCESS) {
-            PRErrorCode err = PR_GetError();
-            fprintf(stderr, "FAIL: Cannot close server: (%08x) %s\n",
-                    err, PR_ErrorToString(err, PR_LANGUAGE_I_DEFAULT));
-        }
-    }
-    rv = NS_ShutdownXPCOM(nullptr);
-    NS_ASSERTION(NS_SUCCEEDED(rv), "NS_ShutdownXPCOM failed");    
-
-    return returnCode;
-}
-
deleted file mode 100644
--- a/netwerk/test/TestURLParser.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-#include "TestCommon.h"
-#include <stdio.h>
-#include "nsIURLParser.h"
-#include "nsCOMPtr.h"
-#include "nsIServiceManager.h"
-#include "nsNetCID.h"
-#include "nsServiceManagerUtils.h"
-
-static void
-print_field(const char *label, char *str, int32_t len)
-{
-    char c = str[len];
-    str[len] = '\0';
-    printf("[%s=%s]\n", label, str);
-    str[len] = c;
-}
-
-#define PRINT_FIELD(x) \
-        print_field(# x, x, x ## Len)
-
-#define PRINT_SUBFIELD(base, x) \
-    PR_BEGIN_MACRO \
-        if (x ## Len != -1) \
-            print_field(# x, base + x ## Pos, x ## Len); \
-    PR_END_MACRO
-
-static void
-parse_authority(nsIURLParser *urlParser, char *auth, int32_t authLen)
-{
-    PRINT_FIELD(auth);
-
-    uint32_t usernamePos, passwordPos;
-    int32_t usernameLen, passwordLen;
-    uint32_t hostnamePos;
-    int32_t hostnameLen, port;
-
-    urlParser->ParseAuthority(auth, authLen,
-                              &usernamePos, &usernameLen,
-                              &passwordPos, &passwordLen,
-                              &hostnamePos, &hostnameLen,
-                              &port);
-
-    PRINT_SUBFIELD(auth, username);
-    PRINT_SUBFIELD(auth, password);
-    PRINT_SUBFIELD(auth, hostname);
-    if (port != -1)
-        printf("[port=%d]\n", port);
-}
-
-static void
-parse_file_path(nsIURLParser *urlParser, char *filepath, int32_t filepathLen)
-{
-    PRINT_FIELD(filepath);
-
-    uint32_t dirPos, basePos, extPos;
-    int32_t dirLen, baseLen, extLen;
-
-    urlParser->ParseFilePath(filepath, filepathLen,
-                             &dirPos, &dirLen,
-                             &basePos, &baseLen,
-                             &extPos, &extLen);
-
-    PRINT_SUBFIELD(filepath, dir);
-    PRINT_SUBFIELD(filepath, base);
-    PRINT_SUBFIELD(filepath, ext);
-}
-
-static void
-parse_path(nsIURLParser *urlParser, char *path, int32_t pathLen)
-{
-    PRINT_FIELD(path);
-
-    uint32_t filePos, queryPos, refPos;
-    int32_t fileLen, queryLen, refLen;
-
-    urlParser->ParsePath(path, pathLen,
-                         &filePos, &fileLen,
-                         &queryPos, &queryLen,
-                         &refPos, &refLen);
-
-    if (fileLen != -1)
-        parse_file_path(urlParser, path + filePos, fileLen);
-    PRINT_SUBFIELD(path, query);
-    PRINT_SUBFIELD(path, ref);
-}
-
-int
-main(int argc, char **argv)
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    if (argc < 2) {
-        printf("usage: TestURLParser [-std|-noauth|-auth] <url>\n");
-        return -1;
-    }
-    nsCOMPtr<nsIURLParser> urlParser;
-    if (strcmp(argv[1], "-noauth") == 0) {
-        urlParser = do_GetService(NS_NOAUTHURLPARSER_CONTRACTID);
-        argv[1] = argv[2];
-    }
-    else if (strcmp(argv[1], "-auth") == 0) {
-        urlParser = do_GetService(NS_AUTHURLPARSER_CONTRACTID);
-        argv[1] = argv[2];
-    }
-    else {
-        urlParser = do_GetService(NS_STDURLPARSER_CONTRACTID);
-        if (strcmp(argv[1], "-std") == 0)
-            argv[1] = argv[2];
-        else
-            printf("assuming -std\n");
-    }
-    if (urlParser) {
-        printf("have urlParser @%p\n", static_cast<void*>(urlParser.get()));
-
-        char *spec = argv[1];
-        uint32_t schemePos, authPos, pathPos;
-        int32_t schemeLen, authLen, pathLen;
-
-        urlParser->ParseURL(spec, -1,
-                            &schemePos, &schemeLen,
-                            &authPos, &authLen,
-                            &pathPos, &pathLen);
-
-        if (schemeLen != -1)
-            PRINT_SUBFIELD(spec, scheme);
-        if (authLen != -1)
-            parse_authority(urlParser, spec + authPos, authLen);
-        if (pathLen != -1)
-            parse_path(urlParser, spec + pathPos, pathLen);
-    }
-    else
-        printf("no urlParser\n");
-    return 0;
-}
deleted file mode 100644
--- a/netwerk/test/TestUpload.cpp
+++ /dev/null
@@ -1,169 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "TestCommon.h"
-#include <algorithm>
-#ifdef WIN32 
-#include <windows.h>
-#endif
-
-#include "nsIComponentRegistrar.h"
-#include "nsIScriptSecurityManager.h"
-#include "nsServiceManagerUtils.h"
-#include "nsIServiceManager.h"
-#include "nsNetUtil.h"
-
-#include "nsIUploadChannel.h"
-
-#include "NetwerkTestLogging.h"
-//
-// set NSPR_LOG_MODULES=Test:5
-//
-static PRLogModuleInfo *gTestLog = nullptr;
-#define LOG(args) MOZ_LOG(gTestLog, mozilla::LogLevel::Debug, args)
-
-//-----------------------------------------------------------------------------
-// InputTestConsumer
-//-----------------------------------------------------------------------------
-
-class InputTestConsumer : public nsIStreamListener
-{
-  virtual ~InputTestConsumer();
-
-public:
-
-  InputTestConsumer();
-
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSIREQUESTOBSERVER
-  NS_DECL_NSISTREAMLISTENER
-};
-
-InputTestConsumer::InputTestConsumer()
-{
-}
-
-InputTestConsumer::~InputTestConsumer() = default;
-
-NS_IMPL_ISUPPORTS(InputTestConsumer,
-                  nsIStreamListener,
-                  nsIRequestObserver)
-
-NS_IMETHODIMP
-InputTestConsumer::OnStartRequest(nsIRequest *request, nsISupports* context)
-{
-  LOG(("InputTestConsumer::OnStartRequest\n"));
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-InputTestConsumer::OnDataAvailable(nsIRequest *request, 
-                                   nsISupports* context,
-                                   nsIInputStream *aIStream, 
-                                   uint64_t aSourceOffset,
-                                   uint32_t aLength)
-{
-  char buf[1025];
-  uint32_t amt, size;
-  nsresult rv;
-
-  while (aLength) {
-    size = std::min<uint32_t>(aLength, sizeof(buf));
-    rv = aIStream->Read(buf, size, &amt);
-    if (NS_FAILED(rv)) {
-      NS_ASSERTION((NS_BASE_STREAM_WOULD_BLOCK != rv), 
-                   "The stream should never block.");
-      return rv;
-    }
-    aLength -= amt;
-  }
-  return NS_OK;
-}
-
-
-NS_IMETHODIMP
-InputTestConsumer::OnStopRequest(nsIRequest *request, nsISupports* context,
-                                 nsresult aStatus)
-{
-    LOG(("InputTestConsumer::OnStopRequest [status=%x]\n", aStatus));
-    QuitPumpingEvents();
-    return NS_OK;
-}
-
-
-int
-main(int argc, char* argv[])
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    nsresult rv;
-
-    if (argc < 2) {
-        printf("usage: %s <url> <file-to-upload>\n", argv[0]);
-        return -1;
-    }
-    char* uriSpec  = argv[1];
-    char* fileName = argv[2];
-
-    gTestLog = PR_NewLogModule("Test");
-
-    {
-        nsCOMPtr<nsIServiceManager> servMan;
-        NS_InitXPCOM2(getter_AddRefs(servMan), nullptr, nullptr);
-
-        // first thing to do is create ourselves a stream that
-        // is to be uploaded.
-        nsCOMPtr<nsIInputStream> uploadStream;
-        rv = NS_NewPostDataStream(getter_AddRefs(uploadStream),
-                                  true,
-                                  nsDependentCString(fileName)); // XXX UTF-8
-        if (NS_FAILED(rv)) return -1;
-
-        // create our url.
-        nsCOMPtr<nsIURI> uri;
-        rv = NS_NewURI(getter_AddRefs(uri), uriSpec);
-        if (NS_FAILED(rv)) return -1;
-
-        nsCOMPtr<nsIScriptSecurityManager> secman =
-          do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv);
-        if (NS_FAILED(rv)) return -1;
-        nsCOMPtr<nsIPrincipal> systemPrincipal;
-        rv = secman->GetSystemPrincipal(getter_AddRefs(systemPrincipal));
-        if (NS_FAILED(rv)) return -1;
-
-        nsCOMPtr<nsIChannel> channel;
-        rv = NS_NewChannel(getter_AddRefs(channel),
-                           uri,
-                           systemPrincipal,
-                           nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_INHERITS,
-                           nsIContentPolicy::TYPE_OTHER);
-        if (NS_FAILED(rv)) return -1;
-	
-        // QI and set the upload stream
-        nsCOMPtr<nsIUploadChannel> uploadChannel(do_QueryInterface(channel));
-        uploadChannel->SetUploadStream(uploadStream, EmptyCString(), -1);
-
-        // create a dummy listener
-        InputTestConsumer* listener;
-
-        listener = new InputTestConsumer;
-        if (!listener) {
-            NS_ERROR("Failed to create a new stream listener!");
-            return -1;
-        }
-        NS_ADDREF(listener);
-
-        channel->AsyncOpen2(listener);
-
-        PumpEvents();
-    } // this scopes the nsCOMPtrs
-    // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM
-    rv = NS_ShutdownXPCOM(nullptr);
-    NS_ASSERTION(NS_SUCCEEDED(rv), "NS_ShutdownXPCOM failed");
-
-    return 0;
-}
-
--- a/netwerk/test/moz.build
+++ b/netwerk/test/moz.build
@@ -9,62 +9,29 @@ TEST_DIRS += ['httpserver', 'gtest']
 BROWSER_CHROME_MANIFESTS += ['browser/browser.ini']
 MOCHITEST_MANIFESTS += ['mochitests/mochitest.ini']
 
 XPCSHELL_TESTS_MANIFESTS += [
     'unit/xpcshell.ini',
     'unit_ipc/xpcshell.ini',
 ]
 
-GeckoSimplePrograms([
-    'PropertiesTest',
-    'ReadNTLM',
-    'TestBlockingSocket',
-    'TestDNS',
-    'TestIncrementalDownload',
-    'TestOpen',
-    'TestProtocols',
-    'TestServ',
-    'TestStreamLoader',
-    'TestUpload',
-    'TestURLParser',
-    'urltest',
-])
-
-# XXX Make this work in libxul builds.
-#SIMPLE_PROGRAMS += [
-#    TestIDN',
-#    TestIOThreads',
-#    TestSocketTransport',
-#    TestStreamPump',
-#    TestStreamTransport',
-#    TestUDPSocketProvider',
-#]
-
-CppUnitTests([
-    'TestBind',
-    'TestCookie',
-    'TestUDPSocket',
-])
+FINAL_LIBRARY = 'xul-gtest'
+UNIFIED_SOURCES += [
+    'TestBind.cpp',
+    'TestCookie.cpp',
+    'TestUDPSocket.cpp',
+]
 
 if CONFIG['OS_TARGET'] == 'WINNT':
-    CppUnitTests([
-        'TestNamedPipeService'
-    ])
+    UNIFIED_SOURCES += [
+        'TestNamedPipeService.cpp',
+    ]
 
 RESOURCE_FILES += [
     'urlparse.dat',
     'urlparse_unx.dat',
 ]
 
-USE_LIBS += ['static:js']
-
-if CONFIG['ENABLE_INTL_API'] and CONFIG['MOZ_ICU_DATA_ARCHIVE']:
-    # The ICU libraries linked into libmozjs will not include the ICU data,
-    # so link it directly.
-    USE_LIBS += ['icudata']
-
-CXXFLAGS += CONFIG['TK_CFLAGS']
-
 include('/ipc/chromium/chromium-config.mozbuild')
 
 if CONFIG['GNU_CXX']:
     CXXFLAGS += ['-Wno-shadow']
deleted file mode 100644
--- a/netwerk/test/urltest.cpp
+++ /dev/null
@@ -1,461 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/*
-    A test file to check default URL parsing.
-    -Gagan Saksena 03/25/99
-*/
-
-#include <stdio.h>
-
-#include "TestCommon.h"
-#include "plstr.h"
-#include "nsIServiceManager.h"
-#include "nsIIOService.h"
-#include "nsIURL.h"
-#include "nsCOMPtr.h"
-#include "nsStringAPI.h"
-#include "nsNetCID.h"
-#include "nsIComponentRegistrar.h"
-#include "nsComponentManagerUtils.h"
-#include "nsServiceManagerUtils.h"
-#include "nsXPCOM.h"
-#include "prprf.h"
-#include "mozilla/Sprintf.h"
-
-// Define CIDs...
-static NS_DEFINE_CID(kIOServiceCID,              NS_IOSERVICE_CID);
-static NS_DEFINE_CID(kStdURLCID,                 NS_STANDARDURL_CID);
-
-char* gFileIO = 0;
-
-enum {
-    URL_FACTORY_DEFAULT,
-    URL_FACTORY_STDURL
-};
-
-nsresult writeoutto(const char* i_pURL, char** o_Result, int32_t urlFactory = URL_FACTORY_DEFAULT)
-{
-    if (!o_Result || !i_pURL)
-        return NS_ERROR_FAILURE;
-    *o_Result = 0;
-    nsCOMPtr<nsIURI> pURL;
-    nsresult result = NS_OK;
-
-    switch (urlFactory) {
-        case URL_FACTORY_STDURL: {
-            nsIURI* url;
-            result = CallCreateInstance(kStdURLCID, &url);
-            if (NS_FAILED(result))
-            {
-                printf("CreateInstance failed\n");
-                return NS_ERROR_FAILURE;
-            }
-            pURL = url;
-            result = pURL->SetSpec(nsDependentCString(i_pURL));
-            if (NS_FAILED(result))
-            {
-                printf("SetSpec failed\n");
-                return NS_ERROR_FAILURE;
-            }
-            break;
-        }
-        case URL_FACTORY_DEFAULT: {
-            nsCOMPtr<nsIIOService> pService = 
-                     do_GetService(kIOServiceCID, &result);
-            if (NS_FAILED(result)) 
-            {
-                printf("Service failed!\n");
-                return NS_ERROR_FAILURE;
-            }   
-            result = pService->NewURI(nsDependentCString(i_pURL), nullptr, nullptr, getter_AddRefs(pURL));
-        }
-    }
-
-    nsCString output;
-    if (NS_SUCCEEDED(result))
-    {
-        nsCOMPtr<nsIURL> tURL = do_QueryInterface(pURL);
-        nsAutoCString temp;
-        int32_t port;
-        nsresult rv;
-
-#define RESULT() NS_SUCCEEDED(rv) ? temp.get() : ""
-
-        rv = tURL->GetScheme(temp);
-        output += RESULT();
-        output += ',';
-        rv = tURL->GetUsername(temp);
-        output += RESULT();
-        output += ',';
-        rv = tURL->GetPassword(temp);
-        output += RESULT();
-        output += ',';
-        rv = tURL->GetHost(temp);
-        output += RESULT();
-        output += ',';
-        rv = tURL->GetPort(&port);
-        char portbuffer[40];
-        SprintfLiteral(portbuffer, "%d", port);
-        output.Append(portbuffer);
-        output += ',';
-        rv = tURL->GetDirectory(temp);
-        output += RESULT();
-        output += ',';
-        rv = tURL->GetFileBaseName(temp);
-        output += RESULT();
-        output += ',';
-        rv = tURL->GetFileExtension(temp);
-        output += RESULT();
-        output += ',';
-        // removed with https://bugzilla.mozilla.org/show_bug.cgi?id=665706
-        // rv = tURL->GetParam(temp); 
-        // output += RESULT();
-        output += ',';
-        rv = tURL->GetQuery(temp);
-        output += RESULT();
-        output += ',';
-        rv = tURL->GetRef(temp);
-        output += RESULT();
-        output += ',';
-        rv = tURL->GetSpec(temp);
-        output += RESULT();
-        *o_Result = ToNewCString(output);
-    } else {
-        output = "Can not create URL";
-        *o_Result = ToNewCString(output);
-    }
-    return NS_OK;
-}
-
-nsresult writeout(const char* i_pURL, int32_t urlFactory = URL_FACTORY_DEFAULT)
-{
-    if (!i_pURL) return NS_ERROR_FAILURE;
-    nsCString temp;
-    nsresult rv = writeoutto(i_pURL, getter_Copies(temp), urlFactory);
-    printf("%s\n%s\n", i_pURL, temp.get());
-    return rv;
-}
-
-/* construct a url and print out its elements separated by commas and
-   the whole spec */
-nsresult testURL(const char* i_pURL, int32_t urlFactory = URL_FACTORY_DEFAULT)
-{
-
-    if (i_pURL)
-        return writeout(i_pURL, urlFactory);
-
-    if (!gFileIO)
-        return NS_ERROR_FAILURE;
-
-    FILE *testfile = fopen(gFileIO, "rt");
-    if (!testfile) 
-    {
-        fprintf(stderr, "Cannot open testfile: %s\n", gFileIO);
-        return NS_ERROR_FAILURE;
-    }
-
-    char temp[512];
-    int count=0;
-    int failed=0;
-    nsCString prevResult;
-    nsCString tempurl;
-
-    while (fgets(temp,512,testfile))
-    {
-        if (*temp == '#' || !*temp)
-            continue;
-
-        if (0 == count%3)
-        {
-            printf("Testing:  %s\n", temp);
-            writeoutto(temp, getter_Copies(prevResult), urlFactory);
-        }
-        else if (1 == count%3) {
-            tempurl.Assign(temp);
-        } else { 
-            if (prevResult.IsEmpty())
-                printf("no results to compare to!\n");
-            else 
-            {
-                int32_t res;
-                printf("Result:   %s\n", prevResult.get());
-                if (urlFactory != URL_FACTORY_DEFAULT) {
-                    printf("Expected: %s\n", tempurl.get());
-                    res = PL_strcmp(tempurl.get(), prevResult.get());
-                } else {
-                    printf("Expected: %s\n", temp);
-                    res = PL_strcmp(temp, prevResult.get());
-                }
-
-                if (res == 0)
-                    printf("\tPASSED\n\n");
-                else 
-                {
-                    printf("\tFAILED\n\n");
-                    failed++;
-                }
-            }
-        }
-        count++;
-    }
-    if (failed>0) {
-        printf("%d tests FAILED out of %d\n", failed, count/3);
-        return NS_ERROR_FAILURE;
-    } else {
-        printf("All %d tests PASSED.\n", count/3);
-        return NS_OK;
-    }
-}
-
-nsresult makeAbsTest(const char* i_BaseURI, const char* relativePortion,
-                     const char* expectedResult)
-{
-    if (!i_BaseURI)
-        return NS_ERROR_FAILURE;
-
-    // build up the base URL
-    nsresult status;
-    nsCOMPtr<nsIURI> baseURL = do_CreateInstance(kStdURLCID, &status);
-    if (NS_FAILED(status))
-    {
-        printf("CreateInstance failed\n");
-        return status;
-    }
-    status = baseURL->SetSpec(nsDependentCString(i_BaseURI));
-    if (NS_FAILED(status)) return status;
-
-
-    // get the new spec
-    nsAutoCString newURL;
-    status = baseURL->Resolve(nsDependentCString(relativePortion), newURL);
-    if (NS_FAILED(status)) return status;
-
-    printf("Analyzing %s\n", baseURL->GetSpecOrDefault().get());
-    printf("With      %s\n", relativePortion);
-
-    printf("Got       %s\n", newURL.get());
-    if (expectedResult) {
-        printf("Expect    %s\n", expectedResult);
-        int res = PL_strcmp(newURL.get(), expectedResult);
-        if (res == 0) {
-            printf("\tPASSED\n\n");
-            return NS_OK;
-        } else {
-            printf("\tFAILED\n\n");
-            return NS_ERROR_FAILURE;
-        }
-    }
-    return NS_OK;
-}
-
-nsresult doMakeAbsTest(const char* i_URL = 0, const char* i_relativePortion=0)
-{
-    if (i_URL && i_relativePortion)
-    {
-        return makeAbsTest(i_URL, i_relativePortion, nullptr);
-    }
-
-    // Run standard tests. These tests are based on the ones described in 
-    // rfc2396 with the exception of the handling of ?y which is wrong as
-    // notified by on of the RFC authors.
-
-    /* Section C.1.  Normal Examples
-
-      g:h        = <URL:g:h>
-      g          = <URL:http://a/b/c/g>
-      ./g        = <URL:http://a/b/c/g>
-      g/         = <URL:http://a/b/c/g/>
-      /g         = <URL:http://a/g>
-      //g        = <URL:http://g>
-      ?y         = <URL:http://a/b/c/d;p?y>
-      g?y        = <URL:http://a/b/c/g?y>
-      g?y/./x    = <URL:http://a/b/c/g?y/./x>
-      #s         = <URL:http://a/b/c/d;p?q#s>
-      g#s        = <URL:http://a/b/c/g#s>
-      g#s/./x    = <URL:http://a/b/c/g#s/./x>
-      g?y#s      = <URL:http://a/b/c/g?y#s>
-      ;x         = <URL:http://a/b/c/;x>
-      g;x        = <URL:http://a/b/c/g;x>
-      g;x?y#s    = <URL:http://a/b/c/g;x?y#s>
-      .          = <URL:http://a/b/c/>
-      ./         = <URL:http://a/b/c/>
-      ..         = <URL:http://a/b/>
-      ../        = <URL:http://a/b/>
-      ../g       = <URL:http://a/b/g>
-      ../..      = <URL:http://a/>
-      ../../     = <URL:http://a/>
-      ../../g    = <URL:http://a/g>
-    */
-
-    struct test {
-        const char* baseURL;
-        const char* relativeURL;
-        const char* expectedResult;
-    };
-
-    test tests[] = {
-        // Tests from rfc2396, section C.1 with the exception of the
-        // handling of ?y
-        { "http://a/b/c/d;p?q#f",     "g:h",         "g:h" },
-        { "http://a/b/c/d;p?q#f",     "g",           "http://a/b/c/g" },
-        { "http://a/b/c/d;p?q#f",     "./g",         "http://a/b/c/g" },
-        { "http://a/b/c/d;p?q#f",     "g/",          "http://a/b/c/g/" },
-        { "http://a/b/c/d;p?q#f",     "/g",          "http://a/g" },
-        { "http://a/b/c/d;p?q#f",     "//g",         "http://g" },
-        { "http://a/b/c/d;p?q#f",     "?y",          "http://a/b/c/d;p?y" },
-        { "http://a/b/c/d;p?q#f",     "g?y",         "http://a/b/c/g?y" },
-        { "http://a/b/c/d;p?q#f",     "g?y/./x",     "http://a/b/c/g?y/./x" },
-        { "http://a/b/c/d;p?q#f",     "#s",          "http://a/b/c/d;p?q#s" },
-        { "http://a/b/c/d;p?q#f",     "g#s",         "http://a/b/c/g#s" },
-        { "http://a/b/c/d;p?q#f",     "g#s/./x",     "http://a/b/c/g#s/./x" },
-        { "http://a/b/c/d;p?q#f",     "g?y#s",       "http://a/b/c/g?y#s" },
-        { "http://a/b/c/d;p?q#f",     ";x",          "http://a/b/c/;x" },
-        { "http://a/b/c/d;p?q#f",     "g;x",         "http://a/b/c/g;x" },
-        { "http://a/b/c/d;p?q#f",     "g;x?y#s",     "http://a/b/c/g;x?y#s" },
-        { "http://a/b/c/d;p?q#f",     ".",           "http://a/b/c/" },
-        { "http://a/b/c/d;p?q#f",     "./",          "http://a/b/c/" },
-        { "http://a/b/c/d;p?q#f",     "..",          "http://a/b/" },
-        { "http://a/b/c/d;p?q#f",     "../",         "http://a/b/" },
-        { "http://a/b/c/d;p?q#f",     "../g",        "http://a/b/g" },
-        { "http://a/b/c/d;p?q#f",     "../..",       "http://a/" },
-        { "http://a/b/c/d;p?q#f",     "../../",      "http://a/" },
-        { "http://a/b/c/d;p?q#f",     "../../g",     "http://a/g" },
-
-        // Our additional tests...
-        { "http://a/b/c/d;p?q#f",     "#my::anchor", "http://a/b/c/d;p?q#my::anchor" },
-        { "http://a/b/c/d;p?q#f",     "get?baseRef=viewcert.jpg", "http://a/b/c/get?baseRef=viewcert.jpg" },
-
-        // Make sure relative query's work right even if the query
-        // string contains absolute urls or other junk.
-        { "http://a/b/c/d;p?q#f",     "?http://foo",        "http://a/b/c/d;p?http://foo" },
-        { "http://a/b/c/d;p?q#f",     "g?http://foo",       "http://a/b/c/g?http://foo" },
-        {"http://a/b/c/d;p?q#f",      "g/h?http://foo",     "http://a/b/c/g/h?http://foo" },
-        { "http://a/b/c/d;p?q#f",     "g/h/../H?http://foo","http://a/b/c/g/H?http://foo" },
-        { "http://a/b/c/d;p?q#f",     "g/h/../H?http://foo?baz", "http://a/b/c/g/H?http://foo?baz" },
-        { "http://a/b/c/d;p?q#f",     "g/h/../H?http://foo;baz", "http://a/b/c/g/H?http://foo;baz" },
-        { "http://a/b/c/d;p?q#f",     "g/h/../H?http://foo#bar", "http://a/b/c/g/H?http://foo#bar" },
-        { "http://a/b/c/d;p?q#f",     "g/h/../H;baz?http://foo", "http://a/b/c/g/H;baz?http://foo" },
-        { "http://a/b/c/d;p?q#f",     "g/h/../H;baz?http://foo#bar", "http://a/b/c/g/H;baz?http://foo#bar" },
-        { "http://a/b/c/d;p?q#f",     R"(g/h/../H;baz?C:\temp)", R"(http://a/b/c/g/H;baz?C:\temp)" },
-        { "http://a/b/c/d;p?q#f",     "", "http://a/b/c/d;p?q" },
-        { "http://a/b/c/d;p?q#f",     "#", "http://a/b/c/d;p?q#" },
-        { "http://a/b/c;p/d;p?q#f",   "../g;p" , "http://a/b/g;p" },
-
-    };
-
-    const int numTests = sizeof(tests) / sizeof(tests[0]);
-    int failed = 0;
-    nsresult rv;
-    for (auto & test : tests)
-    {
-        rv = makeAbsTest(test.baseURL, test.relativeURL,
-                         test.expectedResult);
-        if (NS_FAILED(rv))
-            failed++;
-    }
-    if (failed>0) {
-        printf("%d tests FAILED out of %d\n", failed, numTests);
-        return NS_ERROR_FAILURE;
-    } else {
-        printf("All %d tests PASSED.\n", numTests);
-        return NS_OK;
-    }
-}
-
-void printusage(void)
-{
-    printf("urltest [-std] [-file <filename>] <URL> "
-           " [-abs <relative>]\n\n"
-           "\t-std  : Generate results using nsStdURL.\n"
-           "\t-file : Read URLs from file.\n"
-           "\t-abs  : Make an absolute URL from the base (<URL>) and the\n"
-           "\t\trelative path specified. If -abs is given without\n"
-           "\t\ta base URI standard RFC 2396 relative URL tests\n"
-           "\t\tare performed. Implies -std.\n"
-           "\t<URL> : The string representing the URL.\n");
-}
-
-int main(int argc, char **argv)
-{
-    if (test_common_init(&argc, &argv) != 0)
-        return -1;
-
-    if (argc < 2) {
-        printusage();
-        return 0;
-    }
-    {
-        nsCOMPtr<nsIServiceManager> servMan;
-        NS_InitXPCOM2(getter_AddRefs(servMan), nullptr, nullptr);
-
-        // end of all messages from register components...
-        printf("------------------\n\n");
-
-        int32_t urlFactory = URL_FACTORY_DEFAULT;
-        bool bMakeAbs= false;
-        char* relativePath = 0;
-        char* url = 0;
-        for (int i=1; i<argc; i++) {
-            if (PL_strcasecmp(argv[i], "-std") == 0)
-            {
-                urlFactory = URL_FACTORY_STDURL;
-                if (i+1 >= argc)
-                {
-                    printusage();
-                    return 0;
-                }
-            }
-            else if (PL_strcasecmp(argv[i], "-abs") == 0)
-            {
-                if (!gFileIO)
-                {
-                    relativePath = argv[i+1];
-                    i++;
-                }
-                bMakeAbs = true;
-            }
-            else if (PL_strcasecmp(argv[i], "-file") == 0)
-            {
-                if (i+1 >= argc)
-                {
-                    printusage();
-                    return 0;
-                }
-                gFileIO = argv[i+1];
-                i++;
-            }
-            else
-            {
-                url = argv[i];
-            }
-        }
-        PRTime startTime = PR_Now();
-        if (bMakeAbs)
-        {
-            if (url && relativePath) {
-              doMakeAbsTest(url, relativePath);
-            } else {
-              doMakeAbsTest();
-            }
-        }
-        else
-        {
-            if (gFileIO) {
-              testURL(0, urlFactory);
-            } else {
-              testURL(url, urlFactory);
-            }
-        }
-        if (gFileIO)
-        {
-            PRTime endTime = PR_Now();
-            printf("Elapsed time: %d micros.\n", (int32_t)
-                (endTime - startTime));
-        }
-    } // this scopes the nsCOMPtrs
-    // no nsCOMPtrs are allowed to be alive when you call NS_ShutdownXPCOM
-    return NS_FAILED(NS_ShutdownXPCOM(nullptr)) ? 1 : 0;
-}
--- a/testing/cppunittest.ini
+++ b/testing/cppunittest.ini
@@ -1,20 +1,18 @@
 [ShowSSEConfig]
 [TestAppShellSteadyState]
 [TestArray]
 [TestArrayUtils]
 [TestAtomics]
 [TestBinarySearch]
-[TestBind]
 [TestBloomFilter]
 [TestCasting]
 [TestCeilingFloor]
 [TestCheckedInt]
-[TestCookie]
 [TestCountPopulation]
 [TestCountZeroes]
 [TestDllInterceptor]
 skip-if = os != 'win'
 [TestEndian]
 [TestEnumeratedArray]
 [TestEnumSet]
 [TestEnumTypeTraits]
@@ -40,17 +38,16 @@ skip-if = os == 'android' # Bug 1147630
 [TestSHA1]
 [TestSaturate]
 [TestSplayTree]
 [TestSyncRunnable]
 [TestTemplateLib]
 [TestTuple]
 [TestTypeTraits]
 [TestTypedEnum]
-[TestUDPSocket]
 [TestUniquePtr]
 [TestVariant]
 [TestVector]
 [TestVolatileBuffer]
 [TestWeakPtr]
 [TestXorShift128PlusRNG]
 [buffered_stun_socket_unittest]
 [ice_unittest]