Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef nsAppShellWindowEnumerator_h
7 #define nsAppShellWindowEnumerator_h
9 #include "nsCOMPtr.h"
10 #include "nsString.h"
12 #include "nsISimpleEnumerator.h"
13 #include "nsIXULWindow.h"
15 class nsWindowMediator;
17 //
18 // nsWindowInfo
19 //
21 struct nsWindowInfo
22 {
23 nsWindowInfo(nsIXULWindow* inWindow, int32_t inTimeStamp);
24 ~nsWindowInfo();
26 nsCOMPtr<nsIXULWindow> mWindow;
27 int32_t mTimeStamp;
28 uint32_t mZLevel;
30 // each struct is in two, independent, circular, doubly-linked lists
31 nsWindowInfo *mYounger, // next younger in sequence
32 *mOlder;
33 nsWindowInfo *mLower, // next lower in z-order
34 *mHigher;
36 bool TypeEquals(const nsAString &aType);
37 void InsertAfter(nsWindowInfo *inOlder, nsWindowInfo *inHigher);
38 void Unlink(bool inAge, bool inZ);
39 void ReferenceSelf(bool inAge, bool inZ);
40 };
42 //
43 // virtual enumerators
44 //
46 class nsAppShellWindowEnumerator : public nsISimpleEnumerator {
48 friend class nsWindowMediator;
50 public:
51 nsAppShellWindowEnumerator(const char16_t* aTypeString,
52 nsWindowMediator& inMediator);
53 virtual ~nsAppShellWindowEnumerator();
54 NS_IMETHOD GetNext(nsISupports **retval) = 0;
55 NS_IMETHOD HasMoreElements(bool *retval);
57 NS_DECL_ISUPPORTS
59 protected:
61 void AdjustInitialPosition();
62 virtual nsWindowInfo *FindNext() = 0;
64 void WindowRemoved(nsWindowInfo *inInfo);
66 nsWindowMediator *mWindowMediator;
67 nsString mType;
68 nsWindowInfo *mCurrentPosition;
69 };
71 class nsASDOMWindowEnumerator : public nsAppShellWindowEnumerator {
73 public:
74 nsASDOMWindowEnumerator(const char16_t* aTypeString,
75 nsWindowMediator& inMediator);
76 virtual ~nsASDOMWindowEnumerator();
77 NS_IMETHOD GetNext(nsISupports **retval);
78 };
80 class nsASXULWindowEnumerator : public nsAppShellWindowEnumerator {
82 public:
83 nsASXULWindowEnumerator(const char16_t* aTypeString,
84 nsWindowMediator& inMediator);
85 virtual ~nsASXULWindowEnumerator();
86 NS_IMETHOD GetNext(nsISupports **retval);
87 };
89 //
90 // concrete enumerators
91 //
93 class nsASDOMWindowEarlyToLateEnumerator : public nsASDOMWindowEnumerator {
95 public:
96 nsASDOMWindowEarlyToLateEnumerator(const char16_t* aTypeString,
97 nsWindowMediator& inMediator);
99 virtual ~nsASDOMWindowEarlyToLateEnumerator();
101 protected:
102 virtual nsWindowInfo *FindNext();
103 };
105 class nsASXULWindowEarlyToLateEnumerator : public nsASXULWindowEnumerator {
107 public:
108 nsASXULWindowEarlyToLateEnumerator(const char16_t* aTypeString,
109 nsWindowMediator& inMediator);
111 virtual ~nsASXULWindowEarlyToLateEnumerator();
113 protected:
114 virtual nsWindowInfo *FindNext();
115 };
117 class nsASDOMWindowFrontToBackEnumerator : public nsASDOMWindowEnumerator {
119 public:
120 nsASDOMWindowFrontToBackEnumerator(const char16_t* aTypeString,
121 nsWindowMediator& inMediator);
123 virtual ~nsASDOMWindowFrontToBackEnumerator();
125 protected:
126 virtual nsWindowInfo *FindNext();
127 };
129 class nsASXULWindowFrontToBackEnumerator : public nsASXULWindowEnumerator {
131 public:
132 nsASXULWindowFrontToBackEnumerator(const char16_t* aTypeString,
133 nsWindowMediator& inMediator);
135 virtual ~nsASXULWindowFrontToBackEnumerator();
137 protected:
138 virtual nsWindowInfo *FindNext();
139 };
141 class nsASDOMWindowBackToFrontEnumerator : public nsASDOMWindowEnumerator {
143 public:
144 nsASDOMWindowBackToFrontEnumerator(const char16_t* aTypeString,
145 nsWindowMediator& inMediator);
147 virtual ~nsASDOMWindowBackToFrontEnumerator();
149 protected:
150 virtual nsWindowInfo *FindNext();
151 };
153 class nsASXULWindowBackToFrontEnumerator : public nsASXULWindowEnumerator {
155 public:
156 nsASXULWindowBackToFrontEnumerator(const char16_t* aTypeString,
157 nsWindowMediator& inMediator);
159 virtual ~nsASXULWindowBackToFrontEnumerator();
161 protected:
162 virtual nsWindowInfo *FindNext();
163 };
165 #endif