Tue, 06 Jan 2015 21:39:09 +0100
Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.
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 MOZILLA_A11Y_HTMLFormControlAccessible_H_
7 #define MOZILLA_A11Y_HTMLFormControlAccessible_H_
9 #include "FormControlAccessible.h"
10 #include "HyperTextAccessibleWrap.h"
12 namespace mozilla {
13 namespace a11y {
15 /**
16 * Accessible for HTML progress element.
17 */
18 typedef ProgressMeterAccessible<1> HTMLProgressMeterAccessible;
20 /**
21 * Accessible for HTML input@type="checkbox".
22 */
23 class HTMLCheckboxAccessible : public LeafAccessible
24 {
26 public:
27 enum { eAction_Click = 0 };
29 HTMLCheckboxAccessible(nsIContent* aContent, DocAccessible* aDoc) :
30 LeafAccessible(aContent, aDoc)
31 {
32 // Ignore "CheckboxStateChange" DOM event in lieu of document observer
33 // state change notification.
34 mStateFlags |= eIgnoreDOMUIEvent;
35 }
37 // nsIAccessible
38 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
39 NS_IMETHOD DoAction(uint8_t index);
41 // Accessible
42 virtual mozilla::a11y::role NativeRole();
43 virtual uint64_t NativeState();
45 // ActionAccessible
46 virtual uint8_t ActionCount();
48 // Widgets
49 virtual bool IsWidget() const;
50 };
53 /**
54 * Accessible for HTML input@type="radio" element.
55 */
56 class HTMLRadioButtonAccessible : public RadioButtonAccessible
57 {
59 public:
60 HTMLRadioButtonAccessible(nsIContent* aContent, DocAccessible* aDoc) :
61 RadioButtonAccessible(aContent, aDoc)
62 {
63 // Ignore "RadioStateChange" DOM event in lieu of document observer
64 // state change notification.
65 mStateFlags |= eIgnoreDOMUIEvent;
66 }
68 // Accessible
69 virtual uint64_t NativeState();
70 virtual void GetPositionAndSizeInternal(int32_t *aPosInSet,
71 int32_t *aSetSize);
72 };
75 /**
76 * Accessible for HTML input@type="button", @type="submit", @type="image"
77 * and HTML button elements.
78 */
79 class HTMLButtonAccessible : public HyperTextAccessibleWrap
80 {
82 public:
83 enum { eAction_Click = 0 };
85 HTMLButtonAccessible(nsIContent* aContent, DocAccessible* aDoc);
87 // nsIAccessible
88 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
89 NS_IMETHOD DoAction(uint8_t index);
91 // Accessible
92 virtual mozilla::a11y::role NativeRole();
93 virtual uint64_t State();
94 virtual uint64_t NativeState();
96 // ActionAccessible
97 virtual uint8_t ActionCount();
99 // Widgets
100 virtual bool IsWidget() const;
102 protected:
103 // Accessible
104 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
105 };
108 /**
109 * Accessible for HTML input@type="text", input@type="password", textarea and
110 * other HTML text controls.
111 */
112 class HTMLTextFieldAccessible : public HyperTextAccessibleWrap
113 {
115 public:
116 enum { eAction_Click = 0 };
118 HTMLTextFieldAccessible(nsIContent* aContent, DocAccessible* aDoc);
120 NS_DECL_ISUPPORTS_INHERITED
122 // nsIAccessible
123 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
124 NS_IMETHOD DoAction(uint8_t index);
126 // HyperTextAccessible
127 virtual already_AddRefed<nsIEditor> GetEditor() const;
129 // Accessible
130 virtual void Value(nsString& aValue);
131 virtual void ApplyARIAState(uint64_t* aState) const;
132 virtual mozilla::a11y::role NativeRole();
133 virtual uint64_t NativeState();
134 virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE;
136 // ActionAccessible
137 virtual uint8_t ActionCount();
139 // Widgets
140 virtual bool IsWidget() const;
141 virtual Accessible* ContainerWidget() const;
143 protected:
144 // Accessible
145 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
147 /**
148 * Return a XUL widget element this input is part of.
149 */
150 nsIContent* XULWidgetElm() const { return mContent->GetBindingParent(); }
151 };
154 /**
155 * Accessible for input@type="file" element.
156 */
157 class HTMLFileInputAccessible : public HyperTextAccessibleWrap
158 {
159 public:
160 HTMLFileInputAccessible(nsIContent* aContent, DocAccessible* aDoc);
162 // Accessible
163 virtual mozilla::a11y::role NativeRole();
164 virtual nsresult HandleAccEvent(AccEvent* aAccEvent);
165 };
168 /**
169 * Used for HTML input@type="number".
170 */
171 class HTMLSpinnerAccessible : public AccessibleWrap
172 {
173 public:
174 HTMLSpinnerAccessible(nsIContent* aContent, DocAccessible* aDoc) :
175 AccessibleWrap(aContent, aDoc)
176 {
177 mStateFlags |= eHasNumericValue;
178 }
180 // Accessible
181 virtual mozilla::a11y::role NativeRole() MOZ_OVERRIDE;
182 virtual void Value(nsString& aValue) MOZ_OVERRIDE;
184 virtual double MaxValue() const MOZ_OVERRIDE;
185 virtual double MinValue() const MOZ_OVERRIDE;
186 virtual double CurValue() const MOZ_OVERRIDE;
187 virtual double Step() const MOZ_OVERRIDE;
188 virtual bool SetCurValue(double aValue) MOZ_OVERRIDE;
189 };
192 /**
193 * Used for input@type="range" element.
194 */
195 class HTMLRangeAccessible : public LeafAccessible
196 {
197 public:
198 HTMLRangeAccessible(nsIContent* aContent, DocAccessible* aDoc) :
199 LeafAccessible(aContent, aDoc)
200 {
201 mStateFlags |= eHasNumericValue;
202 }
204 // Accessible
205 virtual void Value(nsString& aValue);
206 virtual mozilla::a11y::role NativeRole();
208 // Value
209 virtual double MaxValue() const MOZ_OVERRIDE;
210 virtual double MinValue() const MOZ_OVERRIDE;
211 virtual double CurValue() const MOZ_OVERRIDE;
212 virtual double Step() const MOZ_OVERRIDE;
213 virtual bool SetCurValue(double aValue) MOZ_OVERRIDE;
215 // Widgets
216 virtual bool IsWidget() const;
217 };
220 /**
221 * Accessible for HTML fieldset element.
222 */
223 class HTMLGroupboxAccessible : public HyperTextAccessibleWrap
224 {
225 public:
226 HTMLGroupboxAccessible(nsIContent* aContent, DocAccessible* aDoc);
228 // Accessible
229 virtual mozilla::a11y::role NativeRole();
230 virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
232 protected:
233 // Accessible
234 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
236 // HTMLGroupboxAccessible
237 nsIContent* GetLegend();
238 };
241 /**
242 * Accessible for HTML legend element.
243 */
244 class HTMLLegendAccessible : public HyperTextAccessibleWrap
245 {
246 public:
247 HTMLLegendAccessible(nsIContent* aContent, DocAccessible* aDoc);
249 // Accessible
250 virtual mozilla::a11y::role NativeRole();
251 virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
252 };
254 /**
255 * Accessible for HTML5 figure element.
256 */
257 class HTMLFigureAccessible : public HyperTextAccessibleWrap
258 {
259 public:
260 HTMLFigureAccessible(nsIContent* aContent, DocAccessible* aDoc);
262 // Accessible
263 virtual already_AddRefed<nsIPersistentProperties> NativeAttributes() MOZ_OVERRIDE;
264 virtual mozilla::a11y::role NativeRole();
265 virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
267 protected:
268 // Accessible
269 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
271 // HTMLLegendAccessible
272 nsIContent* Caption() const;
273 };
276 /**
277 * Accessible for HTML5 figcaption element.
278 */
279 class HTMLFigcaptionAccessible : public HyperTextAccessibleWrap
280 {
281 public:
282 HTMLFigcaptionAccessible(nsIContent* aContent, DocAccessible* aDoc);
284 // Accessible
285 virtual mozilla::a11y::role NativeRole();
286 virtual Relation RelationByType(RelationType aType) MOZ_OVERRIDE;
287 };
289 } // namespace a11y
290 } // namespace mozilla
292 #endif