LCOV - code coverage report
Current view: top level - accessible/generic - FormControlAccessible.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 72 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 24 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             : /* 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             : // NOTE: alphabetically ordered
       7             : 
       8             : #include "FormControlAccessible.h"
       9             : #include "Role.h"
      10             : 
      11             : #include "mozilla/FloatingPoint.h"
      12             : #include "nsIDOMHTMLFormElement.h"
      13             : #include "nsIDOMXULElement.h"
      14             : #include "nsIDOMXULControlElement.h"
      15             : 
      16             : using namespace mozilla::a11y;
      17             : 
      18             : ////////////////////////////////////////////////////////////////////////////////
      19             : // ProgressMeterAccessible
      20             : ////////////////////////////////////////////////////////////////////////////////
      21             : 
      22             : template class mozilla::a11y::ProgressMeterAccessible<1>;
      23             : template class mozilla::a11y::ProgressMeterAccessible<100>;
      24             : 
      25             : ////////////////////////////////////////////////////////////////////////////////
      26             : // Accessible
      27             : 
      28             : template<int Max>
      29             : role
      30           0 : ProgressMeterAccessible<Max>::NativeRole()
      31             : {
      32           0 :   return roles::PROGRESSBAR;
      33             : }
      34             : 
      35             : template<int Max>
      36             : uint64_t
      37           0 : ProgressMeterAccessible<Max>::NativeState()
      38             : {
      39           0 :   uint64_t state = LeafAccessible::NativeState();
      40             : 
      41             :   // An undetermined progressbar (i.e. without a value) has a mixed state.
      42           0 :   nsAutoString attrValue;
      43           0 :   mContent->GetAttr(kNameSpaceID_None, nsGkAtoms::value, attrValue);
      44             : 
      45           0 :   if (attrValue.IsEmpty())
      46           0 :     state |= states::MIXED;
      47             : 
      48           0 :   return state;
      49             : }
      50             : 
      51             : ////////////////////////////////////////////////////////////////////////////////
      52             : // ProgressMeterAccessible<Max>: Widgets
      53             : 
      54             : template<int Max>
      55             : bool
      56           0 : ProgressMeterAccessible<Max>::IsWidget() const
      57             : {
      58           0 :   return true;
      59             : }
      60             : 
      61             : ////////////////////////////////////////////////////////////////////////////////
      62             : // ProgressMeterAccessible<Max>: Value
      63             : 
      64             : template<int Max>
      65             : void
      66           0 : ProgressMeterAccessible<Max>::Value(nsString& aValue)
      67             : {
      68           0 :   LeafAccessible::Value(aValue);
      69           0 :   if (!aValue.IsEmpty())
      70           0 :     return;
      71             : 
      72           0 :   double maxValue = MaxValue();
      73           0 :   if (IsNaN(maxValue) || maxValue == 0)
      74           0 :     return;
      75             : 
      76           0 :   double curValue = CurValue();
      77           0 :   if (IsNaN(curValue))
      78           0 :     return;
      79             : 
      80             :   // Treat the current value bigger than maximum as 100%.
      81             :   double percentValue = (curValue < maxValue) ?
      82           0 :     (curValue / maxValue) * 100 : 100;
      83             : 
      84           0 :   aValue.AppendFloat(percentValue);
      85           0 :   aValue.Append('%');
      86             : }
      87             : 
      88             : template<int Max>
      89             : double
      90           0 : ProgressMeterAccessible<Max>::MaxValue() const
      91             : {
      92           0 :   double value = LeafAccessible::MaxValue();
      93           0 :   if (!IsNaN(value))
      94           0 :     return value;
      95             : 
      96           0 :   nsAutoString strValue;
      97           0 :   if (mContent->GetAttr(kNameSpaceID_None, nsGkAtoms::max, strValue)) {
      98           0 :     nsresult result = NS_OK;
      99           0 :     value = strValue.ToDouble(&result);
     100           0 :     if (NS_SUCCEEDED(result))
     101           0 :       return value;
     102             :   }
     103             : 
     104           0 :   return Max;
     105             : }
     106             : 
     107             : template<int Max>
     108             : double
     109           0 : ProgressMeterAccessible<Max>::MinValue() const
     110             : {
     111           0 :   double value = LeafAccessible::MinValue();
     112           0 :   return IsNaN(value) ? 0 : value;
     113             : }
     114             : 
     115             : template<int Max>
     116             : double
     117           0 : ProgressMeterAccessible<Max>::Step() const
     118             : {
     119           0 :   double value = LeafAccessible::Step();
     120           0 :   return IsNaN(value) ? 0 : value;
     121             : }
     122             : 
     123             : template<int Max>
     124             : double
     125           0 : ProgressMeterAccessible<Max>::CurValue() const
     126             : {
     127           0 :   double value = LeafAccessible::CurValue();
     128           0 :   if (!IsNaN(value))
     129           0 :     return value;
     130             : 
     131           0 :   nsAutoString attrValue;
     132           0 :   if (!mContent->GetAttr(kNameSpaceID_None, nsGkAtoms::value, attrValue))
     133           0 :     return UnspecifiedNaN<double>();
     134             : 
     135           0 :   nsresult error = NS_OK;
     136           0 :   value = attrValue.ToDouble(&error);
     137           0 :   return NS_FAILED(error) ? UnspecifiedNaN<double>() : value;
     138             : }
     139             : 
     140             : template<int Max>
     141             : bool
     142           0 : ProgressMeterAccessible<Max>::SetCurValue(double aValue)
     143             : {
     144           0 :   return false; // progress meters are readonly.
     145             : }
     146             : 
     147             : ////////////////////////////////////////////////////////////////////////////////
     148             : // RadioButtonAccessible
     149             : ////////////////////////////////////////////////////////////////////////////////
     150             : 
     151           0 : RadioButtonAccessible::
     152           0 :   RadioButtonAccessible(nsIContent* aContent, DocAccessible* aDoc) :
     153           0 :   LeafAccessible(aContent, aDoc)
     154             : {
     155           0 : }
     156             : 
     157             : uint8_t
     158           0 : RadioButtonAccessible::ActionCount()
     159             : {
     160           0 :   return 1;
     161             : }
     162             : 
     163             : void
     164           0 : RadioButtonAccessible::ActionNameAt(uint8_t aIndex, nsAString& aName)
     165             : {
     166           0 :   if (aIndex == eAction_Click)
     167           0 :     aName.AssignLiteral("select");
     168           0 : }
     169             : 
     170             : bool
     171           0 : RadioButtonAccessible::DoAction(uint8_t aIndex)
     172             : {
     173           0 :   if (aIndex != eAction_Click)
     174           0 :     return false;
     175             : 
     176           0 :   DoCommand();
     177           0 :   return true;
     178             : }
     179             : 
     180             : role
     181           0 : RadioButtonAccessible::NativeRole()
     182             : {
     183           0 :   return roles::RADIOBUTTON;
     184             : }
     185             : 
     186             : ////////////////////////////////////////////////////////////////////////////////
     187             : // RadioButtonAccessible: Widgets
     188             : 
     189             : bool
     190           0 : RadioButtonAccessible::IsWidget() const
     191             : {
     192           0 :   return true;
     193             : }

Generated by: LCOV version 1.13