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 GetMaximumValue(double * aValue)15xpcAccessibleValue::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 (!IsNaN(value)) *aValue = value; 28 29 return NS_OK; 30 } 31 32 NS_IMETHODIMP GetMinimumValue(double * aValue)33xpcAccessibleValue::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 (!IsNaN(value)) *aValue = value; 46 47 return NS_OK; 48 } 49 50 NS_IMETHODIMP GetCurrentValue(double * aValue)51xpcAccessibleValue::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 (!IsNaN(value)) *aValue = value; 64 65 return NS_OK; 66 } 67 68 NS_IMETHODIMP SetCurrentValue(double aValue)69xpcAccessibleValue::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()->IsLocal()) { 77 Intl()->AsLocal()->SetCurValue(aValue); 78 } else { 79 Intl()->AsRemote()->SetCurValue(aValue); 80 } 81 82 return NS_OK; 83 } 84 85 NS_IMETHODIMP GetMinimumIncrement(double * aValue)86xpcAccessibleValue::GetMinimumIncrement(double* aValue) { 87 NS_ENSURE_ARG_POINTER(aValue); 88 *aValue = 0; 89 90 if (!Intl()) return NS_ERROR_FAILURE; 91 92 if (Intl()->IsLocal() && Intl()->AsLocal()->IsDefunct()) { 93 return NS_ERROR_FAILURE; 94 } 95 96 double value = Intl()->Step(); 97 98 if (!IsNaN(value)) *aValue = value; 99 100 return NS_OK; 101 } 102