bug 767843 - stop using nsIDOMHTMLOptionElement in a11y r=surkov

This commit is contained in:
Trevor Saunders 2012-06-02 15:41:29 -04:00
Родитель f6daaee91c
Коммит 9e1b56e566
2 изменённых файлов: 12 добавлений и 26 удалений

Просмотреть файл

@ -16,15 +16,10 @@
#include "States.h"
#include "nsCOMPtr.h"
#include "nsIFrame.h"
#include "nsHTMLOptionElement.h"
#include "nsIComboboxControlFrame.h"
#include "nsIDocument.h"
#include "nsIDOMHTMLInputElement.h"
#include "nsIDOMHTMLOptGroupElement.h"
#include "nsIDOMHTMLSelectElement.h"
#include "nsIFrame.h"
#include "nsIListControlFrame.h"
#include "nsIServiceManager.h"
#include "nsIMutableArray.h"
using namespace mozilla::a11y;
@ -238,30 +233,24 @@ HTMLSelectOptionAccessible::NativeState()
return state;
// Are we selected?
bool isSelected = false;
nsCOMPtr<nsIDOMHTMLOptionElement> option(do_QueryInterface(mContent));
if (option) {
option->GetSelected(&isSelected);
if (isSelected)
nsHTMLOptionElement* option = nsHTMLOptionElement::FromContent(mContent);
bool selected = option && option->Selected();
if (selected)
state |= states::SELECTED;
}
if (selectState & states::OFFSCREEN) {
state |= states::OFFSCREEN;
}
else if (selectState & states::COLLAPSED) {
} else if (selectState & states::COLLAPSED) {
// <select> is COLLAPSED: add OFFSCREEN, if not the currently
// visible option
if (!isSelected) {
if (!selected) {
state |= states::OFFSCREEN;
}
else {
} else {
// Clear offscreen and invisible for currently showing option
state &= ~(states::OFFSCREEN | states::INVISIBLE);
state |= selectState & states::OPAQUE1;
}
}
else {
} else {
// XXX list frames are weird, don't rely on Accessible's general
// visibility implementation unless they get reimplemented in layout
state &= ~states::OFFSCREEN;
@ -348,8 +337,8 @@ HTMLSelectOptionAccessible::SetSelected(bool aSelect)
if (IsDefunct())
return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMHTMLOptionElement> optionElm(do_QueryInterface(mContent));
return optionElm->SetSelected(aSelect);
nsHTMLOptionElement* option = nsHTMLOptionElement::FromContent(mContent);
return option ? option->SetSelected(aSelect) : NS_ERROR_FAILURE;
}
////////////////////////////////////////////////////////////////////////////////

Просмотреть файл

@ -7,9 +7,6 @@
#define mozilla_a11y_HTMLSelectAccessible_h__
#include "HTMLFormControlAccessible.h"
#include "nsIDOMHTMLOptionsCollection.h"
#include "nsIDOMHTMLOptionElement.h"
#include "nsIDOMNode.h"
class nsIMutableArray;