tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

XULTabAccessible.h (3006B)


      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/. */
      5 
      6 #ifndef mozilla_a11y_XULTabAccessible_h__
      7 #define mozilla_a11y_XULTabAccessible_h__
      8 
      9 // NOTE: alphabetically ordered
     10 #include "HyperTextAccessible.h"
     11 #include "XULMenuAccessible.h"
     12 #include "XULSelectControlAccessible.h"
     13 
     14 namespace mozilla {
     15 namespace a11y {
     16 
     17 /**
     18 * An individual tab, xul:tab element.
     19 */
     20 class XULTabAccessible : public HyperTextAccessible {
     21 public:
     22  enum { eAction_Switch = 0 };
     23 
     24  XULTabAccessible(nsIContent* aContent, DocAccessible* aDoc);
     25 
     26  // LocalAccessible
     27  virtual a11y::role NativeRole() const override;
     28  virtual uint64_t NativeState() const override;
     29  virtual uint64_t NativeInteractiveState() const override;
     30  virtual Relation RelationByType(RelationType aType) const override;
     31  virtual void ApplyARIAState(uint64_t* aState) const override;
     32 
     33  // ActionAccessible
     34  virtual bool HasPrimaryAction() const override;
     35  virtual void ActionNameAt(uint8_t aIndex, nsAString& aName) override;
     36  virtual bool DoAction(uint8_t aIndex) const override;
     37 };
     38 
     39 /**
     40 * A container of tab objects, xul:tabs element.
     41 */
     42 class XULTabsAccessible : public XULSelectControlAccessible {
     43 public:
     44  XULTabsAccessible(nsIContent* aContent, DocAccessible* aDoc);
     45 
     46  // LocalAccessible
     47  virtual void Value(nsString& aValue) const override;
     48  virtual a11y::role NativeRole() const override;
     49  virtual void ApplyARIAState(uint64_t* aState) const override;
     50 
     51  // ActionAccessible
     52  virtual bool HasPrimaryAction() const override;
     53 
     54  // SelectAccessible
     55  virtual void SelectedItems(nsTArray<Accessible*>* aItems) override;
     56  virtual uint32_t SelectedItemCount() override;
     57  virtual Accessible* GetSelectedItem(uint32_t aIndex) override;
     58  virtual bool IsItemSelected(uint32_t aIndex) override;
     59 
     60 protected:
     61  // LocalAccessible
     62  virtual ENameValueFlag NativeName(nsString& aName) const override;
     63 };
     64 
     65 /**
     66 * A container of tab panels, xul:tabpanels element.
     67 */
     68 class XULTabpanelsAccessible : public AccessibleWrap {
     69 public:
     70  XULTabpanelsAccessible(nsIContent* aContent, DocAccessible* aDoc)
     71      : AccessibleWrap(aContent, aDoc) {
     72    mType = eXULTabpanelsType;
     73  }
     74 
     75  // LocalAccessible
     76  virtual a11y::role NativeRole() const override;
     77 };
     78 
     79 /**
     80 * A tabpanel object, child elements of xul:tabpanels element.
     81 *
     82 * XXX: we need to move the class logic into generic class since
     83 * for example we do not create instance of this class for XUL textbox used as
     84 * a tabpanel.
     85 */
     86 class XULTabpanelAccessible : public AccessibleWrap {
     87 public:
     88  XULTabpanelAccessible(nsIContent* aContent, DocAccessible* aDoc);
     89 
     90  // LocalAccessible
     91  virtual a11y::role NativeRole() const override;
     92  virtual Relation RelationByType(RelationType aType) const override;
     93 };
     94 
     95 }  // namespace a11y
     96 }  // namespace mozilla
     97 
     98 #endif