bug 846185 - don't call into js when creating accessibles r=surkov, smaug

This commit is contained in:
Trevor Saunders 2013-07-19 00:13:35 -04:00
parent 72465059f8
commit cccb35afb2
36 changed files with 257 additions and 790 deletions

View File

@ -19,7 +19,6 @@ XPIDL_SOURCES += [
'nsIAccessibleHyperText.idl',
'nsIAccessibleImage.idl',
'nsIAccessiblePivot.idl',
'nsIAccessibleProvider.idl',
'nsIAccessibleRelation.idl',
'nsIAccessibleRetrieval.idl',
'nsIAccessibleRole.idl',

View File

@ -1,83 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsISupports.idl"
/**
* nsIAccessibleProvider interface is used to link element and accessible
object. For that XBL binding of element should implement the interface.
*/
[scriptable, uuid(f7e531b6-bc29-4d3d-8c91-60fc2b71eb40)]
interface nsIAccessibleProvider : nsISupports
{
/**
* Constants set of common use.
*/
/** Do not create an accessible for this object
* This is useful if an ancestor binding already implements nsIAccessibleProvider,
* but no accessible is desired for the inheriting binding
*/
const long NoAccessible = 0;
/** For elements that spawn a new document. For example now it is used by
<xul:iframe>, <xul:browser> and <xul:editor>. */
const long OuterDoc = 0x00000001;
/**
* Constants set is used by XUL controls.
*/
const long XULAlert = 0x00001001;
const long XULButton = 0x00001002;
const long XULCheckbox = 0x00001003;
const long XULColorPicker = 0x00001004;
const long XULColorPickerTile = 0x00001005;
const long XULCombobox = 0x00001006;
const long XULDropmarker = 0x00001007;
const long XULGroupbox = 0x00001008;
const long XULImage = 0x00001009;
const long XULLink = 0x0000100A;
const long XULListbox = 0x0000100B;
const long XULListCell = 0x00001026;
const long XULListHead = 0x00001024;
const long XULListHeader = 0x00001025;
const long XULListitem = 0x0000100C;
const long XULMenubar = 0x0000100D;
const long XULMenuitem = 0x0000100E;
const long XULMenupopup = 0x0000100F;
const long XULMenuSeparator = 0x00001010;
const long XULPane = 0x00001011;
const long XULProgressMeter = 0x00001012;
const long XULScale = 0x00001013;
const long XULStatusBar = 0x00001014;
const long XULRadioButton = 0x00001015;
const long XULRadioGroup = 0x00001016;
/** Used for XUL tab element */
const long XULTab = 0x00001017;
/** Used for XUL tabs element, a container for tab elements */
const long XULTabs = 0x00001018;
/** Used for XUL tabpanels element */
const long XULTabpanels = 0x00001019;
const long XULText = 0x0000101A;
const long XULTextBox = 0x0000101B;
const long XULThumb = 0x0000101C;
const long XULTree = 0x0000101D;
const long XULTreeColumns = 0x0000101E;
const long XULTreeColumnItem = 0x0000101F;
const long XULToolbar = 0x00001020;
const long XULToolbarSeparator = 0x00001021;
const long XULTooltip = 0x00001022;
const long XULToolbarButton = 0x00001023;
/**
* Return one of constants declared above.
*/
readonly attribute long accessibleType;
};

View File

@ -17,6 +17,7 @@ LOCAL_INCLUDES += \
-I$(srcdir)/../html \
-I$(srcdir)/../xpcom \
-I$(srcdir)/../xul \
-I$(srcdir)/../../../content/xbl/src \
-I$(srcdir)/../../../layout/generic \
-I$(srcdir)/../../../layout/style \
-I$(srcdir)/../../../layout/svg \

View File

@ -23,7 +23,6 @@
#include "nsAccessiblePivot.h"
#include "nsAccUtils.h"
#include "nsEventShell.h"
#include "nsIAccessibleProvider.h"
#include "OuterDocAccessible.h"
#include "Platform.h"
#include "Role.h"
@ -61,6 +60,9 @@
#include "nsTreeBodyFrame.h"
#include "nsTreeColumns.h"
#include "nsTreeUtils.h"
#include "nsBindingManager.h"
#include "nsXBLPrototypeBinding.h"
#include "nsXBLBinding.h"
#include "mozilla/dom/Element.h"
#include "mozilla/Preferences.h"
#include "mozilla/Services.h"
@ -1137,204 +1139,187 @@ already_AddRefed<Accessible>
nsAccessibilityService::CreateAccessibleByType(nsIContent* aContent,
DocAccessible* aDoc)
{
nsCOMPtr<nsIAccessibleProvider> accessibleProvider(do_QueryInterface(aContent));
if (!accessibleProvider)
nsAutoString role;
for (const nsXBLBinding* binding = aContent->GetXBLBinding(); binding; binding = binding->GetBaseBinding()) {
nsIContent* bindingElm = binding->PrototypeBinding()->GetBindingElement();
bindingElm->GetAttr(kNameSpaceID_None, nsGkAtoms::role, role);
if (!role.IsEmpty())
break;
}
if (role.IsEmpty() || role.EqualsLiteral("none"))
return nullptr;
int32_t type;
nsresult rv = accessibleProvider->GetAccessibleType(&type);
if (NS_FAILED(rv))
return nullptr;
if (type == nsIAccessibleProvider::OuterDoc) {
if (role.EqualsLiteral("outerdoc")) {
nsRefPtr<Accessible> accessible = new OuterDocAccessible(aContent, aDoc);
return accessible.forget();
}
nsRefPtr<Accessible> accessible;
switch (type)
{
#ifdef MOZ_XUL
case nsIAccessibleProvider::NoAccessible:
return nullptr;
// XUL controls
if (role.EqualsLiteral("xul:alert")) {
accessible = new XULAlertAccessible(aContent, aDoc);
// XUL controls
case nsIAccessibleProvider::XULAlert:
accessible = new XULAlertAccessible(aContent, aDoc);
break;
} else if (role.EqualsLiteral("xul:button")) {
accessible = new XULButtonAccessible(aContent, aDoc);
case nsIAccessibleProvider::XULButton:
accessible = new XULButtonAccessible(aContent, aDoc);
break;
} else if (role.EqualsLiteral("xul:checkbox")) {
accessible = new XULCheckboxAccessible(aContent, aDoc);
case nsIAccessibleProvider::XULCheckbox:
accessible = new XULCheckboxAccessible(aContent, aDoc);
break;
} else if (role.EqualsLiteral("xul:colorpicker")) {
accessible = new XULColorPickerAccessible(aContent, aDoc);
case nsIAccessibleProvider::XULColorPicker:
accessible = new XULColorPickerAccessible(aContent, aDoc);
break;
} else if (role.EqualsLiteral("xul:colorpickertile")) {
accessible = new XULColorPickerTileAccessible(aContent, aDoc);
case nsIAccessibleProvider::XULColorPickerTile:
accessible = new XULColorPickerTileAccessible(aContent, aDoc);
break;
} else if (role.EqualsLiteral("xul:combobox")) {
accessible = new XULComboboxAccessible(aContent, aDoc);
case nsIAccessibleProvider::XULCombobox:
accessible = new XULComboboxAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULTabpanels:
} else if (role.EqualsLiteral("xul:tabpanels")) {
accessible = new XULTabpanelsAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULDropmarker:
} else if (role.EqualsLiteral("xul:dropmarker")) {
accessible = new XULDropmarkerAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULGroupbox:
} else if (role.EqualsLiteral("xul:groupbox")) {
accessible = new XULGroupboxAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULImage:
{
} else if (role.EqualsLiteral("xul:image")) {
if (aContent->HasAttr(kNameSpaceID_None, nsGkAtoms::onclick)) {
accessible = new XULToolbarButtonAccessible(aContent, aDoc);
} else {
// Don't include nameless images in accessible tree.
if (!aContent->HasAttr(kNameSpaceID_None,
nsGkAtoms::tooltiptext))
return nullptr;
accessible = new ImageAccessibleWrap(aContent, aDoc);
break;
}
case nsIAccessibleProvider::XULLink:
accessible = new XULLinkAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULListbox:
} else if (role.EqualsLiteral("xul:link")) {
accessible = new XULLinkAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:listbox")) {
accessible = new XULListboxAccessibleWrap(aContent, aDoc);
break;
case nsIAccessibleProvider::XULListCell:
accessible = new XULListCellAccessibleWrap(aContent, aDoc);
break;
case nsIAccessibleProvider::XULListHead:
accessible = new XULColumAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULListHeader:
accessible = new XULColumnItemAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULListitem:
accessible = new XULListitemAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULMenubar:
accessible = new XULMenubarAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULMenuitem:
accessible = new XULMenuitemAccessibleWrap(aContent, aDoc);
break;
case nsIAccessibleProvider::XULMenupopup:
{
#ifdef MOZ_ACCESSIBILITY_ATK
// ATK considers this node to be redundant when within menubars, and it makes menu
// navigation with assistive technologies more difficult
// XXX In the future we will should this for consistency across the nsIAccessible
// implementations on each platform for a consistent scripting environment, but
// then strip out redundant accessibles in the AccessibleWrap class for each platform.
nsIContent *parent = aContent->GetParent();
if (parent && parent->NodeInfo()->Equals(nsGkAtoms::menu,
kNameSpaceID_XUL))
return nullptr;
#endif
accessible = new XULMenupopupAccessible(aContent, aDoc);
break;
}
case nsIAccessibleProvider::XULMenuSeparator:
accessible = new XULMenuSeparatorAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULPane:
accessible = new EnumRoleAccessible(aContent, aDoc, roles::PANE);
break;
case nsIAccessibleProvider::XULProgressMeter:
accessible = new XULProgressMeterAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULStatusBar:
accessible = new XULStatusBarAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULScale:
accessible = new XULSliderAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULRadioButton:
accessible = new XULRadioButtonAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULRadioGroup:
accessible = new XULRadioGroupAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULTab:
accessible = new XULTabAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULTabs:
accessible = new XULTabsAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULText:
accessible = new XULLabelAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULTextBox:
accessible = new XULTextFieldAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULThumb:
accessible = new XULThumbAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULTree:
return CreateAccessibleForXULTree(aContent, aDoc);
case nsIAccessibleProvider::XULTreeColumns:
accessible = new XULTreeColumAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULTreeColumnItem:
accessible = new XULColumnItemAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULToolbar:
accessible = new XULToolbarAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULToolbarSeparator:
accessible = new XULToolbarSeparatorAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULTooltip:
accessible = new XULTooltipAccessible(aContent, aDoc);
break;
case nsIAccessibleProvider::XULToolbarButton:
accessible = new XULToolbarButtonAccessible(aContent, aDoc);
break;
#endif // MOZ_XUL
default:
} else if (role.EqualsLiteral("xul:listcell")) {
// Only create cells if there's more than one per row.
nsIContent* listItem = aContent->GetParent();
if (!listItem)
return nullptr;
for (nsIContent* child = listItem->GetFirstChild(); child;
child = child->GetNextSibling()) {
if (child->IsXUL(nsGkAtoms::listcell) && child != aContent) {
accessible = new XULListCellAccessibleWrap(aContent, aDoc);
break;
}
}
} else if (role.EqualsLiteral("xul:listhead")) {
accessible = new XULColumAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:listheader")) {
accessible = new XULColumnItemAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:listitem")) {
accessible = new XULListitemAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:menubar")) {
accessible = new XULMenubarAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:menulist")) {
if (aContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::droppable,
nsGkAtoms::_false, eCaseMatters))
accessible = new XULTextFieldAccessible(aContent, aDoc);
else
accessible = new XULComboboxAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:menuitem")) {
accessible = new XULMenuitemAccessibleWrap(aContent, aDoc);
} else if (role.EqualsLiteral("xul:menupopup")) {
#ifdef MOZ_ACCESSIBILITY_ATK
// ATK considers this node to be redundant when within menubars, and it makes menu
// navigation with assistive technologies more difficult
// XXX In the future we will should this for consistency across the nsIAccessible
// implementations on each platform for a consistent scripting environment, but
// then strip out redundant accessibles in the AccessibleWrap class for each platform.
nsIContent *parent = aContent->GetParent();
if (parent && parent->IsXUL() && parent->Tag() == nsGkAtoms::menu)
return nullptr;
#endif
accessible = new XULMenupopupAccessible(aContent, aDoc);
} else if(role.EqualsLiteral("xul:menuseparator")) {
accessible = new XULMenuSeparatorAccessible(aContent, aDoc);
} else if(role.EqualsLiteral("xul:pane")) {
accessible = new EnumRoleAccessible(aContent, aDoc, roles::PANE);
} else if (role.EqualsLiteral("xul:panel")) {
if (aContent->AttrValueIs(kNameSpaceID_None, nsGkAtoms::noautofocus,
nsGkAtoms::_true, eCaseMatters))
accessible = new XULAlertAccessible(aContent, aDoc);
else
accessible = new EnumRoleAccessible(aContent, aDoc, roles::PANE);
} else if (role.EqualsLiteral("xul:progressmeter")) {
accessible = new XULProgressMeterAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xulstatusbar")) {
accessible = new XULStatusBarAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:scale")) {
accessible = new XULSliderAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:radiobutton")) {
accessible = new XULRadioButtonAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:radiogroup")) {
accessible = new XULRadioGroupAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:tab")) {
accessible = new XULTabAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:tabs")) {
accessible = new XULTabsAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:text")) {
accessible = new XULLabelAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:textbox")) {
accessible = new XULTextFieldAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:thumb")) {
accessible = new XULThumbAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:tree")) {
accessible = CreateAccessibleForXULTree(aContent, aDoc);
} else if (role.EqualsLiteral("xul:treecolumns")) {
accessible = new XULTreeColumAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:treecolumnitem")) {
accessible = new XULColumnItemAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:toolbar")) {
accessible = new XULToolbarAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:toolbarseparator")) {
accessible = new XULToolbarSeparatorAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:tooltip")) {
accessible = new XULTooltipAccessible(aContent, aDoc);
} else if (role.EqualsLiteral("xul:toolbarbutton")) {
accessible = new XULToolbarButtonAccessible(aContent, aDoc);
}
#endif // MOZ_XUL
return accessible.forget();
}

View File

@ -10,20 +10,11 @@
xmlns:xbl="http://www.mozilla.org/xbl">
<!-- based on preferences.xml paneButton -->
<binding id="viewbutton" extends="chrome://global/content/bindings/radio.xml#radio">
<binding id="viewbutton" extends="chrome://global/content/bindings/radio.xml#radio" role="xullistitem">
<content>
<xul:image class="viewButtonIcon" xbl:inherits="src"/>
<xul:label class="viewButtonLabel" xbl:inherits="value=label"/>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULListitem;
]]>
</getter>
</property>
</implementation>
</binding>
</bindings>

View File

@ -15,7 +15,7 @@
<binding id="local-browser" extends="chrome://global/content/bindings/browser.xml#browser">
<implementation type="application/javascript"
implements="nsIAccessibleProvider, nsIObserver, nsIDOMEventListener, nsIMessageListener">
implements="nsIObserver, nsIDOMEventListener, nsIMessageListener">
<constructor>
<![CDATA[
@ -782,15 +782,7 @@
</binding>
<binding id="remote-browser" extends="#local-browser">
<implementation type="application/javascript" implements="nsIAccessibleProvider, nsIObserver, nsIDOMEventListener, nsIMessageListener">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
throw "accessibleType: Supports Remote?";
]]>
</getter>
</property>
<implementation type="application/javascript" implements="nsIObserver, nsIDOMEventListener, nsIMessageListener">
<property name="autoscrollEnabled">
<getter>
<![CDATA[

View File

@ -296,6 +296,11 @@ public:
return IsInNamespace(kNameSpaceID_XUL);
}
inline bool IsXUL(nsIAtom* aTag) const
{
return mNodeInfo->Equals(aTag, kNameSpaceID_XUL);
}
inline bool IsMathML() const
{
return IsInNamespace(kNameSpaceID_MathML);

View File

@ -57,11 +57,11 @@ public:
NS_DECL_CYCLE_COLLECTION_NATIVE_CLASS(nsXBLBinding)
nsXBLPrototypeBinding* PrototypeBinding() { return mPrototypeBinding; }
nsXBLPrototypeBinding* PrototypeBinding() const { return mPrototypeBinding; }
nsIContent* GetAnonymousContent() { return mContent.get(); }
nsXBLBinding* GetBindingWithContent();
nsXBLBinding* GetBaseBinding() { return mNextBinding; }
nsXBLBinding* GetBaseBinding() const { return mNextBinding; }
void SetBaseBinding(nsXBLBinding *aBinding);
nsIContent* GetBoundElement() { return mBoundElement; }

View File

@ -201,13 +201,6 @@ nsXBLPrototypeBinding::SetBasePrototype(nsXBLPrototypeBinding* aBinding)
mBaseBinding = aBinding;
}
already_AddRefed<nsIContent>
nsXBLPrototypeBinding::GetBindingElement()
{
nsCOMPtr<nsIContent> result = mBinding;
return result.forget();
}
void
nsXBLPrototypeBinding::SetBindingElement(nsIContent* aElement)
{

View File

@ -36,7 +36,7 @@ class nsCSSStyleSheet;
class nsXBLPrototypeBinding
{
public:
already_AddRefed<nsIContent> GetBindingElement();
nsIContent* GetBindingElement() const { return mBinding; }
void SetBindingElement(nsIContent* aElement);
nsIURI* BindingURI() const { return mBindingURI; }

View File

@ -776,7 +776,7 @@ nsXBLService::GetBinding(nsIContent* aBoundElement, nsIURI* aURI,
nsRefPtr<nsXBLBinding> baseBinding;
if (baseBindingURI) {
nsCOMPtr<nsIContent> child = protoBinding->GetBindingElement();
nsIContent* child = protoBinding->GetBindingElement();
rv = GetBinding(aBoundElement, baseBindingURI, aPeekOnly,
child->NodePrincipal(), aIsReady,
getter_AddRefs(baseBinding), aDontExtendURIs);

View File

@ -16,7 +16,7 @@
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="autocomplete"
<binding id="autocomplete" role="xul:combobox"
extends="chrome://global/content/bindings/textbox.xml#textbox">
<resources>
<stylesheet src="chrome://global/skin/autocomplete.css"/>
@ -46,7 +46,7 @@
<children includes="toolbarbutton"/>
</content>
<implementation implements="nsIAccessibleProvider, nsIAutoCompleteInput, nsIDOMXULMenuListElement">
<implementation implements="nsIAutoCompleteInput, nsIDOMXULMenuListElement">
<field name="mController">null</field>
<field name="mSearchNames">null</field>
<field name="mIgnoreInput">false</field>
@ -74,17 +74,6 @@
this.inputField.controllers.removeController(this._pasteController);
]]></destructor>
<!-- =================== nsIAccessibleProvider =================== -->
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
// Will be exposed as nsIAccessible::ROLE_AUTOCOMPLETE
return Components.interfaces.nsIAccessibleProvider.XULCombobox;
]]>
</getter>
</property>
<!-- =================== nsIAutoCompleteInput =================== -->
<field name="popup"><![CDATA[
@ -816,12 +805,9 @@
</implementation>
</binding>
<binding id="autocomplete-base-popup" extends="chrome://global/content/bindings/popup.xml#popup">
<binding id="autocomplete-base-popup" role="none"
extends="chrome://global/content/bindings/popup.xml#popup">
<implementation implements="nsIAutoCompletePopup">
<!-- nsIAccessible from #popup -->
<property name="accessibleType" readonly="true"
onget="return Components.interfaces.nsIAccessibleProvider.NoAccessible;"/>
<field name="mInput">null</field>
<field name="mPopupOpen">false</field>

View File

@ -13,19 +13,11 @@
xmlns="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="browser" extends="xul:browser">
<binding id="browser" extends="xul:browser" role="outerdoc">
<content clickthrough="never">
<children/>
</content>
<implementation type="application/javascript" implements="nsIAccessibleProvider, nsIObserver, nsIDOMEventListener, nsIFrameRequestCallback">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.OuterDoc;
]]>
</getter>
</property>
<implementation type="application/javascript" implements="nsIObserver, nsIDOMEventListener, nsIFrameRequestCallback">
<property name="autoscrollEnabled">
<getter>
<![CDATA[

View File

@ -9,16 +9,8 @@
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="button-base" extends="chrome://global/content/bindings/general.xml#basetext">
<implementation implements="nsIDOMXULButtonElement, nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULButton;
]]>
</getter>
</property>
<binding id="button-base" extends="chrome://global/content/bindings/general.xml#basetext" role="xul:button">
<implementation implements="nsIDOMXULButtonElement">
<property name="type"
onget="return this.getAttribute('type');"
onset="this.setAttribute('type', val); return val;"/>

View File

@ -15,7 +15,8 @@
</resources>
</binding>
<binding id="checkbox-baseline" extends="chrome://global/content/bindings/general.xml#basetext">
<binding id="checkbox-baseline" role="xul:checkbox"
extends="chrome://global/content/bindings/general.xml#basetext">
<content>
<xul:image class="checkbox-check" xbl:inherits="checked,disabled"/>
<xul:hbox class="checkbox-label-box" flex="1">
@ -24,15 +25,7 @@
</xul:hbox>
</content>
<implementation implements="nsIDOMXULCheckboxElement, nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULCheckbox;
]]>
</getter>
</property>
<implementation implements="nsIDOMXULCheckboxElement">
<method name="setChecked">
<parameter name="aValue"/>
<body>

View File

@ -413,7 +413,7 @@
</handlers>
</binding>
<binding id="colorpicker-button" display="xul:menu"
<binding id="colorpicker-button" display="xul:menu" role="xul:colorpicker"
extends="chrome://global/content/bindings/general.xml#basecontrol">
<resources>
<stylesheet src="chrome://global/skin/colorpicker.css"/>
@ -432,15 +432,7 @@
</xul:panel>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULColorPicker;
]]>
</getter>
</property>
<implementation>
<property name="open"
onget="return this.getAttribute('open') == 'true'"
onset="this.showPopup();"/>
@ -549,16 +541,7 @@
</handlers>
</binding>
<binding id="colorpickertile">
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULColorPickerTile;
]]>
</getter>
</property>
</implementation>
<binding id="colorpickertile" role="xul:colorpickertile">
</binding>
</bindings>

View File

@ -9,8 +9,8 @@
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="editor">
<implementation type="application/javascript" implements="nsIAccessibleProvider">
<binding id="editor" role="outerdoc">
<implementation type="application/javascript">
<constructor>
<![CDATA[
// Make window editable immediately only
@ -23,14 +23,6 @@
</constructor>
<destructor/>
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.OuterDoc;
]]>
</getter>
</property>
<field name="_editorContentListener">
<![CDATA[
({

View File

@ -83,15 +83,8 @@
</implementation>
</binding>
<binding id="iframe">
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.OuterDoc;
]]>
</getter>
</property>
<binding id="iframe" role="outerdoc">
<implementation>
<property name="docShell"
readonly="true"
onget="return this.boxObject.QueryInterface(Components.interfaces.nsIContainerBoxObject).docShell"/>
@ -134,23 +127,13 @@
</content>
</binding>
<binding id="statusbar">
<binding id="statusbar" role="xul:statusbar">
<content>
<children/>
<xul:statusbarpanel class="statusbar-resizerpanel">
<xul:resizer dir="bottomend"/>
</xul:statusbarpanel>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULStatusBar;
]]>
</getter>
</property>
</implementation>
</binding>
<binding id="statusbar-drag"
@ -171,56 +154,26 @@
</implementation>
</binding>
<binding id="statusbarpanel-iconic" display="xul:button"
<binding id="statusbarpanel-iconic" display="xul:button" role="xul:button"
extends="chrome://global/content/bindings/general.xml#statusbarpanel">
<content>
<xul:image class="statusbarpanel-icon" xbl:inherits="src,src=image"/>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULButton;
]]>
</getter>
</property>
</implementation>
</binding>
<binding id="statusbarpanel-iconic-text" display="xul:button"
<binding id="statusbarpanel-iconic-text" display="xul:button" role="xul:button"
extends="chrome://global/content/bindings/general.xml#statusbarpanel">
<content>
<xul:image class="statusbarpanel-icon" xbl:inherits="src,src=image"/>
<xul:label class="statusbarpanel-text" xbl:inherits="value=label,crop"/>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULButton;
]]>
</getter>
</property>
</implementation>
</binding>
<binding id="image">
<implementation implements="nsIDOMXULImageElement, nsIAccessibleProvider">
<binding id="image" role="xul:image">
<implementation implements="nsIDOMXULImageElement">
<property name="src"
onget="return this.getAttribute('src');"
onset="this.setAttribute('src',val); return val;"/>
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
// Expose XUL images with an onclick as a toolbarbutton
return this.hasAttribute("onclick") ?
Components.interfaces.nsIAccessibleProvider.XULToolbarButton :
Components.interfaces.nsIAccessibleProvider.XULImage;
]]>
</getter>
</property>
</implementation>
</binding>
@ -261,7 +214,7 @@
</implementation>
</binding>
<binding id="dropmarker" extends="xul:button">
<binding id="dropmarker" extends="xul:button" role="xul:dropmarker">
<resources>
<stylesheet src="chrome://global/skin/dropmarker.css"/>
</resources>
@ -269,16 +222,6 @@
<content>
<xul:image class="dropmarker-icon"/>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULDropmarker;
]]>
</getter>
</property>
</implementation>
</binding>
<binding id="windowdragbox">

View File

@ -15,7 +15,8 @@
</resources>
</binding>
<binding id="groupbox" extends="chrome://global/content/bindings/groupbox.xml#groupbox-base">
<binding id="groupbox" role="xul:groupbox"
extends="chrome://global/content/bindings/groupbox.xml#groupbox-base">
<content>
<xul:hbox class="groupbox-title" align="center" pack="start">
<children includes="caption"/>
@ -24,16 +25,6 @@
<children/>
</xul:box>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULGroupbox;
]]>
</getter>
</property>
</implementation>
</binding>
<binding id="caption" extends="chrome://global/content/bindings/general.xml#basetext">

View File

@ -72,20 +72,13 @@
/** Fire "select" event */
_fireOnSelect()
-->
<binding id="listbox-base"
<binding id="listbox-base" role="xul:listbox"
extends="chrome://global/content/bindings/general.xml#basecontrol">
<implementation implements="nsIDOMXULMultiSelectControlElement, nsIAccessibleProvider">
<implementation implements="nsIDOMXULMultiSelectControlElement">
<field name="_lastKeyTime">0</field>
<field name="_incrementalString">""</field>
<!-- nsIAccessibleProvider -->
<property name="accessibleType" readonly="true">
<getter>
return Components.interfaces.nsIAccessibleProvider.XULListbox;
</getter>
</property>
<!-- nsIDOMXULSelectControlElement -->
<property name="selectedItem"
onset="this.selectItem(val);">
@ -900,7 +893,7 @@
</handlers>
</binding>
<binding id="listitem"
<binding id="listitem" role="xul:listitem"
extends="chrome://global/content/bindings/general.xml#basetext">
<resources>
<stylesheet src="chrome://global/skin/listbox.css"/>
@ -912,7 +905,7 @@
</children>
</content>
<implementation implements="nsIDOMXULSelectControlItemElement, nsIAccessibleProvider">
<implementation implements="nsIDOMXULSelectControlItemElement">
<property name="current" onget="return this.getAttribute('current') == 'true';">
<setter><![CDATA[
if (val)
@ -926,16 +919,6 @@
]]></setter>
</property>
<!-- ///////////////// nsIAccessibleProvider ///////////////// -->
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULListitem;
]]>
</getter>
</property>
<!-- ///////////////// nsIDOMXULSelectControlItemElement ///////////////// -->
<property name="value" onget="return this.getAttribute('value');"
@ -1087,7 +1070,7 @@
</content>
</binding>
<binding id="listcell"
<binding id="listcell" role="xul:listcell"
extends="chrome://global/content/bindings/general.xml#basecontrol">
<resources>
@ -1099,38 +1082,6 @@
<xul:label class="listcell-label" xbl:inherits="value=label,flex=flexlabel,crop,disabled" flex="1" crop="right"/>
</children>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
// Don't expose xul:listcell as cell accessible until listbox is
// multicolumn.
const Ci = Components.interfaces;
const kNoAccessible = Ci.nsIAccessibleProvider.NoAccessible;
const kListCellAccessible = Ci.nsIAccessibleProvider.XULListCell;
var listitem = this.parentNode;
if (!(listitem instanceof Ci.nsIDOMXULSelectControlItemElement))
return kNoAccessible;
var list = listitem.control;
if (!list)
return kNoAccessible;
var listcolsElm = list.getElementsByTagName("listcols")[0];
if (!listcolsElm)
return kNoAccessible;
var listcolElms = listcolsElm.getElementsByTagName("listcol");
if (listcolElms.length <= 1)
return kNoAccessible;
return kListCellAccessible;
]]>
</getter>
</property>
</implementation>
</binding>
<binding id="listcell-iconic"
@ -1164,7 +1115,7 @@
</content>
</binding>
<binding id="listhead">
<binding id="listhead" role="xul:listhead">
<resources>
<stylesheet src="chrome://global/skin/listbox.css"/>
@ -1175,17 +1126,9 @@
<children includes="listheader"/>
</xul:listheaditem>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
return Components.interfaces.nsIAccessibleProvider.XULListHead;
</getter>
</property>
</implementation>
</binding>
<binding id="listheader" display="xul:button">
<binding id="listheader" display="xul:button" role="xul:listheader">
<resources>
<stylesheet src="chrome://global/skin/listbox.css"/>
@ -1196,14 +1139,6 @@
<xul:label class="listheader-label" xbl:inherits="value=label,crop" flex="1" crop="right"/>
<xul:image class="listheader-sortdirection" xbl:inherits="sortDirection"/>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
return Components.interfaces.nsIAccessibleProvider.XULListHeader;
</getter>
</property>
</implementation>
</binding>
</bindings>

View File

@ -9,21 +9,12 @@
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="menuitem-base"
<binding id="menuitem-base" role="xul:menuitem"
extends="chrome://global/content/bindings/general.xml#control-item">
<resources>
<stylesheet src="chrome://global/skin/menu.css"/>
</resources>
<implementation implements="nsIDOMXULSelectControlItemElement, nsIDOMXULContainerItemElement, nsIAccessibleProvider">
<!-- nsIAccessibleProvider -->
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULMenuitem;
]]>
</getter>
</property>
<implementation implements="nsIDOMXULSelectControlItemElement, nsIDOMXULContainerItemElement">
<!-- nsIDOMXULSelectControlItemElement -->
<property name="selected" readonly="true"
onget="return this.getAttribute('selected') == 'true';"/>
@ -273,18 +264,8 @@
</content>
</binding>
<binding id="menuseparator"
<binding id="menuseparator" role="xul:menuseparator"
extends="chrome://global/content/bindings/menu.xml#menuitem-base">
<implementation>
<!-- nsIAccessibleProvider -->
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULMenuSeparator;
]]>
</getter>
</property>
</implementation>
</binding>
</bindings>

View File

@ -17,7 +17,7 @@
</resources>
</binding>
<binding id="menulist" display="xul:menu"
<binding id="menulist" display="xul:menu" role="xul:menulist"
extends="chrome://global/content/bindings/menulist.xml#menulist-base">
<content sizetopopup="pref">
<xul:hbox class="menulist-label-box" flex="1">
@ -66,7 +66,7 @@
</handler>
</handlers>
<implementation implements="nsIDOMXULMenuListElement, nsIAccessibleProvider, nsIDOMEventListener">
<implementation implements="nsIDOMXULMenuListElement, nsIDOMEventListener">
<constructor>
this.setInitialSelection()
</constructor>
@ -387,17 +387,6 @@
</body>
</method>
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
// Droppable is currently used for the Firefox bookmarks dialog only
return (this.getAttribute("droppable") == "false") ?
Components.interfaces.nsIAccessibleProvider.XULTextBox :
Components.interfaces.nsIAccessibleProvider.XULCombobox;
]]>
</getter>
</property>
<destructor>
<![CDATA[
if (this.mSelectedInternal) {

View File

@ -359,7 +359,7 @@
</binding>
<binding id="notification">
<binding id="notification" role="xul:alert">
<content>
<xul:hbox class="notification-inner outset" flex="1" xbl:inherits="type">
<xul:hbox anonid="details" align="center" flex="1"
@ -379,15 +379,7 @@
<resources>
<stylesheet src="chrome://global/skin/notification.css"/>
</resources>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULAlert;
]]>
</getter>
</property>
<implementation>
<property name="label" onset="this.setAttribute('label', val); return val;"
onget="return this.getAttribute('label');"/>
<property name="value" onset="this.setAttribute('value', val); return val;"

View File

@ -205,7 +205,7 @@
</binding>
<binding id="popup"
<binding id="popup" role="xul:menupopup"
extends="chrome://global/content/bindings/popup.xml#popup-base">
<content>
@ -215,16 +215,6 @@
</xul:arrowscrollbox>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULMenupopup;
]]>
</getter>
</property>
</implementation>
<handlers>
<handler event="popupshowing" phase="target">
<![CDATA[
@ -247,20 +237,9 @@
</handlers>
</binding>
<binding id="panel"
<binding id="panel" role="xul:panel"
extends="chrome://global/content/bindings/popup.xml#popup-base">
<!-- This separate binding for dialog-like panels - not menu, list or autocomplete popups
exposes the popup as an alert or a pane, depending on whether it is always intended
to get keyboard navigation when it opens -->
<implementation implements="nsIDOMXULPopupElement, nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return (this.getAttribute("noautofocus") == "true") ?
Components.interfaces.nsIAccessibleProvider.XULAlert :
Components.interfaces.nsIAccessibleProvider.XULPane;
]]></getter>
</property>
<implementation implements="nsIDOMXULPopupElement">
<field name="_prevFocus">0</field>
<field name="_dragBindingAlive">true</field>
<constructor>
@ -487,20 +466,15 @@
</handlers>
</binding>
<binding id="tooltip" extends="chrome://global/content/bindings/popup.xml#popup-base">
<binding id="tooltip" role="xul:tooltip"
extends="chrome://global/content/bindings/popup.xml#popup-base">
<content>
<children>
<xul:label class="tooltip-label" xbl:inherits="xbl:text=label" flex="1"/>
</children>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
return Components.interfaces.nsIAccessibleProvider.XULTooltip;
</getter>
</property>
<implementation>
<field name="_mouseOutCount">0</field>
<field name="_isMouseOver">false</field>

View File

@ -1292,7 +1292,8 @@
</handlers>
</binding>
<binding id="panebutton" extends="chrome://global/content/bindings/radio.xml#radio">
<binding id="panebutton" role="xul:listitem"
extends="chrome://global/content/bindings/radio.xml#radio">
<resources>
<stylesheet src="chrome://global/skin/preferences.css"/>
</resources>
@ -1300,15 +1301,6 @@
<xul:image class="paneButtonIcon" xbl:inherits="src"/>
<xul:label class="paneButtonLabel" xbl:inherits="value=label"/>
</content>
<implementation implements="nsIAccessible">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULListitem;
]]>
</getter>
</property>
</implementation>
</binding>
</bindings>

View File

@ -9,7 +9,7 @@
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="progressmeter">
<binding id="progressmeter" role="xul:progressmeter">
<resources>
<stylesheet src="chrome://global/skin/progressmeter.css"/>
</resources>
@ -19,7 +19,7 @@
<xul:spacer class="progress-remainder" xbl:inherits="mode"/>
</content>
<implementation implements="nsIAccessibleProvider">
<implementation>
<property name="mode" onset="if (this.mode != val) this.setAttribute('mode', val); return val;"
onget="return this.getAttribute('mode');"/>
@ -53,14 +53,6 @@
onset="this.setAttribute('max', isNaN(val) ? 100 : Math.max(val, 1));
this.value = this.value;
return val;" />
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULProgressMeter;
]]>
</getter>
</property>
</implementation>
</binding>

View File

@ -9,12 +9,13 @@
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="radiogroup" extends="chrome://global/content/bindings/general.xml#basecontrol">
<binding id="radiogroup" role="xul:radiogroup"
extends="chrome://global/content/bindings/general.xml#basecontrol">
<resources>
<stylesheet src="chrome://global/skin/radio.css"/>
</resources>
<implementation implements="nsIDOMXULSelectControlElement, nsIAccessibleProvider">
<implementation implements="nsIDOMXULSelectControlElement">
<constructor>
<![CDATA[
if (this.getAttribute("disabled") == "true")
@ -37,14 +38,6 @@
]]>
</constructor>
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULRadioGroup;
]]>
</getter>
</property>
<property name="value" onget="return this.getAttribute('value');">
<setter>
<![CDATA[
@ -431,7 +424,8 @@
</handlers>
</binding>
<binding id="radio" extends="chrome://global/content/bindings/general.xml#control-item">
<binding id="radio" role="xul:radiobutton"
extends="chrome://global/content/bindings/general.xml#control-item">
<resources>
<stylesheet src="chrome://global/skin/radio.css"/>
</resources>
@ -444,7 +438,7 @@
</xul:hbox>
</content>
<implementation implements="nsIDOMXULSelectControlItemElement, nsIAccessibleProvider">
<implementation implements="nsIDOMXULSelectControlItemElement">
<constructor>
<![CDATA[
// Just clear out the parent's cached list of radio children
@ -469,13 +463,6 @@
}
]]>
</destructor>
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULRadioButton;
]]>
</getter>
</property>
<property name="selected" readonly="true">
<getter>
<![CDATA[

View File

@ -10,7 +10,7 @@
<binding id="remote-browser" extends="chrome://global/content/bindings/browser.xml#browser">
<implementation type="application/javascript" implements="nsIAccessibleProvider, nsIObserver, nsIDOMEventListener, nsIMessageListener, nsIMessageListener">
<implementation type="application/javascript" implements="nsIObserver, nsIDOMEventListener, nsIMessageListener, nsIMessageListener">
<field name="_securityUI">null</field>

View File

@ -9,18 +9,10 @@
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="scalethumb" extends="xul:button">
<binding id="scalethumb" extends="xul:button" role="xul:thumb">
<resources>
<stylesheet src="chrome://global/skin/scale.css"/>
</resources>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
return Components.interfaces.nsIAccessibleProvider.XULThumb;
</getter>
</property>
</implementation>
</binding>
<binding id="scaleslider" display="xul:slider"
@ -30,7 +22,7 @@
</resources>
</binding>
<binding id="scale"
<binding id="scale" role="xul:scale"
extends="chrome://global/content/bindings/general.xml#basecontrol">
<resources>
<stylesheet src="chrome://global/skin/scale.css"/>
@ -43,13 +35,7 @@
</xul:slider>
</content>
<implementation implements="nsIAccessibleProvider, nsISliderListener">
<property name="accessibleType" readonly="true">
<getter>
return Components.interfaces.nsIAccessibleProvider.XULScale;
</getter>
</property>
<implementation implements="nsISliderListener">
<property name="value" onget="return this._getIntegerAttribute('curpos', 0);"
onset="return this._setIntegerAttribute('curpos', val);"/>
<property name="min" onget="return this._getIntegerAttribute('minpos', 0);"

View File

@ -227,7 +227,7 @@
</implementation>
</binding>
<binding id="tabs"
<binding id="tabs" role="xul:tabs"
extends="chrome://global/content/bindings/general.xml#basecontrol">
<resources>
<stylesheet src="chrome://global/skin/tabbox.css"/>
@ -239,7 +239,7 @@
<xul:spacer class="tabs-right" flex="1"/>
</content>
<implementation implements="nsIDOMXULSelectControlElement, nsIDOMXULRelatedElement, nsIAccessibleProvider">
<implementation implements="nsIDOMXULSelectControlElement, nsIDOMXULRelatedElement">
<constructor>
<![CDATA[
// first and last tabs need to be able to have unique styles
@ -275,15 +275,6 @@
]]>
</constructor>
<!-- nsIAccessibleProvider -->
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULTabs;
]]>
</getter>
</property>
<!-- nsIDOMXULRelatedElement -->
<method name="getRelatedElement">
<parameter name="aTabElm"/>
@ -593,19 +584,9 @@
#endif
</binding>
<binding id="tabpanels"
<binding id="tabpanels" role="xul:tabpanels"
extends="chrome://global/content/bindings/tabbox.xml#tab-base">
<implementation implements="nsIAccessibleProvider, nsIDOMXULRelatedElement">
<!-- nsIAccessibleProvider -->
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULTabpanels;
]]>
</getter>
</property>
<implementation implements="nsIDOMXULRelatedElement">
<!-- nsIDOMXULRelatedElement -->
<method name="getRelatedElement">
<parameter name="aTabPanelElm"/>
@ -703,7 +684,7 @@
</implementation>
</binding>
<binding id="tab" display="xul:button"
<binding id="tab" display="xul:button" role="xul:tab"
extends="chrome://global/content/bindings/general.xml#control-item">
<resources>
<stylesheet src="chrome://global/skin/tabbox.css"/>
@ -721,15 +702,7 @@
</xul:hbox>
</content>
<implementation implements="nsIDOMXULSelectControlItemElement, nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULTab;
]]>
</getter>
</property>
<implementation implements="nsIDOMXULSelectControlItemElement">
<property name="control" readonly="true">
<getter>
<![CDATA[

View File

@ -10,15 +10,8 @@
xmlns:html="http://www.w3.org/1999/xhtml">
<!-- bound to <description>s -->
<binding id="text-base">
<implementation implements="nsIDOMXULDescriptionElement, nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULText;
]]>
</getter>
</property>
<binding id="text-base" role="xul:text">
<implementation implements="nsIDOMXULDescriptionElement">
<property name="disabled" onset="if (val) this.setAttribute('disabled', 'true');
else this.removeAttribute('disabled');
return val;"
@ -286,15 +279,8 @@
</handlers>
</binding>
<binding id="text-link" extends="chrome://global/content/bindings/text.xml#text-label">
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULLink;
]]>
</getter>
</property>
<binding id="text-link" extends="chrome://global/content/bindings/text.xml#text-label" role="xul:link">
<implementation>
<property name="href" onget="return this.getAttribute('href');"
onset="this.setAttribute('href', val); return val;" />
<method name="open">

View File

@ -15,7 +15,7 @@
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="textbox" extends="xul:box">
<binding id="textbox" extends="xul:box" role="xul:textbox">
<resources>
<stylesheet src="chrome://global/content/textbox.css"/>
<stylesheet src="chrome://global/skin/textbox.css"/>
@ -29,15 +29,7 @@
</xul:hbox>
</content>
<implementation implements="nsIAccessibleProvider, nsIDOMXULTextBoxElement, nsIDOMXULLabeledControlElement">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULTextBox;
]]>
</getter>
</property>
<implementation implements="nsIDOMXULTextBoxElement, nsIDOMXULLabeledControlElement">
<!-- nsIDOMXULLabeledControlElement -->
<field name="crop">""</field>
<field name="image">""</field>

View File

@ -93,14 +93,9 @@
</implementation>
</binding>
<binding id="toolbar" extends="chrome://global/content/bindings/toolbar.xml#toolbar-base">
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
return Components.interfaces.nsIAccessibleProvider.XULToolbar;
</getter>
</property>
<binding id="toolbar" role="xul:toolbar"
extends="chrome://global/content/bindings/toolbar.xml#toolbar-base">
<implementation>
<property name="toolbarName"
onget="return this.getAttribute('toolbarname');"
onset="this.setAttribute('toolbarname', val); return val;"/>
@ -516,15 +511,9 @@
</implementation>
</binding>
<binding id="menubar" extends="chrome://global/content/bindings/toolbar.xml#toolbar-base" display="xul:menubar">
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULMenubar;
]]>
</getter>
</property>
<binding id="menubar" role="xul:menubar"
extends="chrome://global/content/bindings/toolbar.xml#toolbar-base" display="xul:menubar">
<implementation>
<field name="_active">false</field>
<field name="_statusbar">null</field>
<field name="_originalStatusText">null</field>
@ -567,14 +556,7 @@
</handlers>
</binding>
<binding id="toolbardecoration" extends="chrome://global/content/bindings/toolbar.xml#toolbar-base">
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
return Components.interfaces.nsIAccessibleProvider.XULToolbarSeparator;
</getter>
</property>
</implementation>
<binding id="toolbardecoration" role="xul:toolbarseparator" extends="chrome://global/content/bindings/toolbar.xml#toolbar-base">
</binding>
<binding id="toolbarpaletteitem" extends="chrome://global/content/bindings/toolbar.xml#toolbar-base" display="xul:button">

View File

@ -9,7 +9,7 @@
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="toolbarbutton" display="xul:button"
<binding id="toolbarbutton" display="xul:button" role="xul:toolbarbutton"
extends="chrome://global/content/bindings/button.xml#button-base">
<resources>
<stylesheet src="chrome://global/skin/toolbarbutton.css"/>
@ -21,14 +21,6 @@
<xul:label class="toolbarbutton-text" crop="right" flex="1"
xbl:inherits="value=label,accesskey,crop"/>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
return Components.interfaces.nsIAccessibleProvider.XULToolbarButton;
</getter>
</property>
</implementation>
</binding>
<binding id="menu" display="xul:menu"

View File

@ -33,7 +33,7 @@
</implementation>
</binding>
<binding id="tree" extends="chrome://global/content/bindings/tree.xml#tree-base">
<binding id="tree" extends="chrome://global/content/bindings/tree.xml#tree-base" role="xul:tree">
<content hidevscroll="true" hidehscroll="true" clickthrough="never">
<children includes="treecols"/>
<xul:stack class="tree-stack" flex="1">
@ -48,7 +48,7 @@
</xul:hbox>
</content>
<implementation implements="nsIDOMXULTreeElement, nsIDOMXULMultiSelectControlElement, nsIAccessibleProvider">
<implementation implements="nsIDOMXULTreeElement, nsIDOMXULMultiSelectControlElement">
<!-- ///////////////// nsIDOMXULTreeElement ///////////////// -->
@ -79,16 +79,6 @@
onget="return this.view ? this.view.selection.currentIndex: - 1;"
onset="if (this.view) return this.view.selection.currentIndex = val; return val;"/>
<!-- ///////////////// nsIAccessibleProvider ///////////////// -->
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULTree;
]]>
</getter>
</property>
<property name="treeBoxObject"
onget="return this.boxObject.QueryInterface(Components.interfaces.nsITreeBoxObject);"
readonly="true"/>
@ -931,7 +921,7 @@
</handlers>
</binding>
<binding id="treecols">
<binding id="treecols" role="xul:treecolumns">
<resources>
<stylesheet src="chrome://global/skin/tree.css"/>
</resources>
@ -941,14 +931,7 @@
</xul:hbox>
<xul:treecolpicker class="treecol-image" fixed="true" xbl:inherits="tooltiptext=pickertooltiptext"/>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULTreeColumns;
]]>
</getter>
</property>
<implementation>
<constructor><![CDATA[
// Set resizeafter="farthest" on the splitters if nothing else has been
// specified.
@ -1184,20 +1167,13 @@
</handlers>
</binding>
<binding id="treecol-base" extends="chrome://global/content/bindings/tree.xml#tree-base">
<implementation implements="nsIAccessibleProvider">
<binding id="treecol-base" role="xul:treecolumnitem"
extends="chrome://global/content/bindings/tree.xml#tree-base">
<implementation>
<constructor>
this.parentNode.parentNode._columnsDirty = true;
</constructor>
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
return Components.interfaces.nsIAccessibleProvider.XULTreeColumnItem;
]]>
</getter>
</property>
<property name="ordinal">
<getter><![CDATA[
var val = this.getAttribute("ordinal");
@ -1409,7 +1385,7 @@
</content>
</binding>
<binding id="columnpicker" display="xul:button"
<binding id="columnpicker" display="xul:button" role="xul:button"
extends="chrome://global/content/bindings/tree.xml#tree-base">
<content>
<xul:image class="tree-columnpicker-icon"/>
@ -1419,13 +1395,7 @@
</xul:menupopup>
</content>
<implementation implements="nsIAccessibleProvider">
<property name="accessibleType" readonly="true">
<getter>
return Components.interfaces.nsIAccessibleProvider.XULButton;
</getter>
</property>
<implementation>
<method name="buildPopup">
<parameter name="aPopup"/>
<body>

View File

@ -10,7 +10,7 @@
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:xbl="http://www.mozilla.org/xbl">
<binding id="autocomplete"
<binding id="autocomplete" role="xulcombobox"
extends="chrome://global/content/bindings/textbox.xml#textbox">
<resources>
<stylesheet src="chrome://global/content/autocomplete.css"/>
@ -44,7 +44,7 @@
</xul:popupset>
</content>
<implementation implements="nsIDOMXULMenuListElement, nsIAccessibleProvider">
<implementation implements="nsIDOMXULMenuListElement">
<constructor><![CDATA[
// XXX bug 90337 band-aid until we figure out what's going on here
@ -80,17 +80,6 @@
this.mInputElt.controllers.removeController(this.mPasteController);
]]></destructor>
<!-- =================== nsIAccessibleProvider =================== -->
<property name="accessibleType" readonly="true">
<getter>
<![CDATA[
// Will be exposed as nsIAccessible::ROLE_AUTOCOMPLETE
return Components.interfaces.nsIAccessibleProvider.XULCombobox;
]]>
</getter>
</property>
<!-- =================== nsIAutoCompleteInput =================== -->
<!-- XXX: This implementation is currently incomplete. -->