1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/ipc/glue/MessagePump.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,95 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#ifndef __IPC_GLUE_MESSAGEPUMP_H__ 1.9 +#define __IPC_GLUE_MESSAGEPUMP_H__ 1.10 + 1.11 +#include "base/message_pump_default.h" 1.12 +#include "base/time.h" 1.13 +#include "mozilla/Attributes.h" 1.14 +#include "nsAutoPtr.h" 1.15 +#include "nsCOMPtr.h" 1.16 + 1.17 +class nsIThread; 1.18 +class nsITimer; 1.19 + 1.20 +namespace mozilla { 1.21 +namespace ipc { 1.22 + 1.23 +class DoWorkRunnable; 1.24 + 1.25 +class MessagePump : public base::MessagePumpDefault 1.26 +{ 1.27 + friend class DoWorkRunnable; 1.28 + 1.29 +public: 1.30 + MessagePump(); 1.31 + 1.32 + // From base::MessagePump. 1.33 + virtual void 1.34 + Run(base::MessagePump::Delegate* aDelegate) MOZ_OVERRIDE; 1.35 + 1.36 + // From base::MessagePump. 1.37 + virtual void 1.38 + ScheduleWork() MOZ_OVERRIDE; 1.39 + 1.40 + // From base::MessagePump. 1.41 + virtual void 1.42 + ScheduleWorkForNestedLoop() MOZ_OVERRIDE; 1.43 + 1.44 + // From base::MessagePump. 1.45 + virtual void 1.46 + ScheduleDelayedWork(const base::TimeTicks& aDelayedWorkTime) MOZ_OVERRIDE; 1.47 + 1.48 +protected: 1.49 + virtual ~MessagePump(); 1.50 + 1.51 +private: 1.52 + // Only called by DoWorkRunnable. 1.53 + void DoDelayedWork(base::MessagePump::Delegate* aDelegate); 1.54 + 1.55 +protected: 1.56 + // mDelayedWorkTimer and mThread are set in Run() by this class or its 1.57 + // subclasses. 1.58 + nsCOMPtr<nsITimer> mDelayedWorkTimer; 1.59 + nsIThread* mThread; 1.60 + 1.61 +private: 1.62 + // Only accessed by this class. 1.63 + nsRefPtr<DoWorkRunnable> mDoWorkEvent; 1.64 +}; 1.65 + 1.66 +class MessagePumpForChildProcess MOZ_FINAL: public MessagePump 1.67 +{ 1.68 +public: 1.69 + MessagePumpForChildProcess() 1.70 + : mFirstRun(true) 1.71 + { } 1.72 + 1.73 + virtual void Run(base::MessagePump::Delegate* aDelegate) MOZ_OVERRIDE; 1.74 + 1.75 +private: 1.76 + ~MessagePumpForChildProcess() 1.77 + { } 1.78 + 1.79 + bool mFirstRun; 1.80 +}; 1.81 + 1.82 +class MessagePumpForNonMainThreads MOZ_FINAL : public MessagePump 1.83 +{ 1.84 +public: 1.85 + MessagePumpForNonMainThreads() 1.86 + { } 1.87 + 1.88 + virtual void Run(base::MessagePump::Delegate* aDelegate) MOZ_OVERRIDE; 1.89 + 1.90 +private: 1.91 + ~MessagePumpForNonMainThreads() 1.92 + { } 1.93 +}; 1.94 + 1.95 +} /* namespace ipc */ 1.96 +} /* namespace mozilla */ 1.97 + 1.98 +#endif /* __IPC_GLUE_MESSAGEPUMP_H__ */