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_XULMenuAccessible_h__
7 #define mozilla_a11y_XULMenuAccessible_h__
9 #include "AccessibleWrap.h"
10 #include "nsIDOMXULSelectCntrlEl.h"
11 #include "XULSelectControlAccessible.h"
13 namespace mozilla {
14 namespace a11y {
16 /**
17 * Used for XUL menu, menuitem elements.
18 */
19 class XULMenuitemAccessible : public AccessibleWrap
20 {
21 public:
22 enum { eAction_Click = 0 };
24 XULMenuitemAccessible(nsIContent* aContent, DocAccessible* aDoc);
26 // nsIAccessible
27 NS_IMETHOD DoAction(uint8_t index);
28 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
30 // Accessible
31 virtual void Description(nsString& aDescription);
32 virtual a11y::role NativeRole();
33 virtual uint64_t NativeState();
34 virtual uint64_t NativeInteractiveState() const;
35 virtual int32_t GetLevelInternal();
37 virtual bool CanHaveAnonChildren();
39 // ActionAccessible
40 virtual uint8_t ActionCount();
41 virtual KeyBinding AccessKey() const;
42 virtual KeyBinding KeyboardShortcut() const;
44 // Widgets
45 virtual bool IsActiveWidget() const;
46 virtual bool AreItemsOperable() const;
47 virtual Accessible* ContainerWidget() const;
49 protected:
50 // Accessible
51 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
52 };
54 /**
55 * Used for XUL menuseparator element.
56 */
57 class XULMenuSeparatorAccessible : public XULMenuitemAccessible
58 {
59 public:
60 XULMenuSeparatorAccessible(nsIContent* aContent, DocAccessible* aDoc);
62 // nsIAccessible
63 NS_IMETHOD DoAction(uint8_t index);
64 NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName);
66 // Accessible
67 virtual a11y::role NativeRole();
68 virtual uint64_t NativeState();
70 // ActionAccessible
71 virtual uint8_t ActionCount();
73 protected:
74 // Accessible
75 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
76 };
79 /**
80 * Used for XUL menupopup and panel.
81 */
82 class XULMenupopupAccessible : public XULSelectControlAccessible
83 {
84 public:
85 XULMenupopupAccessible(nsIContent* aContent, DocAccessible* aDoc);
87 // Accessible
88 virtual a11y::role NativeRole();
89 virtual uint64_t NativeState();
91 // Widgets
92 virtual bool IsWidget() const;
93 virtual bool IsActiveWidget() const;
94 virtual bool AreItemsOperable() const;
96 virtual Accessible* ContainerWidget() const;
98 protected:
99 // Accessible
100 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
101 };
103 /**
104 * Used for XUL menubar element.
105 */
106 class XULMenubarAccessible : public AccessibleWrap
107 {
108 public:
109 XULMenubarAccessible(nsIContent* aContent, DocAccessible* aDoc);
111 // Accessible
112 virtual a11y::role NativeRole();
114 // Widget
115 virtual bool IsActiveWidget() const;
116 virtual bool AreItemsOperable() const;
117 virtual Accessible* CurrentItem();
118 virtual void SetCurrentItem(Accessible* aItem);
120 protected:
121 // Accessible
122 virtual ENameValueFlag NativeName(nsString& aName) MOZ_OVERRIDE;
123 };
125 } // namespace a11y
126 } // namespace mozilla
128 #endif