LCOV - code coverage report
Current view: top level - accessible/generic - Accessible-inl.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 57 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 12 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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/. */
       6             : 
       7             : #ifndef mozilla_a11y_Accessible_inl_h_
       8             : #define mozilla_a11y_Accessible_inl_h_
       9             : 
      10             : #include "DocAccessible.h"
      11             : #include "ARIAMap.h"
      12             : #include "nsCoreUtils.h"
      13             : 
      14             : #ifdef A11Y_LOG
      15             : #include "Logging.h"
      16             : #endif
      17             : 
      18             : namespace mozilla {
      19             : namespace a11y {
      20             : 
      21             : inline mozilla::a11y::role
      22           0 : Accessible::Role()
      23             : {
      24           0 :   const nsRoleMapEntry* roleMapEntry = ARIARoleMap();
      25           0 :   if (!roleMapEntry || roleMapEntry->roleRule != kUseMapRole)
      26           0 :     return ARIATransformRole(NativeRole());
      27             : 
      28           0 :   return ARIATransformRole(roleMapEntry->role);
      29             : }
      30             : 
      31             : inline bool
      32           0 : Accessible::HasARIARole() const
      33             : {
      34           0 :   return mRoleMapEntryIndex != aria::NO_ROLE_MAP_ENTRY_INDEX;
      35             : }
      36             : 
      37             : inline bool
      38           0 : Accessible::IsARIARole(nsIAtom* aARIARole) const
      39             : {
      40           0 :   const nsRoleMapEntry* roleMapEntry = ARIARoleMap();
      41           0 :   return roleMapEntry && roleMapEntry->Is(aARIARole);
      42             : }
      43             : 
      44             : inline bool
      45           0 : Accessible::HasStrongARIARole() const
      46             : {
      47           0 :   const nsRoleMapEntry* roleMapEntry = ARIARoleMap();
      48           0 :   return roleMapEntry && roleMapEntry->roleRule == kUseMapRole;
      49             : }
      50             : 
      51             : inline const nsRoleMapEntry*
      52           0 : Accessible::ARIARoleMap() const
      53             : {
      54           0 :   return aria::GetRoleMapFromIndex(mRoleMapEntryIndex);
      55             : }
      56             : 
      57             : inline mozilla::a11y::role
      58           0 : Accessible::ARIARole()
      59             : {
      60           0 :   const nsRoleMapEntry* roleMapEntry = ARIARoleMap();
      61           0 :   if (!roleMapEntry || roleMapEntry->roleRule != kUseMapRole)
      62           0 :     return mozilla::a11y::roles::NOTHING;
      63             : 
      64           0 :   return ARIATransformRole(roleMapEntry->role);
      65             : }
      66             : 
      67             : inline void
      68           0 : Accessible::SetRoleMapEntry(const nsRoleMapEntry* aRoleMapEntry)
      69             : {
      70           0 :   mRoleMapEntryIndex = aria::GetIndexFromRoleMap(aRoleMapEntry);
      71           0 : }
      72             : 
      73             : inline bool
      74           0 : Accessible::IsSearchbox() const
      75             : {
      76           0 :   const nsRoleMapEntry* roleMapEntry = ARIARoleMap();
      77           0 :   return (roleMapEntry && roleMapEntry->Is(nsGkAtoms::searchbox)) ||
      78           0 :     (mContent->IsHTMLElement(nsGkAtoms::input) &&
      79           0 :      mContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
      80           0 :                            nsGkAtoms::textInputType, eCaseMatters));
      81             : }
      82             : 
      83             : inline bool
      84           0 : Accessible::HasGenericType(AccGenericType aType) const
      85             : {
      86           0 :   const nsRoleMapEntry* roleMapEntry = ARIARoleMap();
      87           0 :   return (mGenericTypes & aType) ||
      88           0 :     (roleMapEntry && roleMapEntry->IsOfType(aType));
      89             : }
      90             : 
      91             : inline bool
      92           0 : Accessible::HasNumericValue() const
      93             : {
      94           0 :   if (mStateFlags & eHasNumericValue)
      95           0 :     return true;
      96             : 
      97           0 :   const nsRoleMapEntry* roleMapEntry = ARIARoleMap();
      98           0 :   if (!roleMapEntry || roleMapEntry->valueRule == eNoValue)
      99           0 :     return false;
     100             : 
     101           0 :   if (roleMapEntry->valueRule == eHasValueMinMaxIfFocusable)
     102           0 :     return InteractiveState() & states::FOCUSABLE;
     103             : 
     104           0 :   return true;
     105             : }
     106             : 
     107             : inline void
     108           0 : Accessible::ScrollTo(uint32_t aHow) const
     109             : {
     110           0 :   if (mContent)
     111           0 :     nsCoreUtils::ScrollTo(mDoc->PresShell(), mContent, aHow);
     112           0 : }
     113             : 
     114             : inline bool
     115           0 : Accessible::InsertAfter(Accessible* aNewChild, Accessible* aRefChild)
     116             : {
     117           0 :   MOZ_ASSERT(aNewChild, "No new child to insert");
     118             : 
     119           0 :   if (aRefChild && aRefChild->Parent() != this) {
     120             : #ifdef A11Y_LOG
     121           0 :     logging::TreeInfo("broken accessible tree", 0,
     122             :                       "parent", this, "prev sibling parent",
     123           0 :                       aRefChild->Parent(), "child", aNewChild, nullptr);
     124           0 :     if (logging::IsEnabled(logging::eVerbose)) {
     125           0 :       logging::Tree("TREE", "Document tree", mDoc);
     126           0 :       logging::DOMTree("TREE", "DOM document tree", mDoc);
     127             :     }
     128             : #endif
     129           0 :     MOZ_ASSERT_UNREACHABLE("Broken accessible tree");
     130             :     mDoc->UnbindFromDocument(aNewChild);
     131             :     return false;
     132             :   }
     133             : 
     134           0 :   return InsertChildAt(aRefChild ? aRefChild->IndexInParent() + 1 : 0,
     135           0 :                        aNewChild);
     136             : }
     137             : 
     138             : } // namespace a11y
     139             : } // namespace mozilla
     140             : 
     141             : #endif

Generated by: LCOV version 1.13