netwerk/test/TestCommon.h

Wed, 31 Dec 2014 06:55:46 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:46 +0100
changeset 1
ca08bd8f51b2
permissions
-rw-r--r--

Added tag TORBROWSER_REPLICA for changeset 6474c204b198

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 #ifndef TestCommon_h__
     6 #define TestCommon_h__
     8 #include <stdlib.h>
     9 #include "nsThreadUtils.h"
    10 #include "mozilla/Attributes.h"
    12 inline int test_common_init(int *argc, char ***argv)
    13 {
    14   return 0;
    15 }
    17 //-----------------------------------------------------------------------------
    19 static bool gKeepPumpingEvents = false;
    21 class nsQuitPumpingEvent MOZ_FINAL : public nsIRunnable {
    22 public:
    23   NS_DECL_THREADSAFE_ISUPPORTS
    24   NS_IMETHOD Run() {
    25     gKeepPumpingEvents = false;
    26     return NS_OK;
    27   }
    28 };
    29 NS_IMPL_ISUPPORTS(nsQuitPumpingEvent, nsIRunnable)
    31 static inline void PumpEvents()
    32 {
    33   nsCOMPtr<nsIThread> thread = do_GetCurrentThread();
    35   gKeepPumpingEvents = true;
    36   while (gKeepPumpingEvents)
    37     NS_ProcessNextEvent(thread);
    39   NS_ProcessPendingEvents(thread);
    40 }
    42 static inline void QuitPumpingEvents()
    43 {
    44   // Dispatch a task that toggles gKeepPumpingEvents so that we flush all
    45   // of the pending tasks before exiting from PumpEvents.
    46   nsCOMPtr<nsIRunnable> event = new nsQuitPumpingEvent();
    47   NS_DispatchToMainThread(event);
    48 }
    50 #endif

mercurial