Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this file,
5 : * You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef mozilla_dom_SameProcessMessageQueue_h
8 : #define mozilla_dom_SameProcessMessageQueue_h
9 :
10 : #include "nsIRunnable.h"
11 : #include "mozilla/RefPtr.h"
12 : #include "nsTArray.h"
13 :
14 : namespace mozilla {
15 : namespace dom {
16 :
17 : class SameProcessMessageQueue
18 : {
19 : public:
20 : SameProcessMessageQueue();
21 : virtual ~SameProcessMessageQueue();
22 :
23 : class Runnable : public nsIRunnable
24 : {
25 : public:
26 : explicit Runnable();
27 :
28 : NS_DECL_ISUPPORTS
29 : NS_DECL_NSIRUNNABLE
30 :
31 : virtual nsresult HandleMessage() = 0;
32 :
33 : protected:
34 1 : virtual ~Runnable() {}
35 :
36 : private:
37 : bool mDispatched;
38 : };
39 :
40 : void Push(Runnable* aRunnable);
41 : void Flush();
42 :
43 : static SameProcessMessageQueue* Get();
44 :
45 : private:
46 : nsTArray<RefPtr<Runnable>> mQueue;
47 : static SameProcessMessageQueue* sSingleton;
48 : };
49 :
50 : } // namespace dom
51 : } // namespace mozilla
52 :
53 : #endif // mozilla_dom_SameProcessMessageQueue_h
|