xpcAccessibleValue.cpp (2184B)
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 #include "xpcAccessibleGeneric.h" 8 #include "LocalAccessible.h" 9 #include "LocalAccessible-inl.h" 10 11 using namespace mozilla; 12 using namespace mozilla::a11y; 13 14 NS_IMETHODIMP 15 xpcAccessibleValue::GetMaximumValue(double* aValue) { 16 NS_ENSURE_ARG_POINTER(aValue); 17 *aValue = 0; 18 19 if (!Intl()) return NS_ERROR_FAILURE; 20 21 if (Intl()->IsLocal() && Intl()->AsLocal()->IsDefunct()) { 22 return NS_ERROR_FAILURE; 23 } 24 25 double value = Intl()->MaxValue(); 26 27 if (!std::isnan(value)) *aValue = value; 28 29 return NS_OK; 30 } 31 32 NS_IMETHODIMP 33 xpcAccessibleValue::GetMinimumValue(double* aValue) { 34 NS_ENSURE_ARG_POINTER(aValue); 35 *aValue = 0; 36 37 if (!Intl()) return NS_ERROR_FAILURE; 38 39 if (Intl()->IsLocal() && Intl()->AsLocal()->IsDefunct()) { 40 return NS_ERROR_FAILURE; 41 } 42 43 double value = Intl()->MinValue(); 44 45 if (!std::isnan(value)) *aValue = value; 46 47 return NS_OK; 48 } 49 50 NS_IMETHODIMP 51 xpcAccessibleValue::GetCurrentValue(double* aValue) { 52 NS_ENSURE_ARG_POINTER(aValue); 53 *aValue = 0; 54 55 if (!Intl()) return NS_ERROR_FAILURE; 56 57 if (Intl()->IsLocal() && Intl()->AsLocal()->IsDefunct()) { 58 return NS_ERROR_FAILURE; 59 } 60 61 double value = Intl()->CurValue(); 62 63 if (!std::isnan(value)) *aValue = value; 64 65 return NS_OK; 66 } 67 68 NS_IMETHODIMP 69 xpcAccessibleValue::SetCurrentValue(double aValue) { 70 if (!Intl()) return NS_ERROR_FAILURE; 71 72 if (Intl()->IsLocal() && Intl()->AsLocal()->IsDefunct()) { 73 return NS_ERROR_FAILURE; 74 } 75 76 if (!Intl()->SetCurValue(aValue)) { 77 return NS_ERROR_FAILURE; 78 } 79 80 return NS_OK; 81 } 82 83 NS_IMETHODIMP 84 xpcAccessibleValue::GetMinimumIncrement(double* aValue) { 85 NS_ENSURE_ARG_POINTER(aValue); 86 *aValue = 0; 87 88 if (!Intl()) return NS_ERROR_FAILURE; 89 90 if (Intl()->IsLocal() && Intl()->AsLocal()->IsDefunct()) { 91 return NS_ERROR_FAILURE; 92 } 93 94 double value = Intl()->Step(); 95 96 if (!std::isnan(value)) *aValue = value; 97 98 return NS_OK; 99 }