tor-browser

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

ApplicationAccessible.h (3391B)


      1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim:expandtab:shiftwidth=2:tabstop=2:
      3 */
      4 /* This Source Code Form is subject to the terms of the Mozilla Public
      5 * License, v. 2.0. If a copy of the MPL was not distributed with this
      6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      7 
      8 #ifndef mozilla_a11y_ApplicationAccessible_h__
      9 #define mozilla_a11y_ApplicationAccessible_h__
     10 
     11 #include "AccessibleWrap.h"
     12 
     13 #include "nsIXULAppInfo.h"
     14 
     15 namespace mozilla {
     16 namespace a11y {
     17 
     18 /**
     19 * ApplicationAccessible is for the whole application of Mozilla.
     20 * Only one instance of ApplicationAccessible exists for one Mozilla instance.
     21 * And this one should be created when Mozilla Startup (if accessibility
     22 * feature has been enabled) and destroyed when Mozilla Shutdown.
     23 *
     24 * All the accessibility objects for toplevel windows are direct children of
     25 * the ApplicationAccessible instance.
     26 */
     27 
     28 class ApplicationAccessible : public AccessibleWrap {
     29 public:
     30  ApplicationAccessible();
     31 
     32  NS_INLINE_DECL_REFCOUNTING_INHERITED(ApplicationAccessible, AccessibleWrap)
     33 
     34  // LocalAccessible
     35  virtual void Shutdown() override;
     36  virtual LayoutDeviceIntRect Bounds() const override;
     37  virtual nsRect BoundsInAppUnits() const override;
     38  virtual already_AddRefed<AccAttributes> NativeAttributes() override;
     39  virtual GroupPos GroupPosition() override;
     40  virtual ENameValueFlag DirectName(nsString& aName) const override;
     41  virtual void ApplyARIAState(uint64_t* aState) const override;
     42  virtual EDescriptionValueFlag Description(
     43      nsString& aDescription) const override;
     44  virtual void Value(nsString& aValue) const override;
     45  virtual mozilla::a11y::role NativeRole() const override;
     46  virtual uint64_t State() override;
     47  virtual uint64_t NativeState() const override;
     48  virtual Relation RelationByType(RelationType aType) const override;
     49 
     50  virtual LocalAccessible* LocalChildAtPoint(
     51      int32_t aX, int32_t aY, EWhichChildAtPoint aWhichChild) override;
     52  virtual Accessible* FocusedChild() override;
     53 
     54  // ActionAccessible
     55  virtual KeyBinding AccessKey() const override;
     56 
     57  // ApplicationAccessible
     58  void Init();
     59 
     60  void AppName(nsAString& aName) const {
     61    MOZ_ASSERT(mAppInfo, "no application info");
     62 
     63    if (mAppInfo) {
     64      nsAutoCString cname;
     65      mAppInfo->GetName(cname);
     66      AppendUTF8toUTF16(cname, aName);
     67    }
     68  }
     69 
     70  void AppVersion(nsAString& aVersion) const {
     71    MOZ_ASSERT(mAppInfo, "no application info");
     72 
     73    if (mAppInfo) {
     74      nsAutoCString cversion;
     75      mAppInfo->GetVersion(cversion);
     76      AppendUTF8toUTF16(cversion, aVersion);
     77    }
     78  }
     79 
     80  void PlatformName(nsAString& aName) const { aName.AssignLiteral("Gecko"); }
     81 
     82  void PlatformVersion(nsAString& aVersion) const {
     83    MOZ_ASSERT(mAppInfo, "no application info");
     84 
     85    if (mAppInfo) {
     86      nsAutoCString cversion;
     87      mAppInfo->GetPlatformVersion(cversion);
     88      AppendUTF8toUTF16(cversion, aVersion);
     89    }
     90  }
     91 
     92 protected:
     93  virtual ~ApplicationAccessible() {}
     94 
     95  // LocalAccessible
     96  virtual LocalAccessible* GetSiblingAtOffset(
     97      int32_t aOffset, nsresult* aError = nullptr) const override;
     98 
     99 private:
    100  nsCOMPtr<nsIXULAppInfo> mAppInfo;
    101 };
    102 
    103 inline ApplicationAccessible* LocalAccessible::AsApplication() {
    104  return IsApplication() ? static_cast<ApplicationAccessible*>(this) : nullptr;
    105 }
    106 
    107 }  // namespace a11y
    108 }  // namespace mozilla
    109 
    110 #endif