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_HTMLImageMapAccessible_h__
7 #define mozilla_a11y_HTMLImageMapAccessible_h__
9 #include "HTMLLinkAccessible.h"
10 #include "ImageAccessible.h"
16 * Used for HTML image maps.
18 class HTMLImageMapAccessible final
: public ImageAccessible
{
20 HTMLImageMapAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
22 // nsISupports and cycle collector
23 NS_INLINE_DECL_REFCOUNTING_INHERITED(HTMLImageMapAccessible
, ImageAccessible
)
26 virtual a11y::role
NativeRole() const override
;
29 * Update area children of the image map.
31 void UpdateChildAreas(bool aDoFireEvents
= true);
34 * Return accessible of child node.
36 LocalAccessible
* GetChildAccessibleFor(const nsINode
* aNode
) const;
39 virtual ~HTMLImageMapAccessible() {}
43 * Accessible for image map areas - must be child of image.
45 class HTMLAreaAccessible final
: public HTMLLinkAccessible
{
47 HTMLAreaAccessible(nsIContent
* aContent
, DocAccessible
* aDoc
);
50 virtual void Description(nsString
& aDescription
) const override
;
51 virtual LocalAccessible
* LocalChildAtPoint(
52 int32_t aX
, int32_t aY
, EWhichChildAtPoint aWhichChild
) override
;
53 virtual nsRect
RelativeBounds(nsIFrame
** aBoundingFrame
) const override
;
54 virtual nsRect
ParentRelativeBounds() override
;
56 // HyperLinkAccessible
57 virtual uint32_t StartOffset() override
;
58 virtual uint32_t EndOffset() override
;
60 virtual bool IsAcceptableChild(nsIContent
* aEl
) const override
{
65 virtual role
NativeRole() const override
;
69 virtual ENameValueFlag
NativeName(nsString
& aName
) const override
;
72 ////////////////////////////////////////////////////////////////////////////////
73 // LocalAccessible downcasting method
75 inline HTMLImageMapAccessible
* LocalAccessible::AsImageMap() {
76 return IsImageMap() ? static_cast<HTMLImageMapAccessible
*>(this) : nullptr;
80 } // namespace mozilla