diff --git a/accessible/src/base/nsAccessible.cpp b/accessible/src/base/nsAccessible.cpp index ed9480aa0fc..cab5f266f52 100644 --- a/accessible/src/base/nsAccessible.cpp +++ b/accessible/src/base/nsAccessible.cpp @@ -1661,17 +1661,25 @@ nsAccessible::ApplyARIAState(PRUint64* aState) aria::MapToState(mRoleMapEntry->attributeMap3, element, aState); } -/* DOMString getValue (); */ NS_IMETHODIMP nsAccessible::GetValue(nsAString& aValue) { if (IsDefunct()) return NS_ERROR_FAILURE; + nsAutoString value; + Value(value); + aValue.Assign(value); + + return NS_OK; +} + +void +nsAccessible::Value(nsString& aValue) +{ if (mRoleMapEntry) { - if (mRoleMapEntry->valueRule == eNoValue) { - return NS_OK; - } + if (mRoleMapEntry->valueRule == eNoValue) + return; // aria-valuenow is a number, and aria-valuetext is the optional text equivalent // For the string value, we will try the optional text equivalent first @@ -1683,18 +1691,16 @@ nsAccessible::GetValue(nsAString& aValue) } if (!aValue.IsEmpty()) - return NS_OK; + return; // Check if it's a simple xlink. if (nsCoreUtils::IsXLink(mContent)) { nsIPresShell* presShell = mDoc->PresShell(); if (presShell) { nsCOMPtr DOMNode(do_QueryInterface(mContent)); - return presShell->GetLinkLocation(DOMNode, aValue); + presShell->GetLinkLocation(DOMNode, aValue); } } - - return NS_OK; } // nsIAccessibleValue diff --git a/accessible/src/base/nsAccessible.h b/accessible/src/base/nsAccessible.h index 827766be74c..ea0937c5406 100644 --- a/accessible/src/base/nsAccessible.h +++ b/accessible/src/base/nsAccessible.h @@ -131,10 +131,15 @@ public: // Public methods /** - * get the description of this accessible + * Get the description of this accessible. */ virtual void Description(nsString& aDescription); + /** + * Get the value of this accessible. + */ + virtual void Value(nsString& aValue); + /** * Return DOM node associated with this accessible. */ diff --git a/accessible/src/base/nsApplicationAccessible.cpp b/accessible/src/base/nsApplicationAccessible.cpp index db6bc94756c..f42a9740876 100644 --- a/accessible/src/base/nsApplicationAccessible.cpp +++ b/accessible/src/base/nsApplicationAccessible.cpp @@ -124,19 +124,18 @@ nsApplicationAccessible::GetName(nsAString& aName) return NS_OK; } -NS_IMETHODIMP -nsApplicationAccessible::GetValue(nsAString &aValue) -{ - aValue.Truncate(); - return NS_OK; -} - void nsApplicationAccessible::Description(nsString &aDescription) { aDescription.Truncate(); } +void +nsApplicationAccessible::Value(nsString& aValue) +{ + aValue.Truncate(); +} + PRUint64 nsApplicationAccessible::State() { diff --git a/accessible/src/base/nsApplicationAccessible.h b/accessible/src/base/nsApplicationAccessible.h index b1929fdd38f..b89bf4c8682 100644 --- a/accessible/src/base/nsApplicationAccessible.h +++ b/accessible/src/base/nsApplicationAccessible.h @@ -80,7 +80,6 @@ public: NS_IMETHOD GetNextSibling(nsIAccessible **aNextSibling); NS_IMETHOD GetPreviousSibling(nsIAccessible **aPreviousSibling); NS_IMETHOD GetName(nsAString &aName); - NS_IMETHOD GetValue(nsAString &aValue); NS_IMETHOD GetAttributes(nsIPersistentProperties **aAttributes); NS_IMETHOD GroupPosition(PRInt32 *aGroupLevel, PRInt32 *aSimilarItemsInGroup, PRInt32 *aPositionInGroup); @@ -104,6 +103,7 @@ public: // nsAccessible virtual void ApplyARIAState(PRUint64* aState); virtual void Description(nsString& aDescription); + virtual void Value(nsString& aValue); virtual mozilla::a11y::role NativeRole(); virtual PRUint64 State(); virtual PRUint64 NativeState(); diff --git a/accessible/src/base/nsBaseWidgetAccessible.cpp b/accessible/src/base/nsBaseWidgetAccessible.cpp index 837ab7967e8..d10c0c13902 100644 --- a/accessible/src/base/nsBaseWidgetAccessible.cpp +++ b/accessible/src/base/nsBaseWidgetAccessible.cpp @@ -124,16 +124,17 @@ nsLinkableAccessible::NativeState() return states; } -NS_IMETHODIMP -nsLinkableAccessible::GetValue(nsAString& aValue) +void +nsLinkableAccessible::Value(nsString& aValue) { aValue.Truncate(); - nsAccessible::GetValue(aValue); + nsAccessible::Value(aValue); if (!aValue.IsEmpty()) - return NS_OK; + return; - return mIsLink ? mActionAcc->GetValue(aValue) : NS_ERROR_NOT_IMPLEMENTED; + if (aValue.IsEmpty() && mIsLink) + mActionAcc->Value(aValue); } diff --git a/accessible/src/base/nsBaseWidgetAccessible.h b/accessible/src/base/nsBaseWidgetAccessible.h index edb3bb23c97..24750c8728c 100644 --- a/accessible/src/base/nsBaseWidgetAccessible.h +++ b/accessible/src/base/nsBaseWidgetAccessible.h @@ -89,13 +89,13 @@ public: // nsIAccessible NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName); NS_IMETHOD DoAction(PRUint8 index); - NS_IMETHOD GetValue(nsAString& _retval); NS_IMETHOD TakeFocus(); // nsAccessNode virtual void Shutdown(); // nsAccessible + virtual void Value(nsString& aValue); virtual PRUint64 NativeState(); // ActionAccessible diff --git a/accessible/src/base/nsFormControlAccessible.cpp b/accessible/src/base/nsFormControlAccessible.cpp index a538f73e39b..42654df84cb 100644 --- a/accessible/src/base/nsFormControlAccessible.cpp +++ b/accessible/src/base/nsFormControlAccessible.cpp @@ -110,32 +110,29 @@ ProgressMeterAccessible::IsWidget() const // nsIAccessibleValue template -NS_IMETHODIMP -ProgressMeterAccessible::GetValue(nsAString& aValue) +void +ProgressMeterAccessible::Value(nsString& aValue) { - nsresult rv = nsFormControlAccessible::GetValue(aValue); - NS_ENSURE_SUCCESS(rv, rv); - + nsFormControlAccessible::Value(aValue); if (!aValue.IsEmpty()) - return NS_OK; + return; double maxValue = 0; - rv = GetMaximumValue(&maxValue); - NS_ENSURE_SUCCESS(rv, rv); + nsresult rv = GetMaximumValue(&maxValue); + NS_ENSURE_SUCCESS(rv, ); + if (maxValue == 0) + return; double curValue = 0; - rv = GetCurrentValue(&curValue); - NS_ENSURE_SUCCESS(rv, rv); + GetCurrentValue(&curValue); + NS_ENSURE_SUCCESS(rv, ); // Treat the current value bigger than maximum as 100%. double percentValue = (curValue < maxValue) ? (curValue / maxValue) * 100 : 100; - nsAutoString value; - value.AppendFloat(percentValue); // AppendFloat isn't available on nsAString - value.AppendLiteral("%"); - aValue = value; - return NS_OK; + aValue.AppendFloat(percentValue); + aValue.AppendLiteral("%"); } template diff --git a/accessible/src/base/nsFormControlAccessible.h b/accessible/src/base/nsFormControlAccessible.h index 2d180825240..8af139c2685 100644 --- a/accessible/src/base/nsFormControlAccessible.h +++ b/accessible/src/base/nsFormControlAccessible.h @@ -58,10 +58,8 @@ public: NS_DECL_ISUPPORTS_INHERITED NS_DECL_NSIACCESSIBLEVALUE - // nsIAccessible - NS_IMETHOD GetValue(nsAString &aValue); - // nsAccessible + virtual void Value(nsString& aValue); virtual mozilla::a11y::role NativeRole(); virtual PRUint64 NativeState(); diff --git a/accessible/src/base/nsTextEquivUtils.cpp b/accessible/src/base/nsTextEquivUtils.cpp index 5f9ae5ae3b8..9db95c33390 100644 --- a/accessible/src/base/nsTextEquivUtils.cpp +++ b/accessible/src/base/nsTextEquivUtils.cpp @@ -283,8 +283,7 @@ nsTextEquivUtils::AppendFromValue(nsAccessible *aAccessible, nsAutoString text; if (aAccessible != gInitiatorAcc) { - nsresult rv = aAccessible->GetValue(text); - NS_ENSURE_SUCCESS(rv, rv); + aAccessible->Value(text); return AppendString(aString, text) ? NS_OK : NS_OK_NO_NAME_CLAUSE_HANDLED; @@ -304,8 +303,7 @@ nsTextEquivUtils::AppendFromValue(nsAccessible *aAccessible, siblingContent = siblingContent->GetNextSibling()) { // .. and subsequent text if (!siblingContent->TextIsOnlyWhitespace()) { - nsresult rv = aAccessible->GetValue(text); - NS_ENSURE_SUCCESS(rv, rv); + aAccessible->Value(text); return AppendString(aString, text) ? NS_OK : NS_OK_NO_NAME_CLAUSE_HANDLED; diff --git a/accessible/src/html/nsHTMLFormControlAccessible.cpp b/accessible/src/html/nsHTMLFormControlAccessible.cpp index 2d0abb362dc..cd4c2b27b82 100644 --- a/accessible/src/html/nsHTMLFormControlAccessible.cpp +++ b/accessible/src/html/nsHTMLFormControlAccessible.cpp @@ -406,25 +406,23 @@ nsHTMLTextFieldAccessible::GetNameInternal(nsAString& aName) return NS_OK; } -NS_IMETHODIMP nsHTMLTextFieldAccessible::GetValue(nsAString& _retval) +void +nsHTMLTextFieldAccessible::Value(nsString& aValue) { - if (IsDefunct()) - return NS_ERROR_FAILURE; - + aValue.Truncate(); if (NativeState() & states::PROTECTED) // Don't return password text! - return NS_ERROR_FAILURE; + return; nsCOMPtr textArea(do_QueryInterface(mContent)); if (textArea) { - return textArea->GetValue(_retval); + textArea->GetValue(aValue); + return; } nsCOMPtr inputElement(do_QueryInterface(mContent)); if (inputElement) { - return inputElement->GetValue(_retval); + inputElement->GetValue(aValue); } - - return NS_ERROR_FAILURE; } void diff --git a/accessible/src/html/nsHTMLFormControlAccessible.h b/accessible/src/html/nsHTMLFormControlAccessible.h index 8bc5ba49238..473ab49169e 100644 --- a/accessible/src/html/nsHTMLFormControlAccessible.h +++ b/accessible/src/html/nsHTMLFormControlAccessible.h @@ -134,7 +134,6 @@ public: NS_DECL_ISUPPORTS_INHERITED // nsIAccessible - NS_IMETHOD GetValue(nsAString& _retval); NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName); NS_IMETHOD DoAction(PRUint8 index); @@ -142,6 +141,7 @@ public: virtual already_AddRefed GetEditor() const; // nsAccessible + virtual void Value(nsString& aValue); virtual void ApplyARIAState(PRUint64* aState); virtual nsresult GetNameInternal(nsAString& aName); virtual mozilla::a11y::role NativeRole(); diff --git a/accessible/src/html/nsHTMLLinkAccessible.cpp b/accessible/src/html/nsHTMLLinkAccessible.cpp index f421e1ef5ef..e96bffbc0a2 100644 --- a/accessible/src/html/nsHTMLLinkAccessible.cpp +++ b/accessible/src/html/nsHTMLLinkAccessible.cpp @@ -106,20 +106,18 @@ nsHTMLLinkAccessible::NativeState() return states; } -NS_IMETHODIMP -nsHTMLLinkAccessible::GetValue(nsAString& aValue) +void +nsHTMLLinkAccessible::Value(nsString& aValue) { aValue.Truncate(); - nsresult rv = nsHyperTextAccessible::GetValue(aValue); - NS_ENSURE_SUCCESS(rv, rv); - + nsHyperTextAccessible::Value(aValue); if (!aValue.IsEmpty()) - return NS_OK; + return; nsIPresShell* presShell(mDoc->PresShell()); nsCOMPtr DOMNode(do_QueryInterface(mContent)); - return presShell->GetLinkLocation(DOMNode, aValue); + presShell->GetLinkLocation(DOMNode, aValue); } PRUint8 diff --git a/accessible/src/html/nsHTMLLinkAccessible.h b/accessible/src/html/nsHTMLLinkAccessible.h index 12bdeaf7062..861bee21669 100644 --- a/accessible/src/html/nsHTMLLinkAccessible.h +++ b/accessible/src/html/nsHTMLLinkAccessible.h @@ -50,12 +50,11 @@ public: NS_DECL_ISUPPORTS_INHERITED // nsIAccessible - NS_IMETHOD GetValue(nsAString& aValue); - NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName); NS_IMETHOD DoAction(PRUint8 aIndex); // nsAccessible + virtual void Value(nsString& aValue); virtual mozilla::a11y::role NativeRole(); virtual PRUint64 NativeState(); diff --git a/accessible/src/html/nsHTMLSelectAccessible.cpp b/accessible/src/html/nsHTMLSelectAccessible.cpp index f6934ea2db5..39ab9824a4d 100644 --- a/accessible/src/html/nsHTMLSelectAccessible.cpp +++ b/accessible/src/html/nsHTMLSelectAccessible.cpp @@ -587,11 +587,13 @@ nsHTMLComboboxAccessible::Description(nsString& aDescription) option->Description(aDescription); } -NS_IMETHODIMP nsHTMLComboboxAccessible::GetValue(nsAString& aValue) +void +nsHTMLComboboxAccessible::Value(nsString& aValue) { // Use accessible name of selected option. nsAccessible* option = SelectedOption(); - return option ? option->GetName(aValue) : NS_OK; + if (option) + option->GetName(aValue); } PRUint8 diff --git a/accessible/src/html/nsHTMLSelectAccessible.h b/accessible/src/html/nsHTMLSelectAccessible.h index e2b13943bae..a50089ae296 100644 --- a/accessible/src/html/nsHTMLSelectAccessible.h +++ b/accessible/src/html/nsHTMLSelectAccessible.h @@ -187,7 +187,6 @@ public: virtual ~nsHTMLComboboxAccessible() {} // nsIAccessible - NS_IMETHOD GetValue(nsAString& _retval); NS_IMETHOD DoAction(PRUint8 index); NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName); @@ -196,6 +195,7 @@ public: // nsAccessible virtual void Description(nsString& aDescription); + virtual void Value(nsString& aValue); virtual mozilla::a11y::role NativeRole(); virtual PRUint64 NativeState(); virtual void InvalidateChildren(); diff --git a/accessible/src/mac/mozHTMLAccessible.mm b/accessible/src/mac/mozHTMLAccessible.mm index bbbff16d2d6..d9f031ec778 100644 --- a/accessible/src/mac/mozHTMLAccessible.mm +++ b/accessible/src/mac/mozHTMLAccessible.mm @@ -116,12 +116,11 @@ - (NSURL*)url { - if (!mGeckoAccessible) + if (!mGeckoAccessible || mGeckoAccessible->IsDefunct()) return nil; nsAutoString value; - nsresult rv = mGeckoAccessible->GetValue(value); - NS_ENSURE_SUCCESS(rv, nil); + mGeckoAccessible->Value(value); NSString* urlString = value.IsEmpty() ? nil : nsCocoaUtils::ToNSString(value); if (!urlString) diff --git a/accessible/src/msaa/nsAccessibleWrap.cpp b/accessible/src/msaa/nsAccessibleWrap.cpp index 82822178493..767244c580c 100644 --- a/accessible/src/msaa/nsAccessibleWrap.cpp +++ b/accessible/src/msaa/nsAccessibleWrap.cpp @@ -285,9 +285,11 @@ __try { if (!xpAccessible || xpAccessible->IsDefunct()) return E_FAIL; + if (xpAccessible->NativeRole() == roles::PASSWORD_TEXT) + return E_ACCESSDENIED; + nsAutoString value; - if (NS_FAILED(xpAccessible->GetValue(value))) - return E_FAIL; + xpAccessible->Value(value); // See bug 438784: need to expose URL on doc's value attribute. For this, // reverting part of fix for bug 425693 to make this MSAA method behave diff --git a/accessible/src/xforms/nsXFormsAccessible.cpp b/accessible/src/xforms/nsXFormsAccessible.cpp index 2cc0c1e9e94..2c839020948 100644 --- a/accessible/src/xforms/nsXFormsAccessible.cpp +++ b/accessible/src/xforms/nsXFormsAccessible.cpp @@ -145,16 +145,6 @@ nsXFormsAccessible::CacheSelectChildren(nsIDOMNode *aContainerNode) } } -// nsIAccessible - -NS_IMETHODIMP -nsXFormsAccessible::GetValue(nsAString& aValue) -{ - NS_ENSURE_TRUE(sXFormsService, NS_ERROR_FAILURE); - nsCOMPtr DOMNode(do_QueryInterface(mContent)); - return sXFormsService->GetValue(DOMNode, aValue); -} - PRUint64 nsXFormsAccessible::NativeState() { @@ -213,6 +203,13 @@ nsXFormsAccessible::Description(nsString& aDescription) GetBoundChildElementValue(NS_LITERAL_STRING("hint"), aDescription); } +void +nsXFormsAccessible::Value(nsString& aValue) +{ + nsCOMPtr DOMNode(do_QueryInterface(mContent)); + sXFormsService->GetValue(DOMNode, aValue); +} + bool nsXFormsAccessible::CanHaveAnonChildren() { @@ -545,11 +542,11 @@ nsXFormsSelectableItemAccessible:: { } -NS_IMETHODIMP -nsXFormsSelectableItemAccessible::GetValue(nsAString& aValue) +void +nsXFormsSelectableItemAccessible::Value(nsString& aValue) { nsCOMPtr DOMNode(do_QueryInterface(mContent)); - return sXFormsService->GetValue(DOMNode, aValue); + sXFormsService->GetValue(DOMNode, aValue); } PRUint8 diff --git a/accessible/src/xforms/nsXFormsAccessible.h b/accessible/src/xforms/nsXFormsAccessible.h index 76350d639b8..7ee050c4cb3 100644 --- a/accessible/src/xforms/nsXFormsAccessible.h +++ b/accessible/src/xforms/nsXFormsAccessible.h @@ -72,15 +72,13 @@ class nsXFormsAccessible : public nsHyperTextAccessibleWrap, public: nsXFormsAccessible(nsIContent* aContent, nsDocAccessible* aDoc); - // nsIAccessible - - // Returns value of instance node that xforms element is bound to. - NS_IMETHOD GetValue(nsAString& aValue); - // nsAccessible // Returns value of child xforms 'hint' element. virtual void Description(nsString& aDescription); + // Returns value of instance node that xforms element is bound to. + virtual void Value(nsString& aValue); + // Returns value of child xforms 'label' element. virtual nsresult GetNameInternal(nsAString& aName); @@ -189,9 +187,11 @@ public: nsXFormsSelectableItemAccessible(nsIContent* aContent, nsDocAccessible* aDoc); - NS_IMETHOD GetValue(nsAString& aValue); NS_IMETHOD DoAction(PRUint8 aIndex); + // nsAccessible + virtual void Value(nsString& aValue); + // ActionAccessible virtual PRUint8 ActionCount(); diff --git a/accessible/src/xforms/nsXFormsFormControlsAccessible.cpp b/accessible/src/xforms/nsXFormsFormControlsAccessible.cpp index 9521a1c6259..3e1bd34c228 100644 --- a/accessible/src/xforms/nsXFormsFormControlsAccessible.cpp +++ b/accessible/src/xforms/nsXFormsFormControlsAccessible.cpp @@ -109,11 +109,10 @@ nsXFormsTriggerAccessible::NativeRole() return roles::PUSHBUTTON; } -NS_IMETHODIMP -nsXFormsTriggerAccessible::GetValue(nsAString& aValue) +void +nsXFormsTriggerAccessible::Value(nsString& aValue) { aValue.Truncate(); - return NS_OK; } PRUint8 @@ -295,10 +294,10 @@ nsXFormsSecretAccessible::NativeState() return nsXFormsInputAccessible::NativeState() | states::PROTECTED; } -NS_IMETHODIMP -nsXFormsSecretAccessible::GetValue(nsAString& aValue) +void +nsXFormsSecretAccessible::Value(nsString& aValue) { - return NS_ERROR_FAILURE; + aValue.Truncate(); } @@ -438,11 +437,10 @@ nsXFormsChoicesAccessible::NativeRole() return roles::GROUPING; } -NS_IMETHODIMP -nsXFormsChoicesAccessible::GetValue(nsAString& aValue) +void +nsXFormsChoicesAccessible::Value(nsString& aValue) { aValue.Truncate(); - return NS_OK; } void diff --git a/accessible/src/xforms/nsXFormsFormControlsAccessible.h b/accessible/src/xforms/nsXFormsFormControlsAccessible.h index 5bf06c757b0..85a78580b8f 100644 --- a/accessible/src/xforms/nsXFormsFormControlsAccessible.h +++ b/accessible/src/xforms/nsXFormsFormControlsAccessible.h @@ -79,12 +79,11 @@ public: nsXFormsTriggerAccessible(nsIContent* aContent, nsDocAccessible* aDoc); // nsIAccessible - NS_IMETHOD GetValue(nsAString& aValue); - NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName); NS_IMETHOD DoAction(PRUint8 aIndex); // nsAccessible + virtual void Value(nsString& aValue); virtual mozilla::a11y::role NativeRole(); // ActionAccessible @@ -156,10 +155,8 @@ class nsXFormsSecretAccessible : public nsXFormsInputAccessible public: nsXFormsSecretAccessible(nsIContent* aContent, nsDocAccessible* aDoc); - // nsIAccessible - NS_IMETHOD GetValue(nsAString& aValue); - // nsAccessible + virtual void Value(nsString& aValue); virtual mozilla::a11y::role NativeRole(); virtual PRUint64 NativeState(); }; @@ -211,9 +208,9 @@ public: nsXFormsChoicesAccessible(nsIContent* aContent, nsDocAccessible* aDoc); // nsIAccessible - NS_IMETHOD GetValue(nsAString& aValue); // nsAccessible + virtual void Value(nsString& aValue); virtual mozilla::a11y::role NativeRole(); protected: diff --git a/accessible/src/xforms/nsXFormsWidgetsAccessible.cpp b/accessible/src/xforms/nsXFormsWidgetsAccessible.cpp index 7362725b023..35b5b4bc28f 100644 --- a/accessible/src/xforms/nsXFormsWidgetsAccessible.cpp +++ b/accessible/src/xforms/nsXFormsWidgetsAccessible.cpp @@ -162,13 +162,6 @@ nsXFormsComboboxPopupWidgetAccessible::NativeState() return state; } -NS_IMETHODIMP -nsXFormsComboboxPopupWidgetAccessible::GetValue(nsAString& aValue) -{ - aValue.Truncate(); - return NS_OK; -} - nsresult nsXFormsComboboxPopupWidgetAccessible::GetNameInternal(nsAString& aName) { @@ -183,6 +176,12 @@ nsXFormsComboboxPopupWidgetAccessible::Description(nsString& aDescription) aDescription.Truncate(); } +void +nsXFormsComboboxPopupWidgetAccessible::Value(nsString& aValue) +{ + aValue.Truncate(); +} + void nsXFormsComboboxPopupWidgetAccessible::CacheChildren() { diff --git a/accessible/src/xforms/nsXFormsWidgetsAccessible.h b/accessible/src/xforms/nsXFormsWidgetsAccessible.h index bf140d76f8c..0dadefbc714 100644 --- a/accessible/src/xforms/nsXFormsWidgetsAccessible.h +++ b/accessible/src/xforms/nsXFormsWidgetsAccessible.h @@ -91,11 +91,9 @@ public: nsXFormsComboboxPopupWidgetAccessible(nsIContent* aContent, nsDocAccessible* aDoc); - // nsIAccessible - NS_IMETHOD GetValue(nsAString& aValue); - // nsAccessible virtual void Description(nsString& aDescription); + virtual void Value(nsString& aValue); virtual nsresult GetNameInternal(nsAString& aName); virtual mozilla::a11y::role NativeRole(); virtual PRUint64 NativeState(); diff --git a/accessible/src/xul/nsXULColorPickerAccessible.cpp b/accessible/src/xul/nsXULColorPickerAccessible.cpp index 3235538186b..eff08051957 100644 --- a/accessible/src/xul/nsXULColorPickerAccessible.cpp +++ b/accessible/src/xul/nsXULColorPickerAccessible.cpp @@ -63,16 +63,12 @@ nsXULColorPickerTileAccessible:: //////////////////////////////////////////////////////////////////////////////// // nsXULColorPickerTileAccessible: nsIAccessible -NS_IMETHODIMP -nsXULColorPickerTileAccessible::GetValue(nsAString& aValue) +void +nsXULColorPickerTileAccessible::Value(nsString& aValue) { aValue.Truncate(); - if (IsDefunct()) - return NS_ERROR_FAILURE; - mContent->GetAttr(kNameSpaceID_None, nsGkAtoms::color, aValue); - return NS_OK; } //////////////////////////////////////////////////////////////////////////////// diff --git a/accessible/src/xul/nsXULColorPickerAccessible.h b/accessible/src/xul/nsXULColorPickerAccessible.h index 7dc3f18bdbb..ed2fd5aba94 100644 --- a/accessible/src/xul/nsXULColorPickerAccessible.h +++ b/accessible/src/xul/nsXULColorPickerAccessible.h @@ -50,10 +50,8 @@ public: nsXULColorPickerTileAccessible(nsIContent* aContent, nsDocAccessible* aDoc); - // nsIAccessible - NS_IMETHOD GetValue(nsAString& _retval); - // nsAccessible + virtual void Value(nsString& aValue); virtual mozilla::a11y::role NativeRole(); virtual PRUint64 NativeState(); diff --git a/accessible/src/xul/nsXULComboboxAccessible.cpp b/accessible/src/xul/nsXULComboboxAccessible.cpp index 6061ea52337..a1c0418dce6 100644 --- a/accessible/src/xul/nsXULComboboxAccessible.cpp +++ b/accessible/src/xul/nsXULComboboxAccessible.cpp @@ -103,22 +103,6 @@ nsXULComboboxAccessible::NativeState() return states; } -NS_IMETHODIMP -nsXULComboboxAccessible::GetValue(nsAString& aValue) -{ - aValue.Truncate(); - - if (IsDefunct()) - return NS_ERROR_FAILURE; - - // The value is the option or text shown entered in the combobox. - nsCOMPtr menuList(do_QueryInterface(mContent)); - if (menuList) - return menuList->GetLabel(aValue); - - return NS_ERROR_FAILURE; -} - void nsXULComboboxAccessible::Description(nsString& aDescription) { @@ -139,6 +123,17 @@ nsXULComboboxAccessible::Description(nsString& aDescription) } } +void +nsXULComboboxAccessible::Value(nsString& aValue) +{ + aValue.Truncate(); + + // The value is the option or text shown entered in the combobox. + nsCOMPtr menuList(do_QueryInterface(mContent)); + if (menuList) + menuList->GetLabel(aValue); +} + bool nsXULComboboxAccessible::CanHaveAnonChildren() { diff --git a/accessible/src/xul/nsXULComboboxAccessible.h b/accessible/src/xul/nsXULComboboxAccessible.h index 62f715f14c5..b80e88776f8 100644 --- a/accessible/src/xul/nsXULComboboxAccessible.h +++ b/accessible/src/xul/nsXULComboboxAccessible.h @@ -53,12 +53,12 @@ public: nsXULComboboxAccessible(nsIContent* aContent, nsDocAccessible* aDoc); // nsIAccessible - NS_IMETHOD GetValue(nsAString& aValue); NS_IMETHOD DoAction(PRUint8 aIndex); NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName); // nsAccessible virtual void Description(nsString& aDescription); + virtual void Value(nsString& aValue); virtual mozilla::a11y::role NativeRole(); virtual PRUint64 NativeState(); virtual bool CanHaveAnonChildren(); diff --git a/accessible/src/xul/nsXULFormControlAccessible.cpp b/accessible/src/xul/nsXULFormControlAccessible.cpp index 059467a8753..fc9d4eb7d10 100644 --- a/accessible/src/xul/nsXULFormControlAccessible.cpp +++ b/accessible/src/xul/nsXULFormControlAccessible.cpp @@ -728,25 +728,22 @@ NS_IMPL_ISUPPORTS_INHERITED3(nsXULTextFieldAccessible, nsAccessible, nsHyperText //////////////////////////////////////////////////////////////////////////////// // nsXULTextFieldAccessible: nsIAccessible -NS_IMETHODIMP nsXULTextFieldAccessible::GetValue(nsAString& aValue) +void +nsXULTextFieldAccessible::Value(nsString& aValue) { - if (IsDefunct()) - return NS_ERROR_FAILURE; - - PRUint64 state = NativeState(); - - if (state & states::PROTECTED) // Don't return password text! - return NS_ERROR_FAILURE; + aValue.Truncate(); + if (NativeRole() == roles::PASSWORD_TEXT) // Don't return password text! + return; nsCOMPtr textBox(do_QueryInterface(mContent)); if (textBox) { - return textBox->GetValue(aValue); + textBox->GetValue(aValue); + return; } + nsCOMPtr menuList(do_QueryInterface(mContent)); - if (menuList) { - return menuList->GetLabel(aValue); - } - return NS_ERROR_FAILURE; + if (menuList) + menuList->GetLabel(aValue); } void diff --git a/accessible/src/xul/nsXULFormControlAccessible.h b/accessible/src/xul/nsXULFormControlAccessible.h index 43e7b84c277..69e78ec801f 100644 --- a/accessible/src/xul/nsXULFormControlAccessible.h +++ b/accessible/src/xul/nsXULFormControlAccessible.h @@ -254,7 +254,6 @@ public: NS_DECL_ISUPPORTS_INHERITED // nsIAccessible - NS_IMETHOD GetValue(nsAString& aValue); NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName); NS_IMETHOD DoAction(PRUint8 index); @@ -262,6 +261,7 @@ public: virtual already_AddRefed GetEditor() const; // nsAccessible + virtual void Value(nsString& aValue); virtual void ApplyARIAState(PRUint64* aState); virtual mozilla::a11y::role NativeRole(); virtual PRUint64 NativeState(); diff --git a/accessible/src/xul/nsXULListboxAccessible.cpp b/accessible/src/xul/nsXULListboxAccessible.cpp index 971620d3598..8e4c8d1ee1b 100644 --- a/accessible/src/xul/nsXULListboxAccessible.cpp +++ b/accessible/src/xul/nsXULListboxAccessible.cpp @@ -210,17 +210,18 @@ nsXULListboxAccessible::NativeState() /** * Our value is the label of our ( first ) selected child. */ -NS_IMETHODIMP nsXULListboxAccessible::GetValue(nsAString& _retval) +void +nsXULListboxAccessible::Value(nsString& aValue) { - _retval.Truncate(); + aValue.Truncate(); + nsCOMPtr select(do_QueryInterface(mContent)); if (select) { nsCOMPtr selectedItem; select->GetSelectedItem(getter_AddRefs(selectedItem)); if (selectedItem) - return selectedItem->GetLabel(_retval); + selectedItem->GetLabel(aValue); } - return NS_ERROR_FAILURE; } role diff --git a/accessible/src/xul/nsXULListboxAccessible.h b/accessible/src/xul/nsXULListboxAccessible.h index 06fdd3470c0..6a6e05128e8 100644 --- a/accessible/src/xul/nsXULListboxAccessible.h +++ b/accessible/src/xul/nsXULListboxAccessible.h @@ -104,13 +104,11 @@ public: // nsIAccessibleTable NS_DECL_OR_FORWARD_NSIACCESSIBLETABLE_WITH_XPCACCESSIBLETABLE - // nsIAccessible - NS_IMETHOD GetValue(nsAString& aValue); - // nsAccessNode virtual void Shutdown(); // nsAccessible + virtual void Value(nsString& aValue); virtual mozilla::a11y::TableAccessible* AsTable() { return this; } virtual mozilla::a11y::role NativeRole(); virtual PRUint64 NativeState(); diff --git a/accessible/src/xul/nsXULSliderAccessible.cpp b/accessible/src/xul/nsXULSliderAccessible.cpp index 829deb2e589..022f282f948 100644 --- a/accessible/src/xul/nsXULSliderAccessible.cpp +++ b/accessible/src/xul/nsXULSliderAccessible.cpp @@ -92,10 +92,10 @@ nsXULSliderAccessible::NativeState() // nsIAccessible -NS_IMETHODIMP -nsXULSliderAccessible::GetValue(nsAString& aValue) +void +nsXULSliderAccessible::Value(nsString& aValue) { - return GetSliderAttr(nsGkAtoms::curpos, aValue); + GetSliderAttr(nsGkAtoms::curpos, aValue); } PRUint8 diff --git a/accessible/src/xul/nsXULSliderAccessible.h b/accessible/src/xul/nsXULSliderAccessible.h index 94bc8da5ce8..d535ad6a59d 100644 --- a/accessible/src/xul/nsXULSliderAccessible.h +++ b/accessible/src/xul/nsXULSliderAccessible.h @@ -55,7 +55,6 @@ public: NS_DECL_ISUPPORTS_INHERITED // nsIAccessible - NS_IMETHOD GetValue(nsAString& aValue); NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName); NS_IMETHOD DoAction(PRUint8 aIndex); @@ -63,6 +62,7 @@ public: NS_DECL_NSIACCESSIBLEVALUE // nsAccessible + virtual void Value(nsString& aValue); virtual mozilla::a11y::role NativeRole(); virtual PRUint64 NativeState(); virtual bool CanHaveAnonChildren(); diff --git a/accessible/src/xul/nsXULTabAccessible.cpp b/accessible/src/xul/nsXULTabAccessible.cpp index 91c48ce638b..682950ffbf5 100644 --- a/accessible/src/xul/nsXULTabAccessible.cpp +++ b/accessible/src/xul/nsXULTabAccessible.cpp @@ -187,10 +187,10 @@ nsXULTabsAccessible::ActionCount() return 0; } -/** no value */ -NS_IMETHODIMP nsXULTabsAccessible::GetValue(nsAString& _retval) +void +nsXULTabsAccessible::Value(nsString& aValue) { - return NS_OK; + aValue.Truncate(); } nsresult diff --git a/accessible/src/xul/nsXULTabAccessible.h b/accessible/src/xul/nsXULTabAccessible.h index f53d2100924..28bd604c80e 100644 --- a/accessible/src/xul/nsXULTabAccessible.h +++ b/accessible/src/xul/nsXULTabAccessible.h @@ -76,10 +76,8 @@ class nsXULTabsAccessible : public XULSelectControlAccessible public: nsXULTabsAccessible(nsIContent* aContent, nsDocAccessible* aDoc); - // nsIAccessible - NS_IMETHOD GetValue(nsAString& _retval); - // nsAccessible + virtual void Value(nsString& aValue); virtual nsresult GetNameInternal(nsAString& aName); virtual mozilla::a11y::role NativeRole(); diff --git a/accessible/src/xul/nsXULTextAccessible.cpp b/accessible/src/xul/nsXULTextAccessible.cpp index 639acf004da..7ad33d13ac2 100644 --- a/accessible/src/xul/nsXULTextAccessible.cpp +++ b/accessible/src/xul/nsXULTextAccessible.cpp @@ -151,16 +151,12 @@ NS_IMPL_ISUPPORTS_INHERITED1(nsXULLinkAccessible, nsHyperTextAccessibleWrap, //////////////////////////////////////////////////////////////////////////////// // nsXULLinkAccessible. nsIAccessible -NS_IMETHODIMP -nsXULLinkAccessible::GetValue(nsAString& aValue) +void +nsXULLinkAccessible::Value(nsString& aValue) { aValue.Truncate(); - if (IsDefunct()) - return NS_ERROR_FAILURE; - mContent->GetAttr(kNameSpaceID_None, nsGkAtoms::href, aValue); - return NS_OK; } nsresult diff --git a/accessible/src/xul/nsXULTextAccessible.h b/accessible/src/xul/nsXULTextAccessible.h index 4d9a312ee01..ee3d4626a5e 100644 --- a/accessible/src/xul/nsXULTextAccessible.h +++ b/accessible/src/xul/nsXULTextAccessible.h @@ -81,12 +81,11 @@ public: NS_DECL_ISUPPORTS_INHERITED // nsIAccessible - NS_IMETHOD GetValue(nsAString& aValue); - NS_IMETHOD GetActionName(PRUint8 aIndex, nsAString& aName); NS_IMETHOD DoAction(PRUint8 aIndex); // nsAccessible + virtual void Value(nsString& aValue); virtual nsresult GetNameInternal(nsAString& aName); virtual mozilla::a11y::role NativeRole(); virtual PRUint64 NativeState(); diff --git a/accessible/src/xul/nsXULTreeAccessible.cpp b/accessible/src/xul/nsXULTreeAccessible.cpp index ed50f2b57d5..4a358eac68d 100644 --- a/accessible/src/xul/nsXULTreeAccessible.cpp +++ b/accessible/src/xul/nsXULTreeAccessible.cpp @@ -143,20 +143,17 @@ nsXULTreeAccessible::NativeState() return state; } -NS_IMETHODIMP -nsXULTreeAccessible::GetValue(nsAString& aValue) +void +nsXULTreeAccessible::Value(nsString& aValue) { // Return the value is the first selected child. aValue.Truncate(); - if (IsDefunct() || !mTreeView) - return NS_ERROR_FAILURE; - nsCOMPtr selection; mTreeView->GetSelection(getter_AddRefs(selection)); if (!selection) - return NS_ERROR_FAILURE; + return; PRInt32 currentIndex; nsCOMPtr selectItem; @@ -169,10 +166,9 @@ nsXULTreeAccessible::GetValue(nsAString& aValue) if (cols) cols->GetKeyColumn(getter_AddRefs(keyCol)); - return mTreeView->GetCellText(currentIndex, keyCol, aValue); + mTreeView->GetCellText(currentIndex, keyCol, aValue); } - return NS_OK; } //////////////////////////////////////////////////////////////////////////////// diff --git a/accessible/src/xul/nsXULTreeAccessible.h b/accessible/src/xul/nsXULTreeAccessible.h index 9a9705bf675..be389522e27 100644 --- a/accessible/src/xul/nsXULTreeAccessible.h +++ b/accessible/src/xul/nsXULTreeAccessible.h @@ -74,13 +74,11 @@ public: NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsXULTreeAccessible, nsAccessible) - // nsIAccessible - NS_IMETHOD GetValue(nsAString& aValue); - // nsAccessNode virtual void Shutdown(); // nsAccessible + virtual void Value(nsString& aValue); virtual mozilla::a11y::role NativeRole(); virtual PRUint64 NativeState(); virtual nsAccessible* ChildAtPoint(PRInt32 aX, PRInt32 aY, diff --git a/accessible/tests/mochitest/testTextboxes.js b/accessible/tests/mochitest/testTextboxes.js index a660348057c..894fa670a7d 100644 --- a/accessible/tests/mochitest/testTextboxes.js +++ b/accessible/tests/mochitest/testTextboxes.js @@ -1,16 +1,6 @@ function testValue(aID, aAcc, aValue, aRole) { - if (aRole == ROLE_PASSWORD_TEXT) { - var value; - try { - value = aAcc.value; - do_throw("We do not want a value on " + aID + "!"); - } catch(e) { - is(e.result, Components.results.NS_ERROR_FAILURE, - "Wrong return value for getValue on " + aID + "!"); - } - } else - is(aAcc.value, aValue, "Wrong value for " + aID + "!"); + is(aAcc.value, aValue, "Wrong value for " + aID + "!"); } function testAction(aID, aAcc, aNumActions, aActionName, aActionDescription)