1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/accessible/src/generic/BaseAccessibles.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,132 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +#ifndef mozilla_a11y_BaseAccessibles_h__ 1.10 +#define mozilla_a11y_BaseAccessibles_h__ 1.11 + 1.12 +#include "AccessibleWrap.h" 1.13 +#include "HyperTextAccessibleWrap.h" 1.14 + 1.15 +class nsIContent; 1.16 + 1.17 +/** 1.18 + * This file contains a number of classes that are used as base 1.19 + * classes for the different accessibility implementations of 1.20 + * the HTML and XUL widget sets. --jgaunt 1.21 + */ 1.22 + 1.23 +namespace mozilla { 1.24 +namespace a11y { 1.25 + 1.26 +/** 1.27 + * Leaf version of DOM Accessible -- has no children 1.28 + */ 1.29 +class LeafAccessible : public AccessibleWrap 1.30 +{ 1.31 +public: 1.32 + 1.33 + LeafAccessible(nsIContent* aContent, DocAccessible* aDoc); 1.34 + 1.35 + // nsISupports 1.36 + NS_DECL_ISUPPORTS_INHERITED 1.37 + 1.38 + // Accessible 1.39 + virtual Accessible* ChildAtPoint(int32_t aX, int32_t aY, 1.40 + EWhichChildAtPoint aWhichChild); 1.41 + virtual bool InsertChildAt(uint32_t aIndex, Accessible* aChild) MOZ_OVERRIDE MOZ_FINAL; 1.42 + virtual bool RemoveChild(Accessible* aChild) MOZ_OVERRIDE MOZ_FINAL; 1.43 + 1.44 +protected: 1.45 + 1.46 + // Accessible 1.47 + virtual void CacheChildren(); 1.48 +}; 1.49 + 1.50 +/** 1.51 + * Used for text or image accessible nodes contained by link accessibles or 1.52 + * accessibles for nodes with registered click event handler. It knows how to 1.53 + * report the state of the host link (traveled or not) and can activate (click) 1.54 + * the host accessible programmatically. 1.55 + */ 1.56 +class LinkableAccessible : public AccessibleWrap 1.57 +{ 1.58 +public: 1.59 + enum { eAction_Jump = 0 }; 1.60 + 1.61 + LinkableAccessible(nsIContent* aContent, DocAccessible* aDoc); 1.62 + 1.63 + NS_DECL_ISUPPORTS_INHERITED 1.64 + 1.65 + // nsIAccessible 1.66 + NS_IMETHOD GetActionName(uint8_t aIndex, nsAString& aName); 1.67 + NS_IMETHOD DoAction(uint8_t index); 1.68 + NS_IMETHOD TakeFocus(); 1.69 + 1.70 + // Accessible 1.71 + virtual void Shutdown(); 1.72 + virtual void Value(nsString& aValue); 1.73 + virtual uint64_t NativeLinkState() const; 1.74 + 1.75 + // ActionAccessible 1.76 + virtual uint8_t ActionCount(); 1.77 + virtual KeyBinding AccessKey() const; 1.78 + 1.79 + // HyperLinkAccessible 1.80 + virtual already_AddRefed<nsIURI> AnchorURIAt(uint32_t aAnchorIndex); 1.81 + 1.82 +protected: 1.83 + // Accessible 1.84 + virtual void BindToParent(Accessible* aParent, uint32_t aIndexInParent); 1.85 + virtual void UnbindFromParent(); 1.86 + 1.87 + /** 1.88 + * Parent accessible that provides an action for this linkable accessible. 1.89 + */ 1.90 + Accessible* mActionAcc; 1.91 + bool mIsLink; 1.92 + bool mIsOnclick; 1.93 +}; 1.94 + 1.95 +/** 1.96 + * A simple accessible that gets its enumerated role passed into constructor. 1.97 + */ 1.98 +class EnumRoleAccessible : public AccessibleWrap 1.99 +{ 1.100 +public: 1.101 + EnumRoleAccessible(nsIContent* aContent, DocAccessible* aDoc, 1.102 + a11y::role aRole); 1.103 + virtual ~EnumRoleAccessible() { } 1.104 + 1.105 + NS_DECL_ISUPPORTS_INHERITED 1.106 + 1.107 + // Accessible 1.108 + virtual a11y::role NativeRole(); 1.109 + 1.110 +protected: 1.111 + a11y::role mRole; 1.112 +}; 1.113 + 1.114 + 1.115 +/** 1.116 + * A wrapper accessible around native accessible to connect it with 1.117 + * crossplatform accessible tree. 1.118 + */ 1.119 +class DummyAccessible : public AccessibleWrap 1.120 +{ 1.121 +public: 1.122 + DummyAccessible() : AccessibleWrap(nullptr, nullptr) { } 1.123 + virtual ~DummyAccessible() { } 1.124 + 1.125 + virtual uint64_t NativeState() MOZ_OVERRIDE MOZ_FINAL; 1.126 + virtual uint64_t NativeInteractiveState() const MOZ_OVERRIDE MOZ_FINAL; 1.127 + virtual uint64_t NativeLinkState() const MOZ_OVERRIDE MOZ_FINAL; 1.128 + virtual bool NativelyUnavailable() const MOZ_OVERRIDE MOZ_FINAL; 1.129 + virtual void ApplyARIAState(uint64_t* aState) const MOZ_OVERRIDE MOZ_FINAL; 1.130 +}; 1.131 + 1.132 +} // namespace a11y 1.133 +} // namespace mozilla 1.134 + 1.135 +#endif