accessible/src/html/HTMLListAccessible.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* vim: set ts=2 et sw=2 tw=80: */
     3 /* This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     5  * You can obtain one at http://mozilla.org/MPL/2.0/. */
     7 #ifndef mozilla_a11y_HTMLListAccessible_h__
     8 #define mozilla_a11y_HTMLListAccessible_h__
    10 #include "BaseAccessibles.h"
    11 #include "HyperTextAccessibleWrap.h"
    13 namespace mozilla {
    14 namespace a11y {
    16 class HTMLListBulletAccessible;
    18 /**
    19  * Used for HTML list (like HTML ul).
    20  */
    21 class HTMLListAccessible : public HyperTextAccessibleWrap
    22 {
    23 public:
    24   HTMLListAccessible(nsIContent* aContent, DocAccessible* aDoc) :
    25     HyperTextAccessibleWrap(aContent, aDoc) { mGenericTypes |= eList; }
    26   virtual ~HTMLListAccessible() { }
    28   // nsISupports
    29   NS_DECL_ISUPPORTS_INHERITED
    31   // Accessible
    32   virtual a11y::role NativeRole();
    33   virtual uint64_t NativeState();
    34 };
    37 /**
    38  * Used for HTML list item (e.g. HTML li).
    39  */
    40 class HTMLLIAccessible : public HyperTextAccessibleWrap
    41 {
    42 public:
    43   HTMLLIAccessible(nsIContent* aContent, DocAccessible* aDoc);
    44   virtual ~HTMLLIAccessible() { }
    46   // nsISupports
    47   NS_DECL_ISUPPORTS_INHERITED
    49   // nsIAccessible
    50   NS_IMETHOD GetBounds(int32_t* aX, int32_t* aY,
    51                        int32_t* aWidth, int32_t* aHeight);
    53   // Accessible
    54   virtual void Shutdown();
    55   virtual a11y::role NativeRole();
    56   virtual uint64_t NativeState();
    58   // HTMLLIAccessible
    59   HTMLListBulletAccessible* Bullet() const { return mBullet; }
    60   void UpdateBullet(bool aHasBullet);
    62 protected:
    63   // Accessible
    64   virtual void CacheChildren();
    66 private:
    67   nsRefPtr<HTMLListBulletAccessible> mBullet;
    68 };
    71 /**
    72  * Used for bullet of HTML list item element (for example, HTML li).
    73  */
    74 class HTMLListBulletAccessible : public LeafAccessible
    75 {
    76 public:
    77   HTMLListBulletAccessible(nsIContent* aContent, DocAccessible* aDoc);
    78   virtual ~HTMLListBulletAccessible() { }
    80   // Accessible
    81   virtual nsIFrame* GetFrame() const;
    82   virtual ENameValueFlag Name(nsString& aName);
    83   virtual a11y::role NativeRole();
    84   virtual uint64_t NativeState();
    85   virtual void AppendTextTo(nsAString& aText, uint32_t aStartOffset = 0,
    86                             uint32_t aLength = UINT32_MAX);
    88   // HTMLListBulletAccessible
    90   /**
    91    * Return true if the bullet is inside of list item element boundaries.
    92    */
    93   bool IsInside() const;
    94 };
    97 inline HTMLLIAccessible*
    98 Accessible::AsHTMLListItem()
    99 {
   100   return IsHTMLListItem() ? static_cast<HTMLLIAccessible*>(this) : nullptr;
   101 }
   103 } // namespace a11y
   104 } // namespace mozilla
   106 #endif

mercurial