mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Merge from mozilla-central.
--HG-- rename : accessible/src/atk/nsApplicationAccessibleWrap.cpp => accessible/src/atk/ApplicationAccessibleWrap.cpp rename : accessible/src/atk/nsApplicationAccessibleWrap.h => accessible/src/atk/ApplicationAccessibleWrap.h rename : accessible/src/base/nsApplicationAccessible.cpp => accessible/src/generic/ApplicationAccessible.cpp rename : accessible/src/base/nsApplicationAccessible.h => accessible/src/generic/ApplicationAccessible.h rename : browser/devtools/webconsole/test/browser_gcli_integrate.js => browser/devtools/shared/test/browser_gcli_integrate.js rename : browser/devtools/webconsole/test/browser_gcli_web.js => browser/devtools/shared/test/browser_gcli_web.js rename : security/manager/ssl/src/nsNSSIOLayer.cpp => security/manager/ssl/src/TransportSecurityInfo.cpp rename : security/manager/ssl/src/nsNSSIOLayer.h => security/manager/ssl/src/TransportSecurityInfo.h
This commit is contained in:
commit
4ba6ace977
1
.hgtags
1
.hgtags
@ -79,3 +79,4 @@ bbc7014db2de49e2301680d2a86be8a53108a88a AURORA_BASE_20120131
|
||||
0000000000000000000000000000000000000000 AURORA_BASE_20120131
|
||||
bbc7014db2de49e2301680d2a86be8a53108a88a AURORA_BASE_20120131
|
||||
b6627f28b7ec17e1b46a594df0f780d3a40847e4 FIREFOX_AURORA_13_BASE
|
||||
357da346ceb705d196a46574804c7c4ec44ac186 FIREFOX_AURORA_14_BASE
|
||||
|
@ -40,11 +40,8 @@
|
||||
|
||||
/**
|
||||
* Defines cross platform (Gecko) roles.
|
||||
*
|
||||
* @note - When adding a new role, be sure to also add it to nsRoleMap.h for
|
||||
* each platform.
|
||||
*/
|
||||
[scriptable, uuid(f134da65-39a8-4330-843c-5bd42780b34c)]
|
||||
[scriptable, uuid(50db5e86-9a45-4637-a5c3-4ff148c33270)]
|
||||
interface nsIAccessibleRole : nsISupports
|
||||
{
|
||||
/**
|
||||
@ -798,9 +795,18 @@ interface nsIAccessibleRole : nsISupports
|
||||
const unsigned long ROLE_CHECK_RICH_OPTION = 125;
|
||||
|
||||
/**
|
||||
* It's not role actually. This constant is important to help ensure
|
||||
* nsRoleMap's are synchronized.
|
||||
* An HTML definition list <dl>
|
||||
*/
|
||||
const unsigned long ROLE_LAST_ENTRY = 126;
|
||||
const unsigned long ROLE_DEFINITION_LIST = 126;
|
||||
|
||||
/**
|
||||
* An HTML definition term <dt>
|
||||
*/
|
||||
const unsigned long ROLE_TERM = 127;
|
||||
|
||||
/**
|
||||
* An HTML definition <dd>
|
||||
*/
|
||||
const unsigned long ROLE_DEFINITION = 128;
|
||||
};
|
||||
|
||||
|
@ -38,7 +38,7 @@
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsApplicationAccessibleWrap.h"
|
||||
#include "ApplicationAccessibleWrap.h"
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsMai.h"
|
||||
@ -466,25 +466,19 @@ mai_util_remove_key_event_listener (guint remove_listener)
|
||||
}
|
||||
}
|
||||
|
||||
AtkObject *
|
||||
AtkObject*
|
||||
mai_util_get_root(void)
|
||||
{
|
||||
if (nsAccessibilityService::IsShutdown()) {
|
||||
// We've shutdown, try to use gail instead
|
||||
// (to avoid assert in spi_atk_tidy_windows())
|
||||
if (gail_get_root)
|
||||
return gail_get_root();
|
||||
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
nsApplicationAccessible *applicationAcc =
|
||||
nsAccessNode::GetApplicationAccessible();
|
||||
|
||||
if (applicationAcc)
|
||||
return applicationAcc->GetAtkObject();
|
||||
if (nsAccessibilityService::IsShutdown()) {
|
||||
// We've shutdown, try to use gail instead
|
||||
// (to avoid assert in spi_atk_tidy_windows())
|
||||
if (gail_get_root)
|
||||
return gail_get_root();
|
||||
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
return nsAccessNode::GetApplicationAccessible()->GetAtkObject();
|
||||
}
|
||||
|
||||
G_CONST_RETURN gchar *
|
||||
@ -550,15 +544,15 @@ add_listener (GSignalEmissionHook listener,
|
||||
|
||||
static nsresult LoadGtkModule(GnomeAccessibilityModule& aModule);
|
||||
|
||||
// nsApplicationAccessibleWrap
|
||||
// ApplicationAccessibleWrap
|
||||
|
||||
nsApplicationAccessibleWrap::nsApplicationAccessibleWrap():
|
||||
nsApplicationAccessible()
|
||||
ApplicationAccessibleWrap::ApplicationAccessibleWrap():
|
||||
ApplicationAccessible()
|
||||
{
|
||||
MAI_LOG_DEBUG(("======Create AppRootAcc=%p\n", (void*)this));
|
||||
MAI_LOG_DEBUG(("======Create AppRootAcc=%p\n", (void*)this));
|
||||
}
|
||||
|
||||
nsApplicationAccessibleWrap::~nsApplicationAccessibleWrap()
|
||||
ApplicationAccessibleWrap::~ApplicationAccessibleWrap()
|
||||
{
|
||||
MAI_LOG_DEBUG(("======Destory AppRootAcc=%p\n", (void*)this));
|
||||
nsAccessibleWrap::ShutdownAtkObject();
|
||||
@ -613,7 +607,7 @@ toplevel_event_watcher(GSignalInvocationHint* ihint,
|
||||
}
|
||||
|
||||
bool
|
||||
nsApplicationAccessibleWrap::Init()
|
||||
ApplicationAccessibleWrap::Init()
|
||||
{
|
||||
if (ShouldA11yBeEnabled()) {
|
||||
// load and initialize gail library
|
||||
@ -655,11 +649,11 @@ nsApplicationAccessibleWrap::Init()
|
||||
}
|
||||
}
|
||||
|
||||
return nsApplicationAccessible::Init();
|
||||
return ApplicationAccessible::Init();
|
||||
}
|
||||
|
||||
void
|
||||
nsApplicationAccessibleWrap::Unload()
|
||||
ApplicationAccessibleWrap::Unload()
|
||||
{
|
||||
if (sToplevel_event_hook_added) {
|
||||
sToplevel_event_hook_added = false;
|
||||
@ -697,7 +691,7 @@ nsApplicationAccessibleWrap::Unload()
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessibleWrap::GetName(nsAString& aName)
|
||||
ApplicationAccessibleWrap::GetName(nsAString& aName)
|
||||
{
|
||||
// ATK doesn't provide a way to obtain an application name (for example,
|
||||
// Firefox or Thunderbird) like IA2 does. Thus let's return an application
|
||||
@ -707,7 +701,7 @@ nsApplicationAccessibleWrap::GetName(nsAString& aName)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessibleWrap::GetNativeInterface(void **aOutAccessible)
|
||||
ApplicationAccessibleWrap::GetNativeInterface(void** aOutAccessible)
|
||||
{
|
||||
*aOutAccessible = nsnull;
|
||||
|
||||
@ -745,9 +739,9 @@ gboolean fireRootAccessibleAddedCB(gpointer data)
|
||||
}
|
||||
|
||||
bool
|
||||
nsApplicationAccessibleWrap::AppendChild(nsAccessible *aChild)
|
||||
ApplicationAccessibleWrap::AppendChild(nsAccessible* aChild)
|
||||
{
|
||||
if (!nsApplicationAccessible::AppendChild(aChild))
|
||||
if (!ApplicationAccessible::AppendChild(aChild))
|
||||
return false;
|
||||
|
||||
AtkObject *atkAccessible = nsAccessibleWrap::GetAtkObject(aChild);
|
||||
@ -772,7 +766,7 @@ nsApplicationAccessibleWrap::AppendChild(nsAccessible *aChild)
|
||||
}
|
||||
|
||||
bool
|
||||
nsApplicationAccessibleWrap::RemoveChild(nsAccessible* aChild)
|
||||
ApplicationAccessibleWrap::RemoveChild(nsAccessible* aChild)
|
||||
{
|
||||
PRInt32 index = aChild->IndexInParent();
|
||||
|
||||
@ -781,11 +775,11 @@ nsApplicationAccessibleWrap::RemoveChild(nsAccessible* aChild)
|
||||
g_signal_emit_by_name(mAtkObject, "children_changed::remove", index,
|
||||
atkAccessible, NULL);
|
||||
|
||||
return nsApplicationAccessible::RemoveChild(aChild);
|
||||
return ApplicationAccessible::RemoveChild(aChild);
|
||||
}
|
||||
|
||||
void
|
||||
nsApplicationAccessibleWrap::PreCreate()
|
||||
ApplicationAccessibleWrap::PreCreate()
|
||||
{
|
||||
if (!sATKChecked) {
|
||||
sATKLib = PR_LoadLibrary(sATKLibName);
|
@ -38,20 +38,20 @@
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef __NS_APP_ROOT_ACCESSIBLE_H__
|
||||
#define __NS_APP_ROOT_ACCESSIBLE_H__
|
||||
#ifndef MOZILLA_A11Y_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
#define MOZILLA_A11Y_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
|
||||
#include "nsApplicationAccessible.h"
|
||||
#include "ApplicationAccessible.h"
|
||||
|
||||
class nsApplicationAccessibleWrap: public nsApplicationAccessible
|
||||
class ApplicationAccessibleWrap: public ApplicationAccessible
|
||||
{
|
||||
public:
|
||||
static void Unload();
|
||||
static void PreCreate();
|
||||
|
||||
public:
|
||||
nsApplicationAccessibleWrap();
|
||||
virtual ~nsApplicationAccessibleWrap();
|
||||
ApplicationAccessibleWrap();
|
||||
virtual ~ApplicationAccessibleWrap();
|
||||
|
||||
// nsAccessNode
|
||||
virtual bool Init();
|
@ -53,7 +53,7 @@ CPPSRCS = \
|
||||
nsAccessibleWrap.cpp \
|
||||
nsDocAccessibleWrap.cpp \
|
||||
nsRootAccessibleWrap.cpp \
|
||||
nsApplicationAccessibleWrap.cpp \
|
||||
ApplicationAccessibleWrap.cpp \
|
||||
nsMaiInterfaceComponent.cpp \
|
||||
nsMaiInterfaceAction.cpp \
|
||||
nsMaiInterfaceText.cpp \
|
||||
|
@ -38,7 +38,6 @@
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsAccessNodeWrap.h"
|
||||
#include "nsApplicationAccessibleWrap.h"
|
||||
|
||||
/* For documentation of the accessibility architecture,
|
||||
* see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html
|
||||
|
@ -38,14 +38,12 @@
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "mozilla/Util.h"
|
||||
|
||||
#include "nsAccessible.h"
|
||||
#include "nsAccessibleWrap.h"
|
||||
|
||||
#include "Accessible-inl.h"
|
||||
#include "ApplicationAccessibleWrap.h"
|
||||
#include "InterfaceInitFuncs.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsApplicationAccessibleWrap.h"
|
||||
#include "nsIAccessibleRelation.h"
|
||||
#include "nsRootAccessible.h"
|
||||
#include "nsDocAccessibleWrap.h"
|
||||
@ -55,11 +53,11 @@
|
||||
#include "nsString.h"
|
||||
#include "nsAutoPtr.h"
|
||||
#include "prprf.h"
|
||||
#include "nsRoleMap.h"
|
||||
#include "nsStateMap.h"
|
||||
#include "Relation.h"
|
||||
#include "States.h"
|
||||
|
||||
#include "mozilla/Util.h"
|
||||
#include "nsXPCOMStrings.h"
|
||||
#include "nsComponentManagerUtils.h"
|
||||
|
||||
@ -69,7 +67,7 @@ using namespace mozilla::a11y;
|
||||
nsAccessibleWrap::EAvailableAtkSignals nsAccessibleWrap::gAvailableAtkSignals =
|
||||
eUnknown;
|
||||
|
||||
//defined in nsApplicationAccessibleWrap.cpp
|
||||
//defined in ApplicationAccessibleWrap.cpp
|
||||
extern "C" GType g_atk_hyperlink_impl_type;
|
||||
|
||||
/* MaiAtkObject */
|
||||
@ -723,24 +721,20 @@ getDescriptionCB(AtkObject *aAtkObj)
|
||||
AtkRole
|
||||
getRoleCB(AtkObject *aAtkObj)
|
||||
{
|
||||
nsAccessibleWrap *accWrap = GetAccessibleWrap(aAtkObj);
|
||||
if (!accWrap) {
|
||||
return ATK_ROLE_INVALID;
|
||||
}
|
||||
nsAccessibleWrap* accWrap = GetAccessibleWrap(aAtkObj);
|
||||
if (!accWrap)
|
||||
return ATK_ROLE_INVALID;
|
||||
|
||||
#ifdef DEBUG_A11Y
|
||||
NS_ASSERTION(nsAccUtils::IsTextInterfaceSupportCorrect(accWrap),
|
||||
"Does not support nsIAccessibleText when it should");
|
||||
NS_ASSERTION(nsAccUtils::IsTextInterfaceSupportCorrect(accWrap),
|
||||
"Does not support nsIAccessibleText when it should");
|
||||
#endif
|
||||
|
||||
if (aAtkObj->role == ATK_ROLE_INVALID) {
|
||||
// map to the actual value
|
||||
PRUint32 atkRole = atkRoleMap[accWrap->Role()];
|
||||
NS_ASSERTION(atkRoleMap[nsIAccessibleRole::ROLE_LAST_ENTRY] ==
|
||||
kROLE_ATK_LAST_ENTRY, "ATK role map skewed");
|
||||
aAtkObj->role = static_cast<AtkRole>(atkRole);
|
||||
}
|
||||
if (aAtkObj->role != ATK_ROLE_INVALID)
|
||||
return aAtkObj->role;
|
||||
|
||||
return aAtkObj->role =
|
||||
static_cast<AtkRole>(nsAccessibleWrap::AtkRoleFor(accWrap->Role()));
|
||||
}
|
||||
|
||||
AtkAttributeSet*
|
||||
@ -977,25 +971,20 @@ refRelationSetCB(AtkObject *aAtkObj)
|
||||
// for it.
|
||||
nsAccessibleWrap *GetAccessibleWrap(AtkObject *aAtkObj)
|
||||
{
|
||||
NS_ENSURE_TRUE(IS_MAI_OBJECT(aAtkObj), nsnull);
|
||||
nsAccessibleWrap *tmpAccWrap = MAI_ATK_OBJECT(aAtkObj)->accWrap;
|
||||
NS_ENSURE_TRUE(IS_MAI_OBJECT(aAtkObj), nsnull);
|
||||
nsAccessibleWrap* accWrap = MAI_ATK_OBJECT(aAtkObj)->accWrap;
|
||||
|
||||
// Check if AccessibleWrap was deconstructed
|
||||
if (tmpAccWrap == nsnull) {
|
||||
return nsnull;
|
||||
}
|
||||
// Check if the accessible was deconstructed.
|
||||
if (!accWrap)
|
||||
return nsnull;
|
||||
|
||||
NS_ENSURE_TRUE(tmpAccWrap->GetAtkObject() == aAtkObj, nsnull);
|
||||
NS_ENSURE_TRUE(accWrap->GetAtkObject() == aAtkObj, nsnull);
|
||||
|
||||
nsApplicationAccessible *applicationAcc =
|
||||
nsAccessNode::GetApplicationAccessible();
|
||||
nsAccessibleWrap* tmpAppAccWrap =
|
||||
static_cast<nsAccessibleWrap*>(applicationAcc);
|
||||
nsAccessibleWrap* appAccWrap = nsAccessNode::GetApplicationAccessible();
|
||||
if (appAccWrap != accWrap && !accWrap->IsValidObject())
|
||||
return nsnull;
|
||||
|
||||
if (tmpAppAccWrap != tmpAccWrap && !tmpAccWrap->IsValidObject())
|
||||
return nsnull;
|
||||
|
||||
return tmpAccWrap;
|
||||
return accWrap;
|
||||
}
|
||||
|
||||
nsresult
|
||||
@ -1406,3 +1395,19 @@ nsAccessibleWrap::FireAtkShowHideEvent(AccEvent* aEvent,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
PRUint32
|
||||
nsAccessibleWrap::AtkRoleFor(role aRole)
|
||||
{
|
||||
#define ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role) \
|
||||
case roles::geckoRole: \
|
||||
return atkRole;
|
||||
|
||||
switch (aRole) {
|
||||
#include "RoleMap.h"
|
||||
default:
|
||||
MOZ_NOT_REACHED("Unknown role.");
|
||||
return ATK_ROLE_UNKNOWN;
|
||||
}
|
||||
|
||||
#undef ROLE
|
||||
}
|
||||
|
@ -116,6 +116,11 @@ public:
|
||||
return returnedString.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Function mapping from cross platform roles to ATK roles.
|
||||
*/
|
||||
inline static PRUint32 AtkRoleFor(mozilla::a11y::role aRole);
|
||||
|
||||
protected:
|
||||
virtual nsresult FirePlatformEvent(AccEvent* aEvent);
|
||||
|
||||
|
@ -39,6 +39,7 @@
|
||||
|
||||
#include "InterfaceInitFuncs.h"
|
||||
|
||||
#include "Accessible-inl.h"
|
||||
#include "nsMai.h"
|
||||
#include "Role.h"
|
||||
|
||||
|
@ -42,7 +42,6 @@
|
||||
|
||||
#include "nsHyperTextAccessible.h"
|
||||
#include "nsMai.h"
|
||||
#include "nsRoleMap.h"
|
||||
|
||||
#include "nsIPersistentProperties2.h"
|
||||
|
||||
@ -52,7 +51,7 @@ static void
|
||||
ConvertTexttoAsterisks(nsAccessibleWrap* accWrap, nsAString& aString)
|
||||
{
|
||||
// convert each char to "*" when it's "password text"
|
||||
PRUint32 atkRole = atkRoleMap[accWrap->NativeRole()];
|
||||
PRUint32 atkRole = nsAccessibleWrap::AtkRoleFor(accWrap->NativeRole());
|
||||
if (atkRole == ATK_ROLE_PASSWORD_TEXT) {
|
||||
for (PRUint32 i = 0; i < aString.Length(); i++)
|
||||
aString.Replace(i, 1, NS_LITERAL_STRING("*"));
|
||||
@ -161,7 +160,7 @@ getCharacterAtOffsetCB(AtkText *aText, gint aOffset)
|
||||
accText->GetCharacterAtOffset(aOffset, &uniChar);
|
||||
|
||||
// convert char to "*" when it's "password text"
|
||||
PRUint32 atkRole = atkRoleMap[accWrap->NativeRole()];
|
||||
PRUint32 atkRole = nsAccessibleWrap::AtkRoleFor(accWrap->NativeRole());
|
||||
if (atkRole == ATK_ROLE_PASSWORD_TEXT)
|
||||
uniChar = '*';
|
||||
|
||||
|
@ -1,176 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=2 et sw=2 tw=80: */
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is IBM Corporation
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Gao, Ming (gaoming@cn.ibm.com)
|
||||
* Aaron Leventhal (aleventh@us.ibm.com)
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include <atk/atk.h>
|
||||
#include "nsAccessibleWrap.h"
|
||||
|
||||
const PRUint32 kROLE_ATK_LAST_ENTRY = 0xffffffff;
|
||||
|
||||
// Map array from cross platform roles to ATK roles
|
||||
static const PRUint32 atkRoleMap[] = {
|
||||
// Cross Platform Roles #
|
||||
ATK_ROLE_UNKNOWN, // roles::NOTHING 0
|
||||
ATK_ROLE_UNKNOWN, // roles::TITLEBAR 1
|
||||
ATK_ROLE_MENU_BAR, // roles::MENUBAR 2
|
||||
ATK_ROLE_SCROLL_BAR, // roles::SCROLLBAR 3
|
||||
ATK_ROLE_UNKNOWN, // roles::GRIP 4
|
||||
ATK_ROLE_UNKNOWN, // roles::SOUND 5
|
||||
ATK_ROLE_UNKNOWN, // roles::CURSOR 6
|
||||
ATK_ROLE_UNKNOWN, // roles::CARET 7
|
||||
ATK_ROLE_ALERT, // roles::ALERT 8
|
||||
ATK_ROLE_WINDOW, // roles::WINDOW 9
|
||||
ATK_ROLE_INTERNAL_FRAME, // roles::INTERNAL_FRAME 10
|
||||
ATK_ROLE_MENU, // roles::MENUPOPUP 11
|
||||
ATK_ROLE_MENU_ITEM, // roles::MENUITEM 12
|
||||
ATK_ROLE_TOOL_TIP, // roles::TOOLTIP 13
|
||||
ATK_ROLE_EMBEDDED, // roles::APPLICATION 14
|
||||
ATK_ROLE_DOCUMENT_FRAME, // roles::DOCUMENT 15
|
||||
ATK_ROLE_PANEL, // roles::PANE 16
|
||||
ATK_ROLE_CHART, // roles::CHART 17
|
||||
ATK_ROLE_DIALOG, // roles::DIALOG 18
|
||||
ATK_ROLE_UNKNOWN, // roles::BORDER 19
|
||||
ATK_ROLE_PANEL, // roles::GROUPING 20
|
||||
ATK_ROLE_SEPARATOR, // roles::SEPARATOR 21
|
||||
ATK_ROLE_TOOL_BAR, // roles::TOOLBAR 22
|
||||
ATK_ROLE_STATUSBAR, // roles::STATUSBAR 23
|
||||
ATK_ROLE_TABLE, // roles::TABLE 24
|
||||
ATK_ROLE_COLUMN_HEADER, // roles::COLUMNHEADER 25
|
||||
ATK_ROLE_ROW_HEADER, // roles::ROWHEADER 26
|
||||
ATK_ROLE_UNKNOWN, // roles::COLUMN 27
|
||||
ATK_ROLE_LIST_ITEM, // roles::ROW 28
|
||||
ATK_ROLE_TABLE_CELL, // roles::CELL 29
|
||||
ATK_ROLE_LINK, // roles::LINK 30
|
||||
ATK_ROLE_UNKNOWN, // roles::HELPBALLOON 31
|
||||
ATK_ROLE_IMAGE, // roles::CHARACTER 32
|
||||
ATK_ROLE_LIST, // roles::LIST 33
|
||||
ATK_ROLE_LIST_ITEM, // roles::LISTITEM 34
|
||||
ATK_ROLE_TREE, // roles::OUTLINE 35
|
||||
ATK_ROLE_LIST_ITEM, // roles::OUTLINEITEM 36
|
||||
ATK_ROLE_PAGE_TAB, // roles::PAGETAB 37
|
||||
ATK_ROLE_SCROLL_PANE, // roles::PROPERTYPAGE 38
|
||||
ATK_ROLE_UNKNOWN, // roles::INDICATOR 39
|
||||
ATK_ROLE_IMAGE, // roles::GRAPHIC 40
|
||||
ATK_ROLE_UNKNOWN, // roles::STATICTEXT 41
|
||||
ATK_ROLE_UNKNOWN, // roles::TEXT_LEAF 42
|
||||
ATK_ROLE_PUSH_BUTTON, // roles::PUSHBUTTON 43
|
||||
ATK_ROLE_CHECK_BOX, // roles::CHECKBUTTON 44
|
||||
ATK_ROLE_RADIO_BUTTON, // roles::RADIOBUTTON 45
|
||||
ATK_ROLE_COMBO_BOX, // roles::COMBOBOX 46
|
||||
ATK_ROLE_COMBO_BOX, // roles::DROPLIST 47
|
||||
ATK_ROLE_PROGRESS_BAR, // roles::PROGRESSBAR 48
|
||||
ATK_ROLE_DIAL, // roles::DIAL 49
|
||||
ATK_ROLE_UNKNOWN, // roles::HOTKEYFIELD 50
|
||||
ATK_ROLE_SLIDER, // roles::SLIDER 51
|
||||
ATK_ROLE_SPIN_BUTTON, // roles::SPINBUTTON 52
|
||||
ATK_ROLE_IMAGE, // roles::DIAGRAM 53
|
||||
ATK_ROLE_ANIMATION, // roles::ANIMATION 54
|
||||
ATK_ROLE_UNKNOWN, // roles::EQUATION 55
|
||||
ATK_ROLE_PUSH_BUTTON, // roles::BUTTONDROPDOWN 56
|
||||
ATK_ROLE_PUSH_BUTTON, // roles::BUTTONMENU 57
|
||||
ATK_ROLE_UNKNOWN, // roles::BUTTONDROPDOWNGRID 58
|
||||
ATK_ROLE_UNKNOWN, // roles::WHITESPACE 59
|
||||
ATK_ROLE_PAGE_TAB_LIST, // roles::PAGETABLIST 60
|
||||
ATK_ROLE_UNKNOWN, // roles::CLOCK 61
|
||||
ATK_ROLE_PUSH_BUTTON, // roles::SPLITBUTTON 62
|
||||
ATK_ROLE_UNKNOWN, // roles::IPADDRESS 63
|
||||
ATK_ROLE_ACCEL_LABEL, // roles::ACCEL_LABEL 64
|
||||
ATK_ROLE_ARROW, // roles::ARROW 65
|
||||
ATK_ROLE_CANVAS, // roles::CANVAS 66
|
||||
ATK_ROLE_CHECK_MENU_ITEM, // roles::CHECK_MENU_ITEM 67
|
||||
ATK_ROLE_COLOR_CHOOSER, // roles::COLOR_CHOOSER 68
|
||||
ATK_ROLE_DATE_EDITOR, // roles::DATE_EDITOR 69
|
||||
ATK_ROLE_DESKTOP_ICON, // roles::DESKTOP_ICON 70
|
||||
ATK_ROLE_DESKTOP_FRAME, // roles::DESKTOP_FRAME 71
|
||||
ATK_ROLE_DIRECTORY_PANE, // roles::DIRECTORY_PANE 72
|
||||
ATK_ROLE_FILE_CHOOSER, // roles::FILE_CHOOSER 73
|
||||
ATK_ROLE_FONT_CHOOSER, // roles::FONT_CHOOSER 74
|
||||
ATK_ROLE_FRAME, // roles::CHROME_WINDOW 75
|
||||
ATK_ROLE_GLASS_PANE, // roles::GLASS_PANE 76
|
||||
ATK_ROLE_HTML_CONTAINER, // roles::HTML_CONTAINER 77
|
||||
ATK_ROLE_ICON, // roles::ICON 78
|
||||
ATK_ROLE_LABEL, // roles::LABEL 79
|
||||
ATK_ROLE_LAYERED_PANE, // roles::LAYERED_PANE 80
|
||||
ATK_ROLE_OPTION_PANE, // roles::OPTION_PANE 81
|
||||
ATK_ROLE_PASSWORD_TEXT, // roles::PASSWORD_TEXT 82
|
||||
ATK_ROLE_POPUP_MENU, // roles::POPUP_MENU 83
|
||||
ATK_ROLE_RADIO_MENU_ITEM, // roles::RADIO_MENU_ITEM 84
|
||||
ATK_ROLE_ROOT_PANE, // roles::ROOT_PANE 85
|
||||
ATK_ROLE_SCROLL_PANE, // roles::SCROLL_PANE 86
|
||||
ATK_ROLE_SPLIT_PANE, // roles::SPLIT_PANE 87
|
||||
ATK_ROLE_TABLE_COLUMN_HEADER, // roles::TABLE_COLUMN_HEADER 88
|
||||
ATK_ROLE_TABLE_ROW_HEADER, // roles::TABLE_ROW_HEADER 89
|
||||
ATK_ROLE_TEAR_OFF_MENU_ITEM, // roles::TEAR_OFF_MENU_ITEM 90
|
||||
ATK_ROLE_TERMINAL, // roles::TERMINAL 91
|
||||
ATK_ROLE_TEXT, // roles::TEXT_CONTAINER 92
|
||||
ATK_ROLE_TOGGLE_BUTTON, // roles::TOGGLE_BUTTON 93
|
||||
ATK_ROLE_TREE_TABLE, // roles::TREE_TABLE 94
|
||||
ATK_ROLE_VIEWPORT, // roles::VIEWPORT 95
|
||||
ATK_ROLE_HEADER, // roles::HEADER 96
|
||||
ATK_ROLE_FOOTER, // roles::FOOTER 97
|
||||
ATK_ROLE_PARAGRAPH, // roles::PARAGRAPH 98
|
||||
ATK_ROLE_RULER, // roles::RULER 99
|
||||
ATK_ROLE_AUTOCOMPLETE, // roles::AUTOCOMPLETE 100
|
||||
ATK_ROLE_EDITBAR, // roles::EDITBAR 101
|
||||
ATK_ROLE_ENTRY, // roles::ENTRY 102
|
||||
ATK_ROLE_CAPTION, // roles::CAPTION 103
|
||||
ATK_ROLE_DOCUMENT_FRAME, // roles::DOCUMENT_FRAME 104
|
||||
ATK_ROLE_HEADING, // roles::HEADING 105
|
||||
ATK_ROLE_PAGE, // roles::PAGE 106
|
||||
ATK_ROLE_SECTION, // roles::SECTION 107
|
||||
ATK_ROLE_REDUNDANT_OBJECT, // roles::REDUNDANT_OBJECT 108
|
||||
ATK_ROLE_FORM, // roles::FORM 109
|
||||
ATK_ROLE_INPUT_METHOD_WINDOW, // roles::IME 110
|
||||
ATK_ROLE_APPLICATION, // roles::APP_ROOT 111
|
||||
ATK_ROLE_MENU, // roles::PARENT_MENUITEM 112
|
||||
ATK_ROLE_CALENDAR, // roles::CALENDAR 113
|
||||
ATK_ROLE_MENU, // roles::COMBOBOX_LIST 114
|
||||
ATK_ROLE_MENU_ITEM, // roles::COMBOBOX_OPTION 115
|
||||
ATK_ROLE_IMAGE, // roles::IMAGE_MAP 116
|
||||
ATK_ROLE_LIST_ITEM, // roles::OPTION 117
|
||||
ATK_ROLE_LIST_ITEM, // roles::RICH_OPTION 118
|
||||
ATK_ROLE_LIST, // roles::LISTBOX 119
|
||||
ATK_ROLE_UNKNOWN, // roles::FLAT_EQUATION 120
|
||||
ATK_ROLE_TABLE_CELL, // roles::GRID_CELL 121
|
||||
ATK_ROLE_PANEL, // roles::EMBEDDED_OBJECT 122
|
||||
ATK_ROLE_SECTION, // roles::NOTE 123
|
||||
ATK_ROLE_PANEL, // roles::FIGURE 124
|
||||
ATK_ROLE_CHECK_BOX, // roles::CHECK_RICH_OPTION 125
|
||||
kROLE_ATK_LAST_ENTRY // roles::LAST_ENTRY
|
||||
};
|
||||
|
@ -39,9 +39,9 @@
|
||||
|
||||
#include "AccEvent.h"
|
||||
|
||||
#include "ApplicationAccessibleWrap.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsApplicationAccessibleWrap.h"
|
||||
#include "nsDocAccessible.h"
|
||||
#include "nsIAccessibleText.h"
|
||||
#include "nsAccEvent.h"
|
||||
@ -155,7 +155,7 @@ AccEvent::CaptureIsFromUserInput(EIsFromUserInput aIsFromUserInput)
|
||||
// XXX: remove this hack during reorganization of 506907. Meanwhile we
|
||||
// want to get rid an assertion for application accessible events which
|
||||
// don't have DOM node (see bug 506206).
|
||||
nsApplicationAccessible *applicationAcc =
|
||||
ApplicationAccessible* applicationAcc =
|
||||
nsAccessNode::GetApplicationAccessible();
|
||||
|
||||
if (mAccessible != static_cast<nsIAccessible*>(applicationAcc))
|
||||
|
@ -69,7 +69,6 @@ CPPSRCS = \
|
||||
nsBaseWidgetAccessible.cpp \
|
||||
nsEventShell.cpp \
|
||||
nsRootAccessible.cpp \
|
||||
nsApplicationAccessible.cpp \
|
||||
nsCaretAccessible.cpp \
|
||||
nsTextAccessible.cpp \
|
||||
nsTextEquivUtils.cpp \
|
||||
|
@ -41,13 +41,16 @@
|
||||
#define _role_h_
|
||||
|
||||
/**
|
||||
* Note: Make sure to update the localized role names when changing the list.
|
||||
* @note Make sure to update the localized role names when changing the list.
|
||||
* @note When adding a new role, be sure to also add it to base/RoleMap.h and
|
||||
* update nsIAccessibleRole.
|
||||
*/
|
||||
|
||||
namespace mozilla {
|
||||
namespace a11y {
|
||||
namespace roles {
|
||||
enum Role {
|
||||
|
||||
enum Role {
|
||||
/**
|
||||
* Used when accessible hans't strong defined role.
|
||||
*/
|
||||
@ -799,13 +802,25 @@ namespace roles {
|
||||
CHECK_RICH_OPTION = 125,
|
||||
|
||||
/**
|
||||
* It's not role actually. This constant is important to help ensure
|
||||
* nsRoleMap's are synchronized.
|
||||
* Represent a definition list (dl in HTML).
|
||||
*/
|
||||
LAST_ENTRY = 126
|
||||
};
|
||||
DEFINITION_LIST = 126,
|
||||
|
||||
/**
|
||||
* Represent a term in a definition list (dt in HTML).
|
||||
*/
|
||||
TERM = 127,
|
||||
|
||||
/**
|
||||
* Represent a definition in a definition list (dd in HTML)
|
||||
*/
|
||||
DEFINITION = 128,
|
||||
};
|
||||
|
||||
} // namespace role
|
||||
|
||||
typedef enum mozilla::a11y::roles::Role role;
|
||||
|
||||
} // namespace a11y
|
||||
} // namespace mozilla
|
||||
|
||||
|
920
accessible/src/base/RoleMap.h
Normal file
920
accessible/src/base/RoleMap.h
Normal file
@ -0,0 +1,920 @@
|
||||
/* 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/. */
|
||||
|
||||
/**
|
||||
* Usage: declare the macro ROLE()with the following arguments:
|
||||
* ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role)
|
||||
*/
|
||||
|
||||
ROLE(NOTHING,
|
||||
"nothing",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_UNKNOWN)
|
||||
|
||||
ROLE(TITLEBAR,
|
||||
"titlebar",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole, //Irrelevant on OS X; windows are always native.
|
||||
ROLE_SYSTEM_TITLEBAR,
|
||||
ROLE_SYSTEM_TITLEBAR)
|
||||
|
||||
ROLE(MENUBAR,
|
||||
"menubar",
|
||||
ATK_ROLE_MENU_BAR,
|
||||
NSAccessibilityMenuBarRole, //Irrelevant on OS X; the menubar will always be native and on the top of the screen.
|
||||
ROLE_SYSTEM_MENUBAR,
|
||||
ROLE_SYSTEM_MENUBAR)
|
||||
|
||||
ROLE(SCROLLBAR,
|
||||
"scrollbar",
|
||||
ATK_ROLE_SCROLL_BAR,
|
||||
NSAccessibilityScrollBarRole, //We might need to make this its own mozAccessible, to support the children objects (valueindicator, down/up buttons).
|
||||
ROLE_SYSTEM_SCROLLBAR,
|
||||
ROLE_SYSTEM_SCROLLBAR)
|
||||
|
||||
ROLE(GRIP,
|
||||
"grip",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilitySplitterRole,
|
||||
ROLE_SYSTEM_GRIP,
|
||||
ROLE_SYSTEM_GRIP)
|
||||
|
||||
ROLE(SOUND,
|
||||
"sound",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole, //Unused on OS X.
|
||||
ROLE_SYSTEM_SOUND,
|
||||
ROLE_SYSTEM_SOUND)
|
||||
|
||||
ROLE(CURSOR,
|
||||
"cursor",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole, //Unused on OS X.
|
||||
ROLE_SYSTEM_CURSOR,
|
||||
ROLE_SYSTEM_CURSOR)
|
||||
|
||||
ROLE(CARET,
|
||||
"caret",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole, //Unused on OS X.
|
||||
ROLE_SYSTEM_CARET,
|
||||
ROLE_SYSTEM_CARET)
|
||||
|
||||
ROLE(ALERT,
|
||||
"alert",
|
||||
ATK_ROLE_ALERT,
|
||||
NSAccessibilityWindowRole,
|
||||
ROLE_SYSTEM_ALERT,
|
||||
ROLE_SYSTEM_ALERT)
|
||||
|
||||
ROLE(WINDOW,
|
||||
"window",
|
||||
ATK_ROLE_WINDOW,
|
||||
NSAccessibilityWindowRole, //Irrelevant on OS X; all window a11y is handled by the system.
|
||||
ROLE_SYSTEM_WINDOW,
|
||||
ROLE_SYSTEM_WINDOW)
|
||||
|
||||
ROLE(INTERNAL_FRAME,
|
||||
"internal frame",
|
||||
ATK_ROLE_INTERNAL_FRAME,
|
||||
NSAccessibilityScrollAreaRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_INTERNAL_FRAME)
|
||||
|
||||
ROLE(MENUPOPUP,
|
||||
"menupopup",
|
||||
ATK_ROLE_MENU,
|
||||
NSAccessibilityMenuRole, //The parent of menuitems.
|
||||
ROLE_SYSTEM_MENUPOPUP,
|
||||
ROLE_SYSTEM_MENUPOPUP)
|
||||
|
||||
ROLE(MENUITEM,
|
||||
"menuitem",
|
||||
ATK_ROLE_MENU_ITEM,
|
||||
NSAccessibilityMenuItemRole,
|
||||
ROLE_SYSTEM_MENUITEM,
|
||||
ROLE_SYSTEM_MENUITEM)
|
||||
|
||||
ROLE(TOOLTIP,
|
||||
"tooltip",
|
||||
ATK_ROLE_TOOL_TIP,
|
||||
@"AXHelpTag", //10.4+ only, so we re-define the constant.
|
||||
ROLE_SYSTEM_TOOLTIP,
|
||||
ROLE_SYSTEM_TOOLTIP)
|
||||
|
||||
ROLE(APPLICATION,
|
||||
"application",
|
||||
ATK_ROLE_EMBEDDED,
|
||||
NSAccessibilityGroupRole, //Unused on OS X. the system will take care of this.
|
||||
ROLE_SYSTEM_APPLICATION,
|
||||
ROLE_SYSTEM_APPLICATION)
|
||||
|
||||
ROLE(DOCUMENT,
|
||||
"document",
|
||||
ATK_ROLE_DOCUMENT_FRAME,
|
||||
@"AXWebArea",
|
||||
ROLE_SYSTEM_DOCUMENT,
|
||||
ROLE_SYSTEM_DOCUMENT)
|
||||
|
||||
/**
|
||||
* msaa comment:
|
||||
* We used to map to ROLE_SYSTEM_PANE, but JAWS would
|
||||
* not read the accessible name for the contaning pane.
|
||||
* However, JAWS will read the accessible name for a groupbox.
|
||||
* By mapping a PANE to a GROUPING, we get no undesirable effects,
|
||||
* but fortunately JAWS will then read the group's label,
|
||||
* when an inner control gets focused.
|
||||
*/
|
||||
ROLE(PANE,
|
||||
"pane",
|
||||
ATK_ROLE_PANEL,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_GROUPING,
|
||||
ROLE_SYSTEM_GROUPING)
|
||||
|
||||
ROLE(CHART,
|
||||
"chart",
|
||||
ATK_ROLE_CHART,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_CHART,
|
||||
ROLE_SYSTEM_CHART)
|
||||
|
||||
ROLE(DIALOG,
|
||||
"dialog",
|
||||
ATK_ROLE_DIALOG,
|
||||
NSAccessibilityWindowRole, //There's a dialog subrole.
|
||||
ROLE_SYSTEM_DIALOG,
|
||||
ROLE_SYSTEM_DIALOG)
|
||||
|
||||
ROLE(BORDER,
|
||||
"border",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole, //Unused on OS X.
|
||||
ROLE_SYSTEM_BORDER,
|
||||
ROLE_SYSTEM_BORDER)
|
||||
|
||||
ROLE(GROUPING,
|
||||
"grouping",
|
||||
ATK_ROLE_PANEL,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_GROUPING,
|
||||
ROLE_SYSTEM_GROUPING)
|
||||
|
||||
ROLE(SEPARATOR,
|
||||
"separator",
|
||||
ATK_ROLE_SEPARATOR,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_SEPARATOR,
|
||||
ROLE_SYSTEM_SEPARATOR)
|
||||
|
||||
ROLE(TOOLBAR,
|
||||
"toolbar",
|
||||
ATK_ROLE_TOOL_BAR,
|
||||
NSAccessibilityToolbarRole,
|
||||
ROLE_SYSTEM_TOOLBAR,
|
||||
ROLE_SYSTEM_TOOLBAR)
|
||||
|
||||
ROLE(STATUSBAR,
|
||||
"statusbar",
|
||||
ATK_ROLE_STATUSBAR,
|
||||
NSAccessibilityUnknownRole, //Doesn't exist on OS X (a status bar is its parts; a progressbar, a label, etc.)
|
||||
ROLE_SYSTEM_STATUSBAR,
|
||||
ROLE_SYSTEM_STATUSBAR)
|
||||
|
||||
ROLE(TABLE,
|
||||
"table",
|
||||
ATK_ROLE_TABLE,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_TABLE,
|
||||
ROLE_SYSTEM_TABLE)
|
||||
|
||||
ROLE(COLUMNHEADER,
|
||||
"columnheader",
|
||||
ATK_ROLE_COLUMN_HEADER,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_COLUMNHEADER,
|
||||
ROLE_SYSTEM_COLUMNHEADER)
|
||||
|
||||
ROLE(ROWHEADER,
|
||||
"rowheader",
|
||||
ATK_ROLE_ROW_HEADER,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_ROWHEADER,
|
||||
ROLE_SYSTEM_ROWHEADER)
|
||||
|
||||
ROLE(COLUMN,
|
||||
"column",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityColumnRole,
|
||||
ROLE_SYSTEM_COLUMN,
|
||||
ROLE_SYSTEM_COLUMN)
|
||||
|
||||
ROLE(ROW,
|
||||
"row",
|
||||
ATK_ROLE_LIST_ITEM,
|
||||
NSAccessibilityRowRole,
|
||||
ROLE_SYSTEM_ROW,
|
||||
ROLE_SYSTEM_ROW)
|
||||
|
||||
ROLE(CELL,
|
||||
"cell",
|
||||
ATK_ROLE_TABLE_CELL,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_CELL,
|
||||
ROLE_SYSTEM_CELL)
|
||||
|
||||
ROLE(LINK,
|
||||
"link",
|
||||
ATK_ROLE_LINK,
|
||||
@"AXLink", //10.4+ the attr first define in SDK 10.4, so we define it here too. ROLE_LINK
|
||||
ROLE_SYSTEM_LINK,
|
||||
ROLE_SYSTEM_LINK)
|
||||
|
||||
ROLE(HELPBALLOON,
|
||||
"helpballoon",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
@"AXHelpTag",
|
||||
ROLE_SYSTEM_HELPBALLOON,
|
||||
ROLE_SYSTEM_HELPBALLOON)
|
||||
|
||||
ROLE(CHARACTER,
|
||||
"character",
|
||||
ATK_ROLE_IMAGE,
|
||||
NSAccessibilityUnknownRole, //Unused on OS X.
|
||||
ROLE_SYSTEM_CHARACTER,
|
||||
ROLE_SYSTEM_CHARACTER)
|
||||
|
||||
ROLE(LIST,
|
||||
"list",
|
||||
ATK_ROLE_LIST,
|
||||
NSAccessibilityListRole,
|
||||
ROLE_SYSTEM_LIST,
|
||||
ROLE_SYSTEM_LIST)
|
||||
|
||||
ROLE(LISTITEM,
|
||||
"listitem",
|
||||
ATK_ROLE_LIST_ITEM,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_LISTITEM,
|
||||
ROLE_SYSTEM_LISTITEM)
|
||||
|
||||
ROLE(OUTLINE,
|
||||
"outline",
|
||||
ATK_ROLE_TREE,
|
||||
NSAccessibilityOutlineRole,
|
||||
ROLE_SYSTEM_OUTLINE,
|
||||
ROLE_SYSTEM_OUTLINE)
|
||||
|
||||
ROLE(OUTLINEITEM,
|
||||
"outlineitem",
|
||||
ATK_ROLE_LIST_ITEM,
|
||||
NSAccessibilityRowRole, //XXX: use OutlineRow as subrole.
|
||||
ROLE_SYSTEM_OUTLINEITEM,
|
||||
ROLE_SYSTEM_OUTLINEITEM)
|
||||
|
||||
ROLE(PAGETAB,
|
||||
"pagetab",
|
||||
ATK_ROLE_PAGE_TAB,
|
||||
NSAccessibilityRadioButtonRole,
|
||||
ROLE_SYSTEM_PAGETAB,
|
||||
ROLE_SYSTEM_PAGETAB)
|
||||
|
||||
ROLE(PROPERTYPAGE,
|
||||
"propertypage",
|
||||
ATK_ROLE_SCROLL_PANE,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_PROPERTYPAGE,
|
||||
ROLE_SYSTEM_PROPERTYPAGE)
|
||||
|
||||
ROLE(INDICATOR,
|
||||
"indicator",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_INDICATOR,
|
||||
ROLE_SYSTEM_INDICATOR)
|
||||
|
||||
ROLE(GRAPHIC,
|
||||
"graphic",
|
||||
ATK_ROLE_IMAGE,
|
||||
NSAccessibilityImageRole,
|
||||
ROLE_SYSTEM_GRAPHIC,
|
||||
ROLE_SYSTEM_GRAPHIC)
|
||||
|
||||
ROLE(STATICTEXT,
|
||||
"statictext",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityStaticTextRole,
|
||||
ROLE_SYSTEM_STATICTEXT,
|
||||
ROLE_SYSTEM_STATICTEXT)
|
||||
|
||||
ROLE(TEXT_LEAF,
|
||||
"text leaf",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityStaticTextRole,
|
||||
ROLE_SYSTEM_TEXT,
|
||||
ROLE_SYSTEM_TEXT)
|
||||
|
||||
ROLE(PUSHBUTTON,
|
||||
"pushbutton",
|
||||
ATK_ROLE_PUSH_BUTTON,
|
||||
NSAccessibilityButtonRole,
|
||||
ROLE_SYSTEM_PUSHBUTTON,
|
||||
ROLE_SYSTEM_PUSHBUTTON)
|
||||
|
||||
ROLE(CHECKBUTTON,
|
||||
"checkbutton",
|
||||
ATK_ROLE_CHECK_BOX,
|
||||
NSAccessibilityCheckBoxRole,
|
||||
ROLE_SYSTEM_CHECKBUTTON,
|
||||
ROLE_SYSTEM_CHECKBUTTON)
|
||||
|
||||
ROLE(RADIOBUTTON,
|
||||
"radiobutton",
|
||||
ATK_ROLE_RADIO_BUTTON,
|
||||
NSAccessibilityRadioButtonRole,
|
||||
ROLE_SYSTEM_RADIOBUTTON,
|
||||
ROLE_SYSTEM_RADIOBUTTON)
|
||||
|
||||
ROLE(COMBOBOX,
|
||||
"combobox",
|
||||
ATK_ROLE_COMBO_BOX,
|
||||
NSAccessibilityPopUpButtonRole,
|
||||
ROLE_SYSTEM_COMBOBOX,
|
||||
ROLE_SYSTEM_COMBOBOX)
|
||||
|
||||
ROLE(DROPLIST,
|
||||
"droplist",
|
||||
ATK_ROLE_COMBO_BOX,
|
||||
NSAccessibilityPopUpButtonRole,
|
||||
ROLE_SYSTEM_DROPLIST,
|
||||
ROLE_SYSTEM_DROPLIST)
|
||||
|
||||
ROLE(PROGRESSBAR,
|
||||
"progressbar",
|
||||
ATK_ROLE_PROGRESS_BAR,
|
||||
NSAccessibilityProgressIndicatorRole,
|
||||
ROLE_SYSTEM_PROGRESSBAR,
|
||||
ROLE_SYSTEM_PROGRESSBAR)
|
||||
|
||||
ROLE(DIAL,
|
||||
"dial",
|
||||
ATK_ROLE_DIAL,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_DIAL,
|
||||
ROLE_SYSTEM_DIAL)
|
||||
|
||||
ROLE(HOTKEYFIELD,
|
||||
"hotkeyfield",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_HOTKEYFIELD,
|
||||
ROLE_SYSTEM_HOTKEYFIELD)
|
||||
|
||||
ROLE(SLIDER,
|
||||
"slider",
|
||||
ATK_ROLE_SLIDER,
|
||||
NSAccessibilitySliderRole,
|
||||
ROLE_SYSTEM_SLIDER,
|
||||
ROLE_SYSTEM_SLIDER)
|
||||
|
||||
ROLE(SPINBUTTON,
|
||||
"spinbutton",
|
||||
ATK_ROLE_SPIN_BUTTON,
|
||||
NSAccessibilityIncrementorRole, //Subroles: Increment/Decrement.
|
||||
ROLE_SYSTEM_SPINBUTTON,
|
||||
ROLE_SYSTEM_SPINBUTTON)
|
||||
|
||||
ROLE(DIAGRAM,
|
||||
"diagram",
|
||||
ATK_ROLE_IMAGE,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_DIAGRAM,
|
||||
ROLE_SYSTEM_DIAGRAM)
|
||||
|
||||
ROLE(ANIMATION,
|
||||
"animation",
|
||||
ATK_ROLE_ANIMATION,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_ANIMATION,
|
||||
ROLE_SYSTEM_ANIMATION)
|
||||
|
||||
ROLE(EQUATION,
|
||||
"equation",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_EQUATION,
|
||||
ROLE_SYSTEM_EQUATION)
|
||||
|
||||
ROLE(BUTTONDROPDOWN,
|
||||
"buttondropdown",
|
||||
ATK_ROLE_PUSH_BUTTON,
|
||||
NSAccessibilityPopUpButtonRole,
|
||||
ROLE_SYSTEM_BUTTONDROPDOWN,
|
||||
ROLE_SYSTEM_BUTTONDROPDOWN)
|
||||
|
||||
ROLE(BUTTONMENU,
|
||||
"buttonmenu",
|
||||
ATK_ROLE_PUSH_BUTTON,
|
||||
NSAccessibilityMenuButtonRole,
|
||||
ROLE_SYSTEM_BUTTONMENU,
|
||||
ROLE_SYSTEM_BUTTONMENU)
|
||||
|
||||
ROLE(BUTTONDROPDOWNGRID,
|
||||
"buttondropdowngrid",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_BUTTONDROPDOWNGRID,
|
||||
ROLE_SYSTEM_BUTTONDROPDOWNGRID)
|
||||
|
||||
ROLE(WHITESPACE,
|
||||
"whitespace",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_WHITESPACE,
|
||||
ROLE_SYSTEM_WHITESPACE)
|
||||
|
||||
ROLE(PAGETABLIST,
|
||||
"pagetablist",
|
||||
ATK_ROLE_PAGE_TAB_LIST,
|
||||
NSAccessibilityTabGroupRole,
|
||||
ROLE_SYSTEM_PAGETABLIST,
|
||||
ROLE_SYSTEM_PAGETABLIST)
|
||||
|
||||
ROLE(CLOCK,
|
||||
"clock",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole, //Unused on OS X
|
||||
ROLE_SYSTEM_CLOCK,
|
||||
ROLE_SYSTEM_CLOCK)
|
||||
|
||||
ROLE(SPLITBUTTON,
|
||||
"splitbutton",
|
||||
ATK_ROLE_PUSH_BUTTON,
|
||||
NSAccessibilityButtonRole,
|
||||
ROLE_SYSTEM_SPLITBUTTON,
|
||||
ROLE_SYSTEM_SPLITBUTTON)
|
||||
|
||||
ROLE(IPADDRESS,
|
||||
"ipaddress",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_IPADDRESS,
|
||||
ROLE_SYSTEM_IPADDRESS)
|
||||
|
||||
ROLE(ACCEL_LABEL,
|
||||
"accel label",
|
||||
ATK_ROLE_ACCEL_LABEL,
|
||||
NSAccessibilityStaticTextRole,
|
||||
ROLE_SYSTEM_STATICTEXT,
|
||||
ROLE_SYSTEM_STATICTEXT)
|
||||
|
||||
ROLE(ARROW,
|
||||
"arrow",
|
||||
ATK_ROLE_ARROW,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_INDICATOR,
|
||||
ROLE_SYSTEM_INDICATOR)
|
||||
|
||||
ROLE(CANVAS,
|
||||
"canvas",
|
||||
ATK_ROLE_CANVAS,
|
||||
NSAccessibilityImageRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_CANVAS)
|
||||
|
||||
ROLE(CHECK_MENU_ITEM,
|
||||
"check menu item",
|
||||
ATK_ROLE_CHECK_MENU_ITEM,
|
||||
NSAccessibilityMenuItemRole,
|
||||
ROLE_SYSTEM_MENUITEM,
|
||||
IA2_ROLE_CHECK_MENU_ITEM)
|
||||
|
||||
ROLE(COLOR_CHOOSER,
|
||||
"color chooser",
|
||||
ATK_ROLE_COLOR_CHOOSER,
|
||||
NSAccessibilityColorWellRole,
|
||||
ROLE_SYSTEM_DIALOG,
|
||||
IA2_ROLE_COLOR_CHOOSER)
|
||||
|
||||
ROLE(DATE_EDITOR,
|
||||
"date editor",
|
||||
ATK_ROLE_DATE_EDITOR,
|
||||
NSAccessibilityUnknownRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_DATE_EDITOR)
|
||||
|
||||
ROLE(DESKTOP_ICON,
|
||||
"desktop icon",
|
||||
ATK_ROLE_DESKTOP_ICON,
|
||||
NSAccessibilityImageRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_DESKTOP_ICON)
|
||||
|
||||
ROLE(DESKTOP_FRAME,
|
||||
"desktop frame",
|
||||
ATK_ROLE_DESKTOP_FRAME,
|
||||
NSAccessibilityUnknownRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_DESKTOP_PANE)
|
||||
|
||||
ROLE(DIRECTORY_PANE,
|
||||
"directory pane",
|
||||
ATK_ROLE_DIRECTORY_PANE,
|
||||
NSAccessibilityBrowserRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_DIRECTORY_PANE)
|
||||
|
||||
ROLE(FILE_CHOOSER,
|
||||
"file chooser",
|
||||
ATK_ROLE_FILE_CHOOSER,
|
||||
NSAccessibilityUnknownRole, //Unused on OS X
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_FILE_CHOOSER)
|
||||
|
||||
ROLE(FONT_CHOOSER,
|
||||
"font chooser",
|
||||
ATK_ROLE_FONT_CHOOSER,
|
||||
NSAccessibilityUnknownRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_FONT_CHOOSER)
|
||||
|
||||
ROLE(CHROME_WINDOW,
|
||||
"chrome window",
|
||||
ATK_ROLE_FRAME,
|
||||
NSAccessibilityUnknownRole, //Unused on OS X
|
||||
ROLE_SYSTEM_APPLICATION,
|
||||
IA2_ROLE_FRAME)
|
||||
|
||||
ROLE(GLASS_PANE,
|
||||
"glass pane",
|
||||
ATK_ROLE_GLASS_PANE,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_GLASS_PANE)
|
||||
|
||||
ROLE(HTML_CONTAINER,
|
||||
"html container",
|
||||
ATK_ROLE_HTML_CONTAINER,
|
||||
NSAccessibilityUnknownRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_UNKNOWN)
|
||||
|
||||
ROLE(ICON,
|
||||
"icon",
|
||||
ATK_ROLE_ICON,
|
||||
NSAccessibilityImageRole,
|
||||
ROLE_SYSTEM_PUSHBUTTON,
|
||||
IA2_ROLE_ICON)
|
||||
|
||||
ROLE(LABEL,
|
||||
"label",
|
||||
ATK_ROLE_LABEL,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_STATICTEXT,
|
||||
IA2_ROLE_LABEL)
|
||||
|
||||
ROLE(LAYERED_PANE,
|
||||
"layered pane",
|
||||
ATK_ROLE_LAYERED_PANE,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_LAYERED_PANE)
|
||||
|
||||
ROLE(OPTION_PANE,
|
||||
"option pane",
|
||||
ATK_ROLE_OPTION_PANE,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_OPTION_PANE)
|
||||
|
||||
ROLE(PASSWORD_TEXT,
|
||||
"password text",
|
||||
ATK_ROLE_PASSWORD_TEXT,
|
||||
NSAccessibilityTextFieldRole,
|
||||
ROLE_SYSTEM_TEXT,
|
||||
ROLE_SYSTEM_TEXT)
|
||||
|
||||
ROLE(POPUP_MENU,
|
||||
"popup menu",
|
||||
ATK_ROLE_POPUP_MENU,
|
||||
NSAccessibilityUnknownRole, //Unused
|
||||
ROLE_SYSTEM_MENUPOPUP,
|
||||
ROLE_SYSTEM_MENUPOPUP)
|
||||
|
||||
ROLE(RADIO_MENU_ITEM,
|
||||
"radio menu item",
|
||||
ATK_ROLE_RADIO_MENU_ITEM,
|
||||
NSAccessibilityMenuItemRole,
|
||||
ROLE_SYSTEM_MENUITEM,
|
||||
IA2_ROLE_RADIO_MENU_ITEM)
|
||||
|
||||
ROLE(ROOT_PANE,
|
||||
"root pane",
|
||||
ATK_ROLE_ROOT_PANE,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_ROOT_PANE)
|
||||
|
||||
ROLE(SCROLL_PANE,
|
||||
"scroll pane",
|
||||
ATK_ROLE_SCROLL_PANE,
|
||||
NSAccessibilityScrollAreaRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_SCROLL_PANE)
|
||||
|
||||
ROLE(SPLIT_PANE,
|
||||
"split pane",
|
||||
ATK_ROLE_SPLIT_PANE,
|
||||
NSAccessibilitySplitGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_SPLIT_PANE)
|
||||
|
||||
ROLE(TABLE_COLUMN_HEADER,
|
||||
"table column header",
|
||||
ATK_ROLE_TABLE_COLUMN_HEADER,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_COLUMNHEADER,
|
||||
ROLE_SYSTEM_COLUMNHEADER)
|
||||
|
||||
ROLE(TABLE_ROW_HEADER,
|
||||
"table row header",
|
||||
ATK_ROLE_TABLE_ROW_HEADER,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_ROWHEADER,
|
||||
ROLE_SYSTEM_ROWHEADER)
|
||||
|
||||
ROLE(TEAR_OFF_MENU_ITEM,
|
||||
"tear off menu item",
|
||||
ATK_ROLE_TEAR_OFF_MENU_ITEM,
|
||||
NSAccessibilityMenuItemRole,
|
||||
ROLE_SYSTEM_MENUITEM,
|
||||
IA2_ROLE_TEAR_OFF_MENU)
|
||||
|
||||
ROLE(TERMINAL,
|
||||
"terminal",
|
||||
ATK_ROLE_TERMINAL,
|
||||
NSAccessibilityUnknownRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_TERMINAL)
|
||||
|
||||
ROLE(TEXT_CONTAINER,
|
||||
"text container",
|
||||
ATK_ROLE_TEXT,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_TEXT_FRAME)
|
||||
|
||||
ROLE(TOGGLE_BUTTON,
|
||||
"toggle button",
|
||||
ATK_ROLE_TOGGLE_BUTTON,
|
||||
NSAccessibilityButtonRole,
|
||||
ROLE_SYSTEM_PUSHBUTTON,
|
||||
IA2_ROLE_TOGGLE_BUTTON)
|
||||
|
||||
ROLE(TREE_TABLE,
|
||||
"tree table",
|
||||
ATK_ROLE_TREE_TABLE,
|
||||
NSAccessibilityTableRole,
|
||||
ROLE_SYSTEM_OUTLINE,
|
||||
ROLE_SYSTEM_OUTLINE)
|
||||
|
||||
ROLE(VIEWPORT,
|
||||
"viewport",
|
||||
ATK_ROLE_VIEWPORT,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_PANE,
|
||||
IA2_ROLE_VIEW_PORT)
|
||||
|
||||
ROLE(HEADER,
|
||||
"header",
|
||||
ATK_ROLE_HEADER,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_HEADER)
|
||||
|
||||
ROLE(FOOTER,
|
||||
"footer",
|
||||
ATK_ROLE_FOOTER,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_FOOTER)
|
||||
|
||||
ROLE(PARAGRAPH,
|
||||
"paragraph",
|
||||
ATK_ROLE_PARAGRAPH,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_PARAGRAPH)
|
||||
|
||||
ROLE(RULER,
|
||||
"ruler",
|
||||
ATK_ROLE_RULER,
|
||||
@"AXRuler", //10.4+ only, so we re-define the constant.
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_RULER)
|
||||
|
||||
ROLE(AUTOCOMPLETE,
|
||||
"autocomplete",
|
||||
ATK_ROLE_AUTOCOMPLETE,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_COMBOBOX,
|
||||
ROLE_SYSTEM_COMBOBOX)
|
||||
|
||||
ROLE(EDITBAR,
|
||||
"editbar",
|
||||
ATK_ROLE_EDITBAR,
|
||||
NSAccessibilityTextFieldRole,
|
||||
ROLE_SYSTEM_TEXT,
|
||||
IA2_ROLE_EDITBAR)
|
||||
|
||||
ROLE(ENTRY,
|
||||
"entry",
|
||||
ATK_ROLE_ENTRY,
|
||||
NSAccessibilityTextFieldRole,
|
||||
ROLE_SYSTEM_TEXT,
|
||||
ROLE_SYSTEM_TEXT)
|
||||
|
||||
ROLE(CAPTION,
|
||||
"caption",
|
||||
ATK_ROLE_CAPTION,
|
||||
NSAccessibilityStaticTextRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_CAPTION)
|
||||
|
||||
ROLE(DOCUMENT_FRAME,
|
||||
"document frame",
|
||||
ATK_ROLE_DOCUMENT_FRAME,
|
||||
NSAccessibilityScrollAreaRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_UNKNOWN)
|
||||
|
||||
ROLE(HEADING,
|
||||
"heading",
|
||||
ATK_ROLE_HEADING,
|
||||
@"AXHeading",
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_HEADING)
|
||||
|
||||
ROLE(PAGE,
|
||||
"page",
|
||||
ATK_ROLE_PAGE,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_PAGE)
|
||||
|
||||
ROLE(SECTION,
|
||||
"section",
|
||||
ATK_ROLE_SECTION,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_SECTION)
|
||||
|
||||
ROLE(REDUNDANT_OBJECT,
|
||||
"redundant object",
|
||||
ATK_ROLE_REDUNDANT_OBJECT,
|
||||
NSAccessibilityUnknownRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_REDUNDANT_OBJECT)
|
||||
|
||||
ROLE(FORM,
|
||||
"form",
|
||||
ATK_ROLE_FORM,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_FORM)
|
||||
|
||||
ROLE(IME,
|
||||
"ime",
|
||||
ATK_ROLE_INPUT_METHOD_WINDOW,
|
||||
NSAccessibilityUnknownRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_INPUT_METHOD_WINDOW)
|
||||
|
||||
ROLE(APP_ROOT,
|
||||
"app root",
|
||||
ATK_ROLE_APPLICATION,
|
||||
NSAccessibilityUnknownRole, //Unused on OS X
|
||||
ROLE_SYSTEM_APPLICATION,
|
||||
ROLE_SYSTEM_APPLICATION)
|
||||
|
||||
ROLE(PARENT_MENUITEM,
|
||||
"parent menuitem",
|
||||
ATK_ROLE_MENU,
|
||||
NSAccessibilityMenuItemRole,
|
||||
ROLE_SYSTEM_MENUITEM,
|
||||
ROLE_SYSTEM_MENUITEM)
|
||||
|
||||
ROLE(CALENDAR,
|
||||
"calendar",
|
||||
ATK_ROLE_CALENDAR,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_CLIENT,
|
||||
ROLE_SYSTEM_CLIENT)
|
||||
|
||||
ROLE(COMBOBOX_LIST,
|
||||
"combobox list",
|
||||
ATK_ROLE_MENU,
|
||||
NSAccessibilityMenuRole,
|
||||
ROLE_SYSTEM_LIST,
|
||||
ROLE_SYSTEM_LIST)
|
||||
|
||||
ROLE(COMBOBOX_OPTION,
|
||||
"combobox option",
|
||||
ATK_ROLE_MENU_ITEM,
|
||||
NSAccessibilityMenuItemRole,
|
||||
ROLE_SYSTEM_LISTITEM,
|
||||
ROLE_SYSTEM_LISTITEM)
|
||||
|
||||
ROLE(IMAGE_MAP,
|
||||
"image map",
|
||||
ATK_ROLE_IMAGE,
|
||||
NSAccessibilityImageRole,
|
||||
ROLE_SYSTEM_GRAPHIC,
|
||||
ROLE_SYSTEM_GRAPHIC)
|
||||
|
||||
ROLE(OPTION,
|
||||
"listbox option",
|
||||
ATK_ROLE_LIST_ITEM,
|
||||
NSAccessibilityRowRole,
|
||||
ROLE_SYSTEM_LISTITEM,
|
||||
ROLE_SYSTEM_LISTITEM)
|
||||
|
||||
ROLE(RICH_OPTION,
|
||||
"listbox rich option",
|
||||
ATK_ROLE_LIST_ITEM,
|
||||
NSAccessibilityRowRole,
|
||||
ROLE_SYSTEM_LISTITEM,
|
||||
ROLE_SYSTEM_LISTITEM)
|
||||
|
||||
ROLE(LISTBOX,
|
||||
"listbox",
|
||||
ATK_ROLE_LIST,
|
||||
NSAccessibilityListRole,
|
||||
ROLE_SYSTEM_LIST,
|
||||
ROLE_SYSTEM_LIST)
|
||||
|
||||
ROLE(FLAT_EQUATION,
|
||||
"flat equation",
|
||||
ATK_ROLE_UNKNOWN,
|
||||
NSAccessibilityUnknownRole,
|
||||
ROLE_SYSTEM_EQUATION,
|
||||
ROLE_SYSTEM_EQUATION)
|
||||
|
||||
ROLE(GRID_CELL,
|
||||
"gridcell",
|
||||
ATK_ROLE_TABLE_CELL,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_CELL,
|
||||
ROLE_SYSTEM_CELL)
|
||||
|
||||
ROLE(EMBEDDED_OBJECT,
|
||||
"embedded object",
|
||||
ATK_ROLE_PANEL,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_EMBEDDED_OBJECT)
|
||||
|
||||
ROLE(NOTE,
|
||||
"note",
|
||||
ATK_ROLE_SECTION,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_NOTE)
|
||||
|
||||
ROLE(FIGURE,
|
||||
"figure",
|
||||
ATK_ROLE_PANEL,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_GROUPING,
|
||||
ROLE_SYSTEM_GROUPING)
|
||||
|
||||
ROLE(CHECK_RICH_OPTION,
|
||||
"check rich option",
|
||||
ATK_ROLE_CHECK_BOX,
|
||||
NSAccessibilityCheckBoxRole,
|
||||
ROLE_SYSTEM_CHECKBUTTON,
|
||||
ROLE_SYSTEM_CHECKBUTTON)
|
||||
|
||||
ROLE(DEFINITION_LIST,
|
||||
"definitionlist",
|
||||
ATK_ROLE_LIST,
|
||||
NSAccessibilityListRole,
|
||||
ROLE_SYSTEM_LIST,
|
||||
ROLE_SYSTEM_LIST)
|
||||
|
||||
ROLE(TERM,
|
||||
"term",
|
||||
ATK_ROLE_LIST_ITEM,
|
||||
NSAccessibilityGroupRole,
|
||||
ROLE_SYSTEM_LISTITEM,
|
||||
ROLE_SYSTEM_LISTITEM)
|
||||
|
||||
ROLE(DEFINITION,
|
||||
"definition",
|
||||
ATK_ROLE_PARAGRAPH,
|
||||
NSAccessibilityGroupRole,
|
||||
USE_ROLE_STRING,
|
||||
IA2_ROLE_PARAGRAPH)
|
@ -38,9 +38,9 @@
|
||||
|
||||
#include "nsAccDocManager.h"
|
||||
|
||||
#include "ApplicationAccessible.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsApplicationAccessible.h"
|
||||
#include "nsARIAMap.h"
|
||||
#include "nsRootAccessibleWrap.h"
|
||||
#include "States.h"
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include "nsIWebProgress.h"
|
||||
#include "nsIWebProgressListener.h"
|
||||
#include "nsWeakReference.h"
|
||||
#include "nsIPresShell.h"
|
||||
|
||||
class nsAccessible;
|
||||
class nsDocAccessible;
|
||||
@ -69,6 +70,14 @@ public:
|
||||
*/
|
||||
nsDocAccessible *GetDocAccessible(nsIDocument *aDocument);
|
||||
|
||||
/**
|
||||
* Return document accessible for the given presshell.
|
||||
*/
|
||||
nsDocAccessible* GetDocAccessible(const nsIPresShell* aPresShell)
|
||||
{
|
||||
return aPresShell ? GetDocAccessible(aPresShell->GetDocument()) : nsnull;
|
||||
}
|
||||
|
||||
/**
|
||||
* Search through all document accessibles for an accessible with the given
|
||||
* unique id.
|
||||
|
@ -137,23 +137,13 @@ public:
|
||||
*/
|
||||
static nsIAtom* GetARIAToken(mozilla::dom::Element* aElement, nsIAtom* aAttr);
|
||||
|
||||
/**
|
||||
* Return document accessible for the given presshell.
|
||||
*/
|
||||
static nsDocAccessible* GetDocAccessibleFor(const nsIPresShell* aPresShell)
|
||||
{
|
||||
return aPresShell ?
|
||||
GetAccService()->GetDocAccessible(aPresShell->GetDocument()) : nsnull;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return document accessible for the given DOM node.
|
||||
*/
|
||||
static nsDocAccessible *GetDocAccessibleFor(nsINode *aNode)
|
||||
{
|
||||
nsIPresShell *presShell = nsCoreUtils::GetPresShellFor(aNode);
|
||||
return presShell ?
|
||||
GetAccService()->GetDocAccessible(presShell->GetDocument()) : nsnull;
|
||||
return GetAccService()->GetDocAccessible(presShell);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -164,8 +154,7 @@ public:
|
||||
nsCOMPtr<nsIDocShell> docShell(do_QueryInterface(aContainer));
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
docShell->GetPresShell(getter_AddRefs(presShell));
|
||||
return presShell ?
|
||||
GetAccService()->GetDocAccessible(presShell->GetDocument()) : nsnull;
|
||||
return GetAccService()->GetDocAccessible(presShell);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -38,9 +38,9 @@
|
||||
|
||||
#include "nsAccessNode.h"
|
||||
|
||||
#include "ApplicationAccessibleWrap.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsApplicationAccessibleWrap.h"
|
||||
#include "nsCoreUtils.h"
|
||||
#include "nsRootAccessible.h"
|
||||
|
||||
@ -67,7 +67,7 @@ nsIStringBundle *nsAccessNode::gStringBundle = 0;
|
||||
|
||||
bool nsAccessNode::gIsFormFillEnabled = false;
|
||||
|
||||
nsApplicationAccessible *nsAccessNode::gApplicationAccessible = nsnull;
|
||||
ApplicationAccessible* nsAccessNode::gApplicationAccessible = nsnull;
|
||||
|
||||
/*
|
||||
* Class nsAccessNode
|
||||
@ -130,18 +130,16 @@ nsAccessNode::Shutdown()
|
||||
mDoc = nsnull;
|
||||
}
|
||||
|
||||
nsApplicationAccessible*
|
||||
ApplicationAccessible*
|
||||
nsAccessNode::GetApplicationAccessible()
|
||||
{
|
||||
NS_ASSERTION(!nsAccessibilityService::IsShutdown(),
|
||||
"Accessibility wasn't initialized!");
|
||||
|
||||
if (!gApplicationAccessible) {
|
||||
nsApplicationAccessibleWrap::PreCreate();
|
||||
ApplicationAccessibleWrap::PreCreate();
|
||||
|
||||
gApplicationAccessible = new nsApplicationAccessibleWrap();
|
||||
if (!gApplicationAccessible)
|
||||
return nsnull;
|
||||
gApplicationAccessible = new ApplicationAccessibleWrap();
|
||||
|
||||
// Addref on create. Will Release in ShutdownXPAccessibility()
|
||||
NS_ADDREF(gApplicationAccessible);
|
||||
@ -200,7 +198,7 @@ void nsAccessNode::ShutdownXPAccessibility()
|
||||
|
||||
// Release gApplicationAccessible after everything else is shutdown
|
||||
// so we don't accidently create it again while tearing down root accessibles
|
||||
nsApplicationAccessibleWrap::Unload();
|
||||
ApplicationAccessibleWrap::Unload();
|
||||
if (gApplicationAccessible) {
|
||||
gApplicationAccessible->Shutdown();
|
||||
NS_RELEASE(gApplicationAccessible);
|
||||
|
@ -53,8 +53,8 @@
|
||||
#include "nsIStringBundle.h"
|
||||
#include "nsWeakReference.h"
|
||||
|
||||
class ApplicationAccessible;
|
||||
class nsAccessNode;
|
||||
class nsApplicationAccessible;
|
||||
class nsDocAccessible;
|
||||
class nsIAccessibleDocument;
|
||||
class nsRootAccessible;
|
||||
@ -83,7 +83,7 @@ public:
|
||||
/**
|
||||
* Return an application accessible.
|
||||
*/
|
||||
static nsApplicationAccessible* GetApplicationAccessible();
|
||||
static ApplicationAccessible* GetApplicationAccessible();
|
||||
|
||||
/**
|
||||
* Return the document accessible for this access node.
|
||||
@ -174,7 +174,7 @@ private:
|
||||
nsAccessNode(const nsAccessNode&) MOZ_DELETE;
|
||||
nsAccessNode& operator =(const nsAccessNode&) MOZ_DELETE;
|
||||
|
||||
static nsApplicationAccessible *gApplicationAccessible;
|
||||
static ApplicationAccessible* gApplicationAccessible;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -40,6 +40,7 @@
|
||||
|
||||
// NOTE: alphabetically ordered
|
||||
#include "Accessible-inl.h"
|
||||
#include "ApplicationAccessibleWrap.h"
|
||||
#include "ARIAGridAccessibleWrap.h"
|
||||
#ifdef MOZ_ACCESSIBILITY_ATK
|
||||
#include "AtkSocketAccessible.h"
|
||||
@ -48,7 +49,6 @@
|
||||
#include "nsAccessiblePivot.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsARIAMap.h"
|
||||
#include "nsApplicationAccessibleWrap.h"
|
||||
#include "nsIAccessibleProvider.h"
|
||||
#include "nsHTMLCanvasAccessible.h"
|
||||
#include "nsHTMLImageMapAccessible.h"
|
||||
@ -202,8 +202,7 @@ nsAccessibilityService::CreateOuterDocAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new OuterDocAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new OuterDocAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -213,8 +212,7 @@ nsAccessibilityService::CreateHTMLButtonAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new HTMLButtonAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new HTMLButtonAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -224,8 +222,7 @@ nsAccessibilityService::CreateHTMLLIAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLLIAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLLIAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -235,8 +232,7 @@ nsAccessibilityService::CreateHyperTextAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHyperTextAccessibleWrap(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHyperTextAccessibleWrap(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -246,8 +242,7 @@ nsAccessibilityService::CreateHTMLCheckboxAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new HTMLCheckboxAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new HTMLCheckboxAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -257,8 +252,7 @@ nsAccessibilityService::CreateHTMLComboboxAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLComboboxAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLComboboxAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -268,8 +262,7 @@ nsAccessibilityService::CreateHTMLCanvasAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLCanvasAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLCanvasAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -279,8 +272,7 @@ nsAccessibilityService::CreateHTMLFileInputAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new HTMLFileInputAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new HTMLFileInputAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -290,8 +282,7 @@ nsAccessibilityService::CreateHTMLImageAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLImageAccessibleWrap(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLImageAccessibleWrap(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -301,8 +292,7 @@ nsAccessibilityService::CreateHTMLImageMapAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLImageMapAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLImageMapAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -312,8 +302,7 @@ nsAccessibilityService::CreateHTMLGroupboxAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new HTMLGroupboxAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new HTMLGroupboxAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -323,8 +312,7 @@ nsAccessibilityService::CreateHTMLListboxAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLSelectListAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLSelectListAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -334,8 +322,7 @@ nsAccessibilityService::CreateHTMLMediaAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsEnumRoleAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell),
|
||||
new nsEnumRoleAccessible(aContent, GetDocAccessible(aPresShell),
|
||||
roles::GROUPING);
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
@ -379,7 +366,7 @@ nsAccessibilityService::CreateHTMLObjectFrameAccessible(nsObjectFrame* aFrame,
|
||||
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLWin32ObjectOwnerAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell),
|
||||
GetDocAccessible(aPresShell),
|
||||
pluginPort);
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
@ -393,8 +380,7 @@ nsAccessibilityService::CreateHTMLObjectFrameAccessible(nsObjectFrame* aFrame,
|
||||
NPPVpluginNativeAccessibleAtkPlugId, &plugId);
|
||||
if (NS_SUCCEEDED(rv) && !plugId.IsEmpty()) {
|
||||
AtkSocketAccessible* socketAccessible =
|
||||
new AtkSocketAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell),
|
||||
new AtkSocketAccessible(aContent, GetDocAccessible(aPresShell),
|
||||
plugId);
|
||||
|
||||
NS_ADDREF(socketAccessible);
|
||||
@ -415,8 +401,7 @@ nsAccessibilityService::CreateHTMLRadioButtonAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new HTMLRadioButtonAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new HTMLRadioButtonAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -426,8 +411,7 @@ nsAccessibilityService::CreateHTMLTableAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLTableAccessibleWrap(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLTableAccessibleWrap(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -437,8 +421,17 @@ nsAccessibilityService::CreateHTMLTableCellAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLTableCellAccessibleWrap(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLTableCellAccessibleWrap(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
|
||||
already_AddRefed<nsAccessible>
|
||||
nsAccessibilityService::CreateHTMLTableRowAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsEnumRoleAccessible(aContent, GetDocAccessible(aPresShell), roles::ROW);
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -448,8 +441,7 @@ nsAccessibilityService::CreateHTMLTextAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLTextAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLTextAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -459,8 +451,7 @@ nsAccessibilityService::CreateHTMLTextFieldAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new HTMLTextFieldAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new HTMLTextFieldAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -470,8 +461,7 @@ nsAccessibilityService::CreateHTMLLabelAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLLabelAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLLabelAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -481,8 +471,7 @@ nsAccessibilityService::CreateHTMLHRAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLHRAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLHRAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -492,8 +481,7 @@ nsAccessibilityService::CreateHTMLBRAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLBRAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLBRAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -503,8 +491,7 @@ nsAccessibilityService::CreateHTMLCaptionAccessible(nsIContent* aContent,
|
||||
nsIPresShell* aPresShell)
|
||||
{
|
||||
nsAccessible* accessible =
|
||||
new nsHTMLCaptionAccessible(aContent,
|
||||
nsAccUtils::GetDocAccessibleFor(aPresShell));
|
||||
new nsHTMLCaptionAccessible(aContent, GetDocAccessible(aPresShell));
|
||||
NS_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
@ -539,7 +526,7 @@ nsAccessibilityService::ContentRangeInserted(nsIPresShell* aPresShell,
|
||||
NS_ConvertUTF16toUTF8(ctag).get(), cid.get(), aEndChild);
|
||||
#endif
|
||||
|
||||
nsDocAccessible* docAccessible = GetDocAccessible(aPresShell->GetDocument());
|
||||
nsDocAccessible* docAccessible = GetDocAccessible(aPresShell);
|
||||
if (docAccessible)
|
||||
docAccessible->ContentInserted(aContainer, aStartChild, aEndChild);
|
||||
}
|
||||
@ -573,7 +560,7 @@ nsAccessibilityService::ContentRemoved(nsIPresShell* aPresShell,
|
||||
NS_ConvertUTF16toUTF8(ctag).get(), cid.get());
|
||||
#endif
|
||||
|
||||
nsDocAccessible* docAccessible = GetDocAccessible(aPresShell->GetDocument());
|
||||
nsDocAccessible* docAccessible = GetDocAccessible(aPresShell);
|
||||
if (docAccessible)
|
||||
docAccessible->ContentRemoved(aContainer, aChild);
|
||||
}
|
||||
@ -582,7 +569,7 @@ void
|
||||
nsAccessibilityService::UpdateText(nsIPresShell* aPresShell,
|
||||
nsIContent* aContent)
|
||||
{
|
||||
nsDocAccessible* document = GetDocAccessible(aPresShell->GetDocument());
|
||||
nsDocAccessible* document = GetDocAccessible(aPresShell);
|
||||
if (document)
|
||||
document->UpdateText(aContent);
|
||||
}
|
||||
@ -592,7 +579,7 @@ nsAccessibilityService::TreeViewChanged(nsIPresShell* aPresShell,
|
||||
nsIContent* aContent,
|
||||
nsITreeView* aView)
|
||||
{
|
||||
nsDocAccessible* document = GetDocAccessible(aPresShell->GetDocument());
|
||||
nsDocAccessible* document = GetDocAccessible(aPresShell);
|
||||
if (document) {
|
||||
nsAccessible* accessible = document->GetAccessible(aContent);
|
||||
if (accessible) {
|
||||
@ -608,7 +595,7 @@ nsAccessibilityService::UpdateListBullet(nsIPresShell* aPresShell,
|
||||
nsIContent* aHTMLListItemContent,
|
||||
bool aHasBullet)
|
||||
{
|
||||
nsDocAccessible* document = GetDocAccessible(aPresShell->GetDocument());
|
||||
nsDocAccessible* document = GetDocAccessible(aPresShell);
|
||||
if (document) {
|
||||
nsAccessible* accessible = document->GetAccessible(aHTMLListItemContent);
|
||||
if (accessible) {
|
||||
@ -623,7 +610,7 @@ void
|
||||
nsAccessibilityService::UpdateImageMap(nsImageFrame* aImageFrame)
|
||||
{
|
||||
nsIPresShell* presShell = aImageFrame->PresContext()->PresShell();
|
||||
nsDocAccessible* document = GetDocAccessible(presShell->GetDocument());
|
||||
nsDocAccessible* document = GetDocAccessible(presShell);
|
||||
if (document) {
|
||||
nsAccessible* accessible =
|
||||
document->GetAccessible(aImageFrame->GetContent());
|
||||
@ -682,7 +669,7 @@ void
|
||||
nsAccessibilityService::RecreateAccessible(nsIPresShell* aPresShell,
|
||||
nsIContent* aContent)
|
||||
{
|
||||
nsDocAccessible* document = GetDocAccessible(aPresShell->GetDocument());
|
||||
nsDocAccessible* document = GetDocAccessible(aPresShell);
|
||||
if (document)
|
||||
document->RecreateAccessible(aContent);
|
||||
}
|
||||
@ -691,7 +678,7 @@ nsAccessibilityService::RecreateAccessible(nsIPresShell* aPresShell,
|
||||
// nsIAccessibleRetrieval
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAccessibilityService::GetApplicationAccessible(nsIAccessible **aAccessibleApplication)
|
||||
nsAccessibilityService::GetApplicationAccessible(nsIAccessible** aAccessibleApplication)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aAccessibleApplication);
|
||||
|
||||
@ -719,13 +706,19 @@ nsAccessibilityService::GetAccessibleFor(nsIDOMNode *aNode,
|
||||
NS_IMETHODIMP
|
||||
nsAccessibilityService::GetStringRole(PRUint32 aRole, nsAString& aString)
|
||||
{
|
||||
if ( aRole >= ArrayLength(kRoleNames)) {
|
||||
aString.AssignLiteral("unknown");
|
||||
#define ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role) \
|
||||
case roles::geckoRole: \
|
||||
CopyUTF8toUTF16(stringRole, aString); \
|
||||
return NS_OK;
|
||||
|
||||
switch (aRole) {
|
||||
#include "RoleMap.h"
|
||||
default:
|
||||
aString.AssignLiteral("unknown");
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
CopyUTF8toUTF16(kRoleNames[aRole], aString);
|
||||
return NS_OK;
|
||||
#undef ROLE
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -1707,13 +1700,6 @@ nsAccessibilityService::CreateHTMLAccessibleByMarkup(nsIFrame* aFrame,
|
||||
return accessible;
|
||||
}
|
||||
|
||||
if (tag == nsGkAtoms::tr) {
|
||||
nsAccessible* accessible = new nsEnumRoleAccessible(aContent, aDoc,
|
||||
roles::ROW);
|
||||
NS_IF_ADDREF(accessible);
|
||||
return accessible;
|
||||
}
|
||||
|
||||
if (nsCoreUtils::IsHTMLTableHeader(aContent)) {
|
||||
nsAccessible* accessible = new nsHTMLTableHeaderCellAccessibleWrap(aContent,
|
||||
aDoc);
|
||||
@ -1744,7 +1730,7 @@ nsAccessible*
|
||||
nsAccessibilityService::AddNativeRootAccessible(void* aAtkAccessible)
|
||||
{
|
||||
#ifdef MOZ_ACCESSIBILITY_ATK
|
||||
nsApplicationAccessible* applicationAcc =
|
||||
ApplicationAccessible* applicationAcc =
|
||||
nsAccessNode::GetApplicationAccessible();
|
||||
if (!applicationAcc)
|
||||
return nsnull;
|
||||
@ -1765,7 +1751,7 @@ void
|
||||
nsAccessibilityService::RemoveNativeRootAccessible(nsAccessible* aAccessible)
|
||||
{
|
||||
#ifdef MOZ_ACCESSIBILITY_ATK
|
||||
nsApplicationAccessible* applicationAcc =
|
||||
ApplicationAccessible* applicationAcc =
|
||||
nsAccessNode::GetApplicationAccessible();
|
||||
|
||||
if (applicationAcc)
|
||||
|
@ -63,7 +63,7 @@ FocusManager* FocusMgr();
|
||||
/**
|
||||
* Perform initialization that should be done as soon as possible, in order
|
||||
* to minimize startup time.
|
||||
* XXX: this function and the next defined in nsApplicationAccessibleWrap.cpp
|
||||
* XXX: this function and the next defined in ApplicationAccessibleWrap.cpp
|
||||
*/
|
||||
void PreInit();
|
||||
|
||||
@ -131,6 +131,8 @@ public:
|
||||
CreateHTMLTableAccessible(nsIContent* aContent, nsIPresShell* aPresShell);
|
||||
already_AddRefed<nsAccessible>
|
||||
CreateHTMLTableCellAccessible(nsIContent* aContent, nsIPresShell* aPresShell);
|
||||
already_AddRefed<nsAccessible>
|
||||
CreateHTMLTableRowAccessible(nsIContent* aContent, nsIPresShell* aPresShell);
|
||||
already_AddRefed<nsAccessible>
|
||||
CreateHTMLTextAccessible(nsIContent* aContent, nsIPresShell* aPresShell);
|
||||
already_AddRefed<nsAccessible>
|
||||
@ -293,139 +295,6 @@ GetAccService()
|
||||
return nsAccessibilityService::gAccessibilityService;
|
||||
}
|
||||
|
||||
/**
|
||||
* Map nsIAccessibleRole constants to strings. Used by
|
||||
* nsIAccessibleRetrieval::getStringRole() method.
|
||||
*/
|
||||
static const char kRoleNames[][20] = {
|
||||
"nothing", //ROLE_NOTHING
|
||||
"titlebar", //ROLE_TITLEBAR
|
||||
"menubar", //ROLE_MENUBAR
|
||||
"scrollbar", //ROLE_SCROLLBAR
|
||||
"grip", //ROLE_GRIP
|
||||
"sound", //ROLE_SOUND
|
||||
"cursor", //ROLE_CURSOR
|
||||
"caret", //ROLE_CARET
|
||||
"alert", //ROLE_ALERT
|
||||
"window", //ROLE_WINDOW
|
||||
"internal frame", //ROLE_INTERNAL_FRAME
|
||||
"menupopup", //ROLE_MENUPOPUP
|
||||
"menuitem", //ROLE_MENUITEM
|
||||
"tooltip", //ROLE_TOOLTIP
|
||||
"application", //ROLE_APPLICATION
|
||||
"document", //ROLE_DOCUMENT
|
||||
"pane", //ROLE_PANE
|
||||
"chart", //ROLE_CHART
|
||||
"dialog", //ROLE_DIALOG
|
||||
"border", //ROLE_BORDER
|
||||
"grouping", //ROLE_GROUPING
|
||||
"separator", //ROLE_SEPARATOR
|
||||
"toolbar", //ROLE_TOOLBAR
|
||||
"statusbar", //ROLE_STATUSBAR
|
||||
"table", //ROLE_TABLE
|
||||
"columnheader", //ROLE_COLUMNHEADER
|
||||
"rowheader", //ROLE_ROWHEADER
|
||||
"column", //ROLE_COLUMN
|
||||
"row", //ROLE_ROW
|
||||
"cell", //ROLE_CELL
|
||||
"link", //ROLE_LINK
|
||||
"helpballoon", //ROLE_HELPBALLOON
|
||||
"character", //ROLE_CHARACTER
|
||||
"list", //ROLE_LIST
|
||||
"listitem", //ROLE_LISTITEM
|
||||
"outline", //ROLE_OUTLINE
|
||||
"outlineitem", //ROLE_OUTLINEITEM
|
||||
"pagetab", //ROLE_PAGETAB
|
||||
"propertypage", //ROLE_PROPERTYPAGE
|
||||
"indicator", //ROLE_INDICATOR
|
||||
"graphic", //ROLE_GRAPHIC
|
||||
"statictext", //ROLE_STATICTEXT
|
||||
"text leaf", //ROLE_TEXT_LEAF
|
||||
"pushbutton", //ROLE_PUSHBUTTON
|
||||
"checkbutton", //ROLE_CHECKBUTTON
|
||||
"radiobutton", //ROLE_RADIOBUTTON
|
||||
"combobox", //ROLE_COMBOBOX
|
||||
"droplist", //ROLE_DROPLIST
|
||||
"progressbar", //ROLE_PROGRESSBAR
|
||||
"dial", //ROLE_DIAL
|
||||
"hotkeyfield", //ROLE_HOTKEYFIELD
|
||||
"slider", //ROLE_SLIDER
|
||||
"spinbutton", //ROLE_SPINBUTTON
|
||||
"diagram", //ROLE_DIAGRAM
|
||||
"animation", //ROLE_ANIMATION
|
||||
"equation", //ROLE_EQUATION
|
||||
"buttondropdown", //ROLE_BUTTONDROPDOWN
|
||||
"buttonmenu", //ROLE_BUTTONMENU
|
||||
"buttondropdowngrid", //ROLE_BUTTONDROPDOWNGRID
|
||||
"whitespace", //ROLE_WHITESPACE
|
||||
"pagetablist", //ROLE_PAGETABLIST
|
||||
"clock", //ROLE_CLOCK
|
||||
"splitbutton", //ROLE_SPLITBUTTON
|
||||
"ipaddress", //ROLE_IPADDRESS
|
||||
"accel label", //ROLE_ACCEL_LABEL
|
||||
"arrow", //ROLE_ARROW
|
||||
"canvas", //ROLE_CANVAS
|
||||
"check menu item", //ROLE_CHECK_MENU_ITEM
|
||||
"color chooser", //ROLE_COLOR_CHOOSER
|
||||
"date editor", //ROLE_DATE_EDITOR
|
||||
"desktop icon", //ROLE_DESKTOP_ICON
|
||||
"desktop frame", //ROLE_DESKTOP_FRAME
|
||||
"directory pane", //ROLE_DIRECTORY_PANE
|
||||
"file chooser", //ROLE_FILE_CHOOSER
|
||||
"font chooser", //ROLE_FONT_CHOOSER
|
||||
"chrome window", //ROLE_CHROME_WINDOW
|
||||
"glass pane", //ROLE_GLASS_PANE
|
||||
"html container", //ROLE_HTML_CONTAINER
|
||||
"icon", //ROLE_ICON
|
||||
"label", //ROLE_LABEL
|
||||
"layered pane", //ROLE_LAYERED_PANE
|
||||
"option pane", //ROLE_OPTION_PANE
|
||||
"password text", //ROLE_PASSWORD_TEXT
|
||||
"popup menu", //ROLE_POPUP_MENU
|
||||
"radio menu item", //ROLE_RADIO_MENU_ITEM
|
||||
"root pane", //ROLE_ROOT_PANE
|
||||
"scroll pane", //ROLE_SCROLL_PANE
|
||||
"split pane", //ROLE_SPLIT_PANE
|
||||
"table column header", //ROLE_TABLE_COLUMN_HEADER
|
||||
"table row header", //ROLE_TABLE_ROW_HEADER
|
||||
"tear off menu item", //ROLE_TEAR_OFF_MENU_ITEM
|
||||
"terminal", //ROLE_TERMINAL
|
||||
"text container", //ROLE_TEXT_CONTAINER
|
||||
"toggle button", //ROLE_TOGGLE_BUTTON
|
||||
"tree table", //ROLE_TREE_TABLE
|
||||
"viewport", //ROLE_VIEWPORT
|
||||
"header", //ROLE_HEADER
|
||||
"footer", //ROLE_FOOTER
|
||||
"paragraph", //ROLE_PARAGRAPH
|
||||
"ruler", //ROLE_RULER
|
||||
"autocomplete", //ROLE_AUTOCOMPLETE
|
||||
"editbar", //ROLE_EDITBAR
|
||||
"entry", //ROLE_ENTRY
|
||||
"caption", //ROLE_CAPTION
|
||||
"document frame", //ROLE_DOCUMENT_FRAME
|
||||
"heading", //ROLE_HEADING
|
||||
"page", //ROLE_PAGE
|
||||
"section", //ROLE_SECTION
|
||||
"redundant object", //ROLE_REDUNDANT_OBJECT
|
||||
"form", //ROLE_FORM
|
||||
"ime", //ROLE_IME
|
||||
"app root", //ROLE_APP_ROOT
|
||||
"parent menuitem", //ROLE_PARENT_MENUITEM
|
||||
"calendar", //ROLE_CALENDAR
|
||||
"combobox list", //ROLE_COMBOBOX_LIST
|
||||
"combobox option", //ROLE_COMBOBOX_OPTION
|
||||
"image map", //ROLE_IMAGE_MAP
|
||||
"listbox option", //ROLE_OPTION
|
||||
"listbox rich option", //ROLE_RICH_OPTION
|
||||
"listbox", //ROLE_LISTBOX
|
||||
"flat equation", //ROLE_FLAT_EQUATION
|
||||
"gridcell", //ROLE_GRID_CELL
|
||||
"embedded object", //ROLE_EMBEDDED_OBJECT
|
||||
"note", //ROLE_NOTE
|
||||
"figure", //ROLE_FIGURE
|
||||
"check rich option" //ROLE_CHECK_RICH_OPTION
|
||||
};
|
||||
|
||||
/**
|
||||
* Map nsIAccessibleEvents constants to strings. Used by
|
||||
* nsIAccessibleRetrieval::getStringEventType() method.
|
||||
|
@ -1137,16 +1137,6 @@ nsDocAccessible::ARIAAttributeChanged(nsIContent* aContent, nsIAtom* aAttribute)
|
||||
return;
|
||||
}
|
||||
|
||||
// For aria drag and drop changes we fire a generic attribute change event;
|
||||
// at least until native API comes up with a more meaningful event.
|
||||
if (aAttribute == nsGkAtoms::aria_grabbed ||
|
||||
aAttribute == nsGkAtoms::aria_dropeffect ||
|
||||
aAttribute == nsGkAtoms::aria_hidden ||
|
||||
aAttribute == nsGkAtoms::aria_sort) {
|
||||
FireDelayedAccessibleEvent(nsIAccessibleEvent::EVENT_OBJECT_ATTRIBUTE_CHANGED,
|
||||
aContent);
|
||||
}
|
||||
|
||||
// We treat aria-expanded as a global ARIA state for historical reasons
|
||||
if (aAttribute == nsGkAtoms::aria_expanded) {
|
||||
nsRefPtr<AccEvent> event =
|
||||
@ -1155,6 +1145,13 @@ nsDocAccessible::ARIAAttributeChanged(nsIContent* aContent, nsIAtom* aAttribute)
|
||||
return;
|
||||
}
|
||||
|
||||
// For aria attributes like drag and drop changes we fire a generic attribute
|
||||
// change event; at least until native API comes up with a more meaningful event.
|
||||
PRUint8 attrFlags = nsAccUtils::GetAttributeCharacteristics(aAttribute);
|
||||
if (!(attrFlags & ATTR_BYPASSOBJ))
|
||||
FireDelayedAccessibleEvent(nsIAccessibleEvent::EVENT_OBJECT_ATTRIBUTE_CHANGED,
|
||||
aContent);
|
||||
|
||||
if (!aContent->HasAttr(kNameSpaceID_None, nsGkAtoms::role)) {
|
||||
// We don't care about these other ARIA attribute changes unless there is
|
||||
// an ARIA role set for the element
|
||||
|
@ -42,7 +42,6 @@
|
||||
|
||||
#include "Accessible-inl.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsApplicationAccessibleWrap.h"
|
||||
#include "nsAccUtils.h"
|
||||
#include "nsCoreUtils.h"
|
||||
#include "Relation.h"
|
||||
|
@ -84,43 +84,33 @@ ARIAGridAccessible::Shutdown()
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// nsIAccessibleTable
|
||||
|
||||
NS_IMETHODIMP
|
||||
ARIAGridAccessible::GetColumnCount(PRInt32* aColumnCount)
|
||||
PRUint32
|
||||
ARIAGridAccessible::ColCount()
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aColumnCount);
|
||||
*aColumnCount = 0;
|
||||
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
AccIterator rowIter(this, filters::GetRow);
|
||||
nsAccessible* row = rowIter.Next();
|
||||
if (!row)
|
||||
return NS_OK;
|
||||
return 0;
|
||||
|
||||
AccIterator cellIter(row, filters::GetCell);
|
||||
nsAccessible *cell = nsnull;
|
||||
nsAccessible* cell = nsnull;
|
||||
|
||||
PRUint32 colCount = 0;
|
||||
while ((cell = cellIter.Next()))
|
||||
(*aColumnCount)++;
|
||||
colCount++;
|
||||
|
||||
return NS_OK;
|
||||
return colCount;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
ARIAGridAccessible::GetRowCount(PRInt32* aRowCount)
|
||||
PRUint32
|
||||
ARIAGridAccessible::RowCount()
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aRowCount);
|
||||
*aRowCount = 0;
|
||||
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
PRUint32 rowCount = 0;
|
||||
AccIterator rowIter(this, filters::GetRow);
|
||||
while (rowIter.Next())
|
||||
(*aRowCount)++;
|
||||
rowCount++;
|
||||
|
||||
return NS_OK;
|
||||
return rowCount;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -663,38 +653,26 @@ ARIAGridAccessible::SelectColumn(PRInt32 aColumn)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
ARIAGridAccessible::UnselectRow(PRInt32 aRow)
|
||||
void
|
||||
ARIAGridAccessible::UnselectRow(PRUint32 aRowIdx)
|
||||
{
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
nsAccessible* row = GetRowAt(aRowIdx);
|
||||
|
||||
nsAccessible *row = GetRowAt(aRow);
|
||||
NS_ENSURE_ARG(row);
|
||||
|
||||
return SetARIASelected(row, false);
|
||||
if (row)
|
||||
SetARIASelected(row, false);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
ARIAGridAccessible::UnselectColumn(PRInt32 aColumn)
|
||||
void
|
||||
ARIAGridAccessible::UnselectCol(PRUint32 aColIdx)
|
||||
{
|
||||
NS_ENSURE_ARG(IsValidColumn(aColumn));
|
||||
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
AccIterator rowIter(this, filters::GetRow);
|
||||
|
||||
nsAccessible *row = nsnull;
|
||||
nsAccessible* row = nsnull;
|
||||
while ((row = rowIter.Next())) {
|
||||
nsAccessible *cell = GetCellInRowAt(row, aColumn);
|
||||
if (cell) {
|
||||
nsresult rv = SetARIASelected(cell, false);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
nsAccessible* cell = GetCellInRowAt(row, aColIdx);
|
||||
if (cell)
|
||||
SetARIASelected(cell, false);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -71,6 +71,12 @@ public:
|
||||
// nsAccessNode
|
||||
virtual void Shutdown();
|
||||
|
||||
// TableAccessible
|
||||
virtual PRUint32 ColCount();
|
||||
virtual PRUint32 RowCount();
|
||||
virtual void UnselectCol(PRUint32 aColIdx);
|
||||
virtual void UnselectRow(PRUint32 aRowIdx);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Return true if the given row index is valid.
|
||||
|
@ -40,7 +40,7 @@
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsApplicationAccessible.h"
|
||||
#include "ApplicationAccessible.h"
|
||||
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsAccUtils.h"
|
||||
@ -57,7 +57,7 @@
|
||||
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
nsApplicationAccessible::nsApplicationAccessible() :
|
||||
ApplicationAccessible::ApplicationAccessible() :
|
||||
nsAccessibleWrap(nsnull, nsnull)
|
||||
{
|
||||
mFlags |= eApplicationAccessible;
|
||||
@ -66,14 +66,14 @@ nsApplicationAccessible::nsApplicationAccessible() :
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// nsISupports
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED1(nsApplicationAccessible, nsAccessible,
|
||||
NS_IMPL_ISUPPORTS_INHERITED1(ApplicationAccessible, nsAccessible,
|
||||
nsIAccessibleApplication)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// nsIAccessible
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetParent(nsIAccessible **aAccessible)
|
||||
ApplicationAccessible::GetParent(nsIAccessible** aAccessible)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aAccessible);
|
||||
*aAccessible = nsnull;
|
||||
@ -81,7 +81,7 @@ nsApplicationAccessible::GetParent(nsIAccessible **aAccessible)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetNextSibling(nsIAccessible **aNextSibling)
|
||||
ApplicationAccessible::GetNextSibling(nsIAccessible** aNextSibling)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aNextSibling);
|
||||
*aNextSibling = nsnull;
|
||||
@ -89,7 +89,7 @@ nsApplicationAccessible::GetNextSibling(nsIAccessible **aNextSibling)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetPreviousSibling(nsIAccessible **aPreviousSibling)
|
||||
ApplicationAccessible::GetPreviousSibling(nsIAccessible** aPreviousSibling)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aPreviousSibling);
|
||||
*aPreviousSibling = nsnull;
|
||||
@ -97,7 +97,7 @@ nsApplicationAccessible::GetPreviousSibling(nsIAccessible **aPreviousSibling)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetName(nsAString& aName)
|
||||
ApplicationAccessible::GetName(nsAString& aName)
|
||||
{
|
||||
aName.Truncate();
|
||||
|
||||
@ -125,25 +125,25 @@ nsApplicationAccessible::GetName(nsAString& aName)
|
||||
}
|
||||
|
||||
void
|
||||
nsApplicationAccessible::Description(nsString &aDescription)
|
||||
ApplicationAccessible::Description(nsString& aDescription)
|
||||
{
|
||||
aDescription.Truncate();
|
||||
}
|
||||
|
||||
void
|
||||
nsApplicationAccessible::Value(nsString& aValue)
|
||||
ApplicationAccessible::Value(nsString& aValue)
|
||||
{
|
||||
aValue.Truncate();
|
||||
}
|
||||
|
||||
PRUint64
|
||||
nsApplicationAccessible::State()
|
||||
ApplicationAccessible::State()
|
||||
{
|
||||
return IsDefunct() ? states::DEFUNCT : 0;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetAttributes(nsIPersistentProperties **aAttributes)
|
||||
ApplicationAccessible::GetAttributes(nsIPersistentProperties** aAttributes)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aAttributes);
|
||||
*aAttributes = nsnull;
|
||||
@ -151,9 +151,9 @@ nsApplicationAccessible::GetAttributes(nsIPersistentProperties **aAttributes)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GroupPosition(PRInt32 *aGroupLevel,
|
||||
PRInt32 *aSimilarItemsInGroup,
|
||||
PRInt32 *aPositionInGroup)
|
||||
ApplicationAccessible::GroupPosition(PRInt32* aGroupLevel,
|
||||
PRInt32* aSimilarItemsInGroup,
|
||||
PRInt32* aPositionInGroup)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aGroupLevel);
|
||||
*aGroupLevel = 0;
|
||||
@ -165,14 +165,14 @@ nsApplicationAccessible::GroupPosition(PRInt32 *aGroupLevel,
|
||||
}
|
||||
|
||||
nsAccessible*
|
||||
nsApplicationAccessible::ChildAtPoint(PRInt32 aX, PRInt32 aY,
|
||||
EWhichChildAtPoint aWhichChild)
|
||||
ApplicationAccessible::ChildAtPoint(PRInt32 aX, PRInt32 aY,
|
||||
EWhichChildAtPoint aWhichChild)
|
||||
{
|
||||
return nsnull;
|
||||
}
|
||||
|
||||
nsAccessible*
|
||||
nsApplicationAccessible::FocusedChild()
|
||||
ApplicationAccessible::FocusedChild()
|
||||
{
|
||||
nsAccessible* focus = FocusMgr()->FocusedAccessible();
|
||||
if (focus && focus->Parent() == this)
|
||||
@ -182,14 +182,14 @@ nsApplicationAccessible::FocusedChild()
|
||||
}
|
||||
|
||||
Relation
|
||||
nsApplicationAccessible::RelationByType(PRUint32 aRelationType)
|
||||
ApplicationAccessible::RelationByType(PRUint32 aRelationType)
|
||||
{
|
||||
return Relation();
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetBounds(PRInt32 *aX, PRInt32 *aY,
|
||||
PRInt32 *aWidth, PRInt32 *aHeight)
|
||||
ApplicationAccessible::GetBounds(PRInt32* aX, PRInt32* aY,
|
||||
PRInt32* aWidth, PRInt32* aHeight)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aX);
|
||||
*aX = 0;
|
||||
@ -203,46 +203,46 @@ nsApplicationAccessible::GetBounds(PRInt32 *aX, PRInt32 *aY,
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::SetSelected(bool aIsSelected)
|
||||
ApplicationAccessible::SetSelected(bool aIsSelected)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::TakeSelection()
|
||||
ApplicationAccessible::TakeSelection()
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::TakeFocus()
|
||||
ApplicationAccessible::TakeFocus()
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
PRUint8
|
||||
nsApplicationAccessible::ActionCount()
|
||||
ApplicationAccessible::ActionCount()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetActionName(PRUint8 aIndex, nsAString &aName)
|
||||
ApplicationAccessible::GetActionName(PRUint8 aIndex, nsAString& aName)
|
||||
{
|
||||
aName.Truncate();
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetActionDescription(PRUint8 aIndex,
|
||||
nsAString &aDescription)
|
||||
ApplicationAccessible::GetActionDescription(PRUint8 aIndex,
|
||||
nsAString& aDescription)
|
||||
{
|
||||
aDescription.Truncate();
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::DoAction(PRUint8 aIndex)
|
||||
ApplicationAccessible::DoAction(PRUint8 aIndex)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
@ -251,7 +251,7 @@ nsApplicationAccessible::DoAction(PRUint8 aIndex)
|
||||
// nsIAccessibleApplication
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetAppName(nsAString& aName)
|
||||
ApplicationAccessible::GetAppName(nsAString& aName)
|
||||
{
|
||||
aName.Truncate();
|
||||
|
||||
@ -267,7 +267,7 @@ nsApplicationAccessible::GetAppName(nsAString& aName)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetAppVersion(nsAString& aVersion)
|
||||
ApplicationAccessible::GetAppVersion(nsAString& aVersion)
|
||||
{
|
||||
aVersion.Truncate();
|
||||
|
||||
@ -283,14 +283,14 @@ nsApplicationAccessible::GetAppVersion(nsAString& aVersion)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetPlatformName(nsAString& aName)
|
||||
ApplicationAccessible::GetPlatformName(nsAString& aName)
|
||||
{
|
||||
aName.AssignLiteral("Gecko");
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetPlatformVersion(nsAString& aVersion)
|
||||
ApplicationAccessible::GetPlatformVersion(nsAString& aVersion)
|
||||
{
|
||||
aVersion.Truncate();
|
||||
|
||||
@ -309,20 +309,20 @@ nsApplicationAccessible::GetPlatformVersion(nsAString& aVersion)
|
||||
// nsAccessNode public methods
|
||||
|
||||
bool
|
||||
nsApplicationAccessible::Init()
|
||||
ApplicationAccessible::Init()
|
||||
{
|
||||
mAppInfo = do_GetService("@mozilla.org/xre/app-info;1");
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
nsApplicationAccessible::Shutdown()
|
||||
ApplicationAccessible::Shutdown()
|
||||
{
|
||||
mAppInfo = nsnull;
|
||||
}
|
||||
|
||||
bool
|
||||
nsApplicationAccessible::IsPrimaryForNode() const
|
||||
ApplicationAccessible::IsPrimaryForNode() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -331,31 +331,31 @@ nsApplicationAccessible::IsPrimaryForNode() const
|
||||
// nsAccessible public methods
|
||||
|
||||
void
|
||||
nsApplicationAccessible::ApplyARIAState(PRUint64* aState)
|
||||
ApplicationAccessible::ApplyARIAState(PRUint64* aState)
|
||||
{
|
||||
}
|
||||
|
||||
role
|
||||
nsApplicationAccessible::NativeRole()
|
||||
ApplicationAccessible::NativeRole()
|
||||
{
|
||||
return roles::APP_ROOT;
|
||||
}
|
||||
|
||||
PRUint64
|
||||
nsApplicationAccessible::NativeState()
|
||||
ApplicationAccessible::NativeState()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
nsApplicationAccessible::InvalidateChildren()
|
||||
ApplicationAccessible::InvalidateChildren()
|
||||
{
|
||||
// Do nothing because application children are kept updated by AppendChild()
|
||||
// and RemoveChild() method calls.
|
||||
}
|
||||
|
||||
KeyBinding
|
||||
nsApplicationAccessible::AccessKey() const
|
||||
ApplicationAccessible::AccessKey() const
|
||||
{
|
||||
return KeyBinding();
|
||||
}
|
||||
@ -364,7 +364,7 @@ nsApplicationAccessible::AccessKey() const
|
||||
// nsAccessible protected methods
|
||||
|
||||
void
|
||||
nsApplicationAccessible::CacheChildren()
|
||||
ApplicationAccessible::CacheChildren()
|
||||
{
|
||||
// CacheChildren is called only once for application accessible when its
|
||||
// children are requested because empty InvalidateChldren() prevents its
|
||||
@ -404,8 +404,8 @@ nsApplicationAccessible::CacheChildren()
|
||||
}
|
||||
|
||||
nsAccessible*
|
||||
nsApplicationAccessible::GetSiblingAtOffset(PRInt32 aOffset,
|
||||
nsresult* aError) const
|
||||
ApplicationAccessible::GetSiblingAtOffset(PRInt32 aOffset,
|
||||
nsresult* aError) const
|
||||
{
|
||||
if (aError)
|
||||
*aError = NS_OK; // fail peacefully
|
||||
@ -417,7 +417,7 @@ nsApplicationAccessible::GetSiblingAtOffset(PRInt32 aOffset,
|
||||
// nsIAccessible
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetDOMNode(nsIDOMNode **aDOMNode)
|
||||
ApplicationAccessible::GetDOMNode(nsIDOMNode** aDOMNode)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDOMNode);
|
||||
*aDOMNode = nsnull;
|
||||
@ -425,7 +425,7 @@ nsApplicationAccessible::GetDOMNode(nsIDOMNode **aDOMNode)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetDocument(nsIAccessibleDocument **aDocument)
|
||||
ApplicationAccessible::GetDocument(nsIAccessibleDocument** aDocument)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDocument);
|
||||
*aDocument = nsnull;
|
||||
@ -433,7 +433,7 @@ nsApplicationAccessible::GetDocument(nsIAccessibleDocument **aDocument)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetRootDocument(nsIAccessibleDocument **aRootDocument)
|
||||
ApplicationAccessible::GetRootDocument(nsIAccessibleDocument** aRootDocument)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aRootDocument);
|
||||
*aRootDocument = nsnull;
|
||||
@ -441,20 +441,20 @@ nsApplicationAccessible::GetRootDocument(nsIAccessibleDocument **aRootDocument)
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::ScrollTo(PRUint32 aScrollType)
|
||||
ApplicationAccessible::ScrollTo(PRUint32 aScrollType)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::ScrollToPoint(PRUint32 aCoordinateType,
|
||||
PRInt32 aX, PRInt32 aY)
|
||||
ApplicationAccessible::ScrollToPoint(PRUint32 aCoordinateType,
|
||||
PRInt32 aX, PRInt32 aY)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessible::GetLanguage(nsAString &aLanguage)
|
||||
ApplicationAccessible::GetLanguage(nsAString& aLanguage)
|
||||
{
|
||||
aLanguage.Truncate();
|
||||
return NS_OK;
|
@ -40,8 +40,8 @@
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef __NS_APPLICATION_ACCESSIBLE_H__
|
||||
#define __NS_APPLICATION_ACCESSIBLE_H__
|
||||
#ifndef MOZILLA_A11Y_APPLICATION_ACCESSIBLE_H__
|
||||
#define MOZILLA_A11Y_APPLICATION_ACCESSIBLE_H__
|
||||
|
||||
#include "nsAccessibleWrap.h"
|
||||
#include "nsIAccessibleApplication.h"
|
||||
@ -50,21 +50,21 @@
|
||||
#include "nsIXULAppInfo.h"
|
||||
|
||||
/**
|
||||
* nsApplicationAccessible is for the whole application of Mozilla.
|
||||
* Only one instance of nsApplicationAccessible exists for one Mozilla instance.
|
||||
* ApplicationAccessible is for the whole application of Mozilla.
|
||||
* Only one instance of ApplicationAccessible exists for one Mozilla instance.
|
||||
* And this one should be created when Mozilla Startup (if accessibility
|
||||
* feature has been enabled) and destroyed when Mozilla Shutdown.
|
||||
*
|
||||
* All the accessibility objects for toplevel windows are direct children of
|
||||
* the nsApplicationAccessible instance.
|
||||
* the ApplicationAccessible instance.
|
||||
*/
|
||||
|
||||
class nsApplicationAccessible: public nsAccessibleWrap,
|
||||
public nsIAccessibleApplication
|
||||
class ApplicationAccessible: public nsAccessibleWrap,
|
||||
public nsIAccessibleApplication
|
||||
{
|
||||
public:
|
||||
|
||||
nsApplicationAccessible();
|
||||
ApplicationAccessible();
|
||||
|
||||
// nsISupports
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
@ -15,6 +15,7 @@ LIBXUL_LIBRARY = 1
|
||||
|
||||
|
||||
CPPSRCS = \
|
||||
ApplicationAccessible.cpp \
|
||||
ARIAGridAccessible.cpp \
|
||||
FormControlAccessible.cpp \
|
||||
OuterDocAccessible.cpp \
|
||||
|
@ -65,6 +65,7 @@ nsHTMLImageAccessible::
|
||||
nsHTMLImageAccessible(nsIContent* aContent, nsDocAccessible* aDoc) :
|
||||
nsLinkableAccessible(aContent, aDoc)
|
||||
{
|
||||
mFlags |= eImageAccessible;
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED1(nsHTMLImageAccessible, nsAccessible,
|
||||
|
@ -563,36 +563,24 @@ nsHTMLTableAccessible::Summary(nsString& aSummary)
|
||||
table->GetSummary(aSummary);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLTableAccessible::GetColumnCount(PRInt32 *acolumnCount)
|
||||
PRUint32
|
||||
nsHTMLTableAccessible::ColCount()
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(acolumnCount);
|
||||
*acolumnCount = nsnull;
|
||||
nsITableLayout* tableLayout = GetTableLayout();
|
||||
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsITableLayout *tableLayout = GetTableLayout();
|
||||
NS_ENSURE_STATE(tableLayout);
|
||||
|
||||
PRInt32 rows;
|
||||
return tableLayout->GetTableSize(rows, *acolumnCount);
|
||||
PRInt32 rowCount = 0, colCount = 0;
|
||||
tableLayout->GetTableSize(rowCount, colCount);
|
||||
return colCount;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLTableAccessible::GetRowCount(PRInt32 *arowCount)
|
||||
PRUint32
|
||||
nsHTMLTableAccessible::RowCount()
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(arowCount);
|
||||
*arowCount = 0;
|
||||
nsITableLayout* tableLayout = GetTableLayout();
|
||||
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsITableLayout *tableLayout = GetTableLayout();
|
||||
NS_ENSURE_STATE(tableLayout);
|
||||
|
||||
PRInt32 columns;
|
||||
return tableLayout->GetTableSize(*arowCount, columns);
|
||||
PRInt32 rowCount = 0, colCount = 0;
|
||||
tableLayout->GetTableSize(rowCount, colCount);
|
||||
return rowCount;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -1151,28 +1139,20 @@ nsHTMLTableAccessible::SelectColumn(PRInt32 aColumn)
|
||||
nsISelectionPrivate::TABLESELECTION_COLUMN);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLTableAccessible::UnselectRow(PRInt32 aRow)
|
||||
void
|
||||
nsHTMLTableAccessible::UnselectRow(PRUint32 aRowIdx)
|
||||
{
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
return
|
||||
RemoveRowsOrColumnsFromSelection(aRow,
|
||||
nsISelectionPrivate::TABLESELECTION_ROW,
|
||||
false);
|
||||
RemoveRowsOrColumnsFromSelection(aRowIdx,
|
||||
nsISelectionPrivate::TABLESELECTION_ROW,
|
||||
false);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLTableAccessible::UnselectColumn(PRInt32 aColumn)
|
||||
void
|
||||
nsHTMLTableAccessible::UnselectCol(PRUint32 aColIdx)
|
||||
{
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
return
|
||||
RemoveRowsOrColumnsFromSelection(aColumn,
|
||||
nsISelectionPrivate::TABLESELECTION_COLUMN,
|
||||
false);
|
||||
RemoveRowsOrColumnsFromSelection(aColIdx,
|
||||
nsISelectionPrivate::TABLESELECTION_COLUMN,
|
||||
false);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -130,6 +130,10 @@ public:
|
||||
// TableAccessible
|
||||
virtual nsAccessible* Caption();
|
||||
virtual void Summary(nsString& aSummary);
|
||||
virtual PRUint32 ColCount();
|
||||
virtual PRUint32 RowCount();
|
||||
virtual void UnselectCol(PRUint32 aColIdx);
|
||||
virtual void UnselectRow(PRUint32 aRowIdx);
|
||||
virtual bool IsProbablyLayoutTable();
|
||||
|
||||
// nsAccessNode
|
||||
|
@ -259,6 +259,9 @@ nsHTMLLIAccessible::Shutdown()
|
||||
role
|
||||
nsHTMLLIAccessible::NativeRole()
|
||||
{
|
||||
if (mContent->Tag() == nsGkAtoms::dt)
|
||||
return roles::TERM;
|
||||
|
||||
return roles::LISTITEM;
|
||||
}
|
||||
|
||||
@ -410,6 +413,9 @@ NS_IMPL_ISUPPORTS_INHERITED0(nsHTMLListAccessible, nsHyperTextAccessible)
|
||||
role
|
||||
nsHTMLListAccessible::NativeRole()
|
||||
{
|
||||
if (mContent->Tag() == nsGkAtoms::dl)
|
||||
return roles::DEFINITION_LIST;
|
||||
|
||||
return roles::LIST;
|
||||
}
|
||||
|
||||
|
@ -123,6 +123,9 @@ nsHyperTextAccessible::NativeRole()
|
||||
{
|
||||
nsIAtom *tag = mContent->Tag();
|
||||
|
||||
if (tag == nsGkAtoms::dd)
|
||||
return roles::DEFINITION;
|
||||
|
||||
if (tag == nsGkAtoms::form)
|
||||
return roles::FORM;
|
||||
|
||||
|
@ -23,11 +23,6 @@ var EXPORTED_SYMBOLS = ['VisualPresenter',
|
||||
function Presenter() {}
|
||||
|
||||
Presenter.prototype = {
|
||||
/**
|
||||
* The padding in pixels between the object and the highlight border.
|
||||
*/
|
||||
BORDER_PADDING: 2,
|
||||
|
||||
/**
|
||||
* Attach function for presenter.
|
||||
* @param {ChromeWindow} aWindow Chrome window the presenter could use.
|
||||
@ -96,6 +91,11 @@ function VisualPresenter() {}
|
||||
|
||||
VisualPresenter.prototype = new Presenter();
|
||||
|
||||
/**
|
||||
* The padding in pixels between the object and the highlight border.
|
||||
*/
|
||||
VisualPresenter.prototype.BORDER_PADDING = 2;
|
||||
|
||||
VisualPresenter.prototype.attach = function(aWindow) {
|
||||
this.chromeWin = aWindow;
|
||||
|
||||
@ -237,7 +237,7 @@ AndroidPresenter.prototype.actionInvoked = function(aObject, aActionName) {
|
||||
gecko: {
|
||||
type: 'Accessibility:Event',
|
||||
eventType: ANDROID_TYPE_VIEW_CLICKED,
|
||||
text: [UtteranceGenerator.genForAction(aObject, aActionName)]
|
||||
text: UtteranceGenerator.genForAction(aObject, aActionName)
|
||||
}
|
||||
});
|
||||
};
|
||||
@ -251,7 +251,7 @@ AndroidPresenter.prototype.tabSelected = function(aObject) {
|
||||
context.push(parent);
|
||||
context.reverse();
|
||||
|
||||
this.pivotChanged(vcDoc.virtualCursor.position, context);
|
||||
this.pivotChanged(vcDoc.virtualCursor.position || aObject, context);
|
||||
};
|
||||
|
||||
AndroidPresenter.prototype.sendMessageToJava = function(aMessage) {
|
||||
|
@ -54,7 +54,7 @@ var UtteranceGenerator = {
|
||||
},
|
||||
|
||||
genForAction: function(aObject, aActionName) {
|
||||
return gStringBundle.GetStringFromName(this.gActionMap[aActionName]);
|
||||
return [gStringBundle.GetStringFromName(this.gActionMap[aActionName])];
|
||||
},
|
||||
|
||||
verbosityRoleMap: {
|
||||
|
@ -38,12 +38,12 @@
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef __NS_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
#define __NS_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
#ifndef MOZILLA_A11Y_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
#define MOZILLA_A11Y_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
|
||||
#include "nsApplicationAccessible.h"
|
||||
#include "ApplicationAccessible.h"
|
||||
|
||||
class nsApplicationAccessibleWrap: public nsApplicationAccessible
|
||||
class ApplicationAccessibleWrap: public ApplicationAccessible
|
||||
{
|
||||
public:
|
||||
static void PreCreate() {}
|
@ -62,6 +62,7 @@ CMMSRCS = nsAccessNodeWrap.mm \
|
||||
|
||||
|
||||
EXPORTS = \
|
||||
ApplicationAccessibleWrap.h \
|
||||
ARIAGridAccessibleWrap.h \
|
||||
nsAccessNodeWrap.h \
|
||||
nsTextAccessibleWrap.h \
|
||||
@ -74,13 +75,11 @@ EXPORTS = \
|
||||
nsHyperTextAccessibleWrap.h \
|
||||
nsHTMLImageAccessibleWrap.h \
|
||||
nsHTMLTableAccessibleWrap.h \
|
||||
nsApplicationAccessibleWrap.h \
|
||||
mozDocAccessible.h \
|
||||
mozAccessible.h \
|
||||
mozAccessibleProtocol.h \
|
||||
mozActionElements.h \
|
||||
mozTextAccessible.h \
|
||||
nsRoleMap.h \
|
||||
$(NULL)
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
|
@ -109,6 +109,9 @@ GetObjectOrRepresentedView(id <mozAccessible> aObject)
|
||||
// the role might be "textfield", while the subrole is "password textfield".
|
||||
- (NSString*)subrole;
|
||||
|
||||
// Return the role description, as there are a few exceptions.
|
||||
- (NSString*)roleDescription;
|
||||
|
||||
// returns the native window we're inside.
|
||||
- (NSWindow*)window;
|
||||
|
||||
|
@ -40,7 +40,6 @@
|
||||
|
||||
#import "MacUtils.h"
|
||||
#import "mozView.h"
|
||||
#import "nsRoleMap.h"
|
||||
|
||||
#include "Accessible-inl.h"
|
||||
#include "nsIAccessibleRelation.h"
|
||||
@ -121,10 +120,6 @@ GetNativeFromGeckoAccessible(nsIAccessible *anAccessible)
|
||||
mGeckoAccessible = geckoAccessible;
|
||||
mIsExpired = NO;
|
||||
mRole = geckoAccessible->Role();
|
||||
|
||||
// Check for OS X "role skew"; the role constants in nsIAccessible.idl need to match the ones
|
||||
// in nsRoleMap.h.
|
||||
NS_ASSERTION([AXRoles[roles::LAST_ENTRY] isEqualToString:@"ROLE_LAST_ENTRY"], "Role skew in the role map!");
|
||||
}
|
||||
|
||||
return self;
|
||||
@ -225,13 +220,8 @@ GetNativeFromGeckoAccessible(nsIAccessible *anAccessible)
|
||||
return [NSNumber numberWithBool:[self isEnabled]];
|
||||
if ([attribute isEqualToString:NSAccessibilityValueAttribute])
|
||||
return [self value];
|
||||
if ([attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute]) {
|
||||
if (mRole == roles::DOCUMENT)
|
||||
return utils::LocalizedString(NS_LITERAL_STRING("htmlContent"));
|
||||
|
||||
return NSAccessibilityRoleDescription([self role], [self subrole]);
|
||||
}
|
||||
|
||||
if ([attribute isEqualToString:NSAccessibilityRoleDescriptionAttribute])
|
||||
return [self roleDescription];
|
||||
if ([attribute isEqualToString:NSAccessibilityDescriptionAttribute])
|
||||
return [self customDescription];
|
||||
if ([attribute isEqualToString:NSAccessibilityFocusedAttribute])
|
||||
@ -467,41 +457,35 @@ GetNativeFromGeckoAccessible(nsIAccessible *anAccessible)
|
||||
NS_ASSERTION(nsAccUtils::IsTextInterfaceSupportCorrect(mGeckoAccessible),
|
||||
"Does not support nsIAccessibleText when it should");
|
||||
#endif
|
||||
return (NSString*) AXRoles[mRole];
|
||||
|
||||
#define ROLE(geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role) \
|
||||
case roles::geckoRole: \
|
||||
return macRole;
|
||||
|
||||
switch (mRole) {
|
||||
#include "RoleMap.h"
|
||||
default:
|
||||
NS_NOTREACHED("Unknown role.");
|
||||
return NSAccessibilityUnknownRole;
|
||||
}
|
||||
|
||||
#undef ROLE
|
||||
}
|
||||
|
||||
- (NSString*)subrole
|
||||
{
|
||||
if (!mGeckoAccessible)
|
||||
return nil;
|
||||
|
||||
nsIContent* content = mGeckoAccessible->GetContent();
|
||||
if (!content || !content->IsHTML())
|
||||
return nil;
|
||||
|
||||
nsIAtom* tag = content->Tag();
|
||||
|
||||
switch (mRole) {
|
||||
case roles::LIST:
|
||||
if ((tag == nsGkAtoms::ul) || (tag == nsGkAtoms::ol))
|
||||
return NSAccessibilityContentListSubrole;
|
||||
return NSAccessibilityContentListSubrole;
|
||||
|
||||
if (tag == nsGkAtoms::dl)
|
||||
return NSAccessibilityDefinitionListSubrole;
|
||||
case roles::DEFINITION_LIST:
|
||||
return NSAccessibilityDefinitionListSubrole;
|
||||
|
||||
break;
|
||||
case roles::TERM:
|
||||
return @"AXTerm";
|
||||
|
||||
case roles::LISTITEM:
|
||||
if (tag == nsGkAtoms::dt)
|
||||
return @"AXTerm";
|
||||
|
||||
break;
|
||||
|
||||
case roles::PARAGRAPH:
|
||||
if (tag == nsGkAtoms::dd)
|
||||
return @"AXDefinition";
|
||||
|
||||
break;
|
||||
case roles::DEFINITION:
|
||||
return @"AXDefinition";
|
||||
|
||||
default:
|
||||
break;
|
||||
@ -510,6 +494,21 @@ GetNativeFromGeckoAccessible(nsIAccessible *anAccessible)
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSString*)roleDescription
|
||||
{
|
||||
if (mRole == roles::DOCUMENT)
|
||||
return utils::LocalizedString(NS_LITERAL_STRING("htmlContent"));
|
||||
|
||||
NSString* subrole = [self subrole];
|
||||
|
||||
if ((mRole == roles::LISTITEM) && [subrole isEqualToString:@"AXTerm"])
|
||||
return utils::LocalizedString(NS_LITERAL_STRING("term"));
|
||||
if ((mRole == roles::PARAGRAPH) && [subrole isEqualToString:@"AXDefinition"])
|
||||
return utils::LocalizedString(NS_LITERAL_STRING("definition"));
|
||||
|
||||
return NSAccessibilityRoleDescription([self role], subrole);
|
||||
}
|
||||
|
||||
- (NSString*)title
|
||||
{
|
||||
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
|
||||
|
@ -79,6 +79,8 @@ ToNSString(id aValue)
|
||||
NSAccessibilityNumberOfCharactersAttribute, // required
|
||||
NSAccessibilityVisibleCharacterRangeAttribute, // required
|
||||
NSAccessibilityInsertionPointLineNumberAttribute,
|
||||
@"AXRequired",
|
||||
@"AXInvalid",
|
||||
nil
|
||||
];
|
||||
[supportedAttributes addObjectsFromArray:[super accessibilityAttributeNames]];
|
||||
@ -115,6 +117,12 @@ ToNSString(id aValue)
|
||||
return [self text];
|
||||
}
|
||||
|
||||
if ([attribute isEqualToString:@"AXRequired"])
|
||||
return [NSNumber numberWithBool:!!(mGeckoAccessible->State() & states::REQUIRED)];
|
||||
|
||||
if ([attribute isEqualToString:@"AXInvalid"])
|
||||
return [NSNumber numberWithBool:!!(mGeckoAccessible->State() & states::INVALID)];
|
||||
|
||||
if ([attribute isEqualToString:NSAccessibilityVisibleCharacterRangeAttribute])
|
||||
return [self visibleCharacterRange];
|
||||
|
||||
|
@ -101,7 +101,7 @@ public: // construction, destruction
|
||||
*/
|
||||
void GetUnignoredChildren(nsTArray<nsAccessible*>* aChildrenArray);
|
||||
nsAccessible* GetUnignoredParent() const;
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
virtual nsresult FirePlatformEvent(AccEvent* aEvent);
|
||||
|
@ -39,8 +39,6 @@
|
||||
#include "nsDocAccessible.h"
|
||||
#include "nsObjCExceptions.h"
|
||||
|
||||
#import "nsRoleMap.h"
|
||||
|
||||
#include "Accessible-inl.h"
|
||||
#include "Role.h"
|
||||
|
||||
|
@ -1,172 +0,0 @@
|
||||
/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim:expandtab:shiftwidth=2:tabstop=2:
|
||||
*/
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Mozilla Foundation
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Håkan Waara <hwaara@gmail.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
#include "nsIAccessible.h"
|
||||
|
||||
static const NSString* AXRoles [] = {
|
||||
NSAccessibilityUnknownRole, // roles::NOTHING 0
|
||||
NSAccessibilityUnknownRole, // roles::TITLEBAR 1 Irrelevant on OS X; windows are always native.
|
||||
NSAccessibilityScrollBarRole, // roles::SCROLLBAR 3 We might need to make this its own mozAccessible, to support the children objects (valueindicator, down/up buttons).
|
||||
NSAccessibilityMenuBarRole, // roles::MENUBAR 2 Irrelevant on OS X; the menubar will always be native and on the top of the screen.
|
||||
NSAccessibilitySplitterRole, // roles::GRIP 4
|
||||
NSAccessibilityUnknownRole, // roles::SOUND 5 Unused on OS X.
|
||||
NSAccessibilityUnknownRole, // roles::CURSOR 6 Unused on OS X.
|
||||
NSAccessibilityUnknownRole, // roles::CARET 7 Unused on OS X.
|
||||
NSAccessibilityWindowRole, // roles::ALERT 8
|
||||
NSAccessibilityWindowRole, // roles::WINDOW 9 Irrelevant on OS X; all window a11y is handled by the system.
|
||||
NSAccessibilityScrollAreaRole, // roles::INTERNAL_FRAME 10
|
||||
NSAccessibilityMenuRole, // roles::MENUPOPUP 11 The parent of menuitems.
|
||||
NSAccessibilityMenuItemRole, // roles::MENUITEM 12
|
||||
@"AXHelpTag", // roles::TOOLTIP 13 10.4+ only, so we re-define the constant.
|
||||
NSAccessibilityGroupRole, // roles::APPLICATION 14 Unused on OS X. the system will take care of this.
|
||||
@"AXWebArea", // roles::DOCUMENT 15
|
||||
NSAccessibilityGroupRole, // roles::PANE 16
|
||||
NSAccessibilityUnknownRole, // roles::CHART 17
|
||||
NSAccessibilityWindowRole, // roles::DIALOG 18 There's a dialog subrole.
|
||||
NSAccessibilityUnknownRole, // roles::BORDER 19 Unused on OS X.
|
||||
NSAccessibilityGroupRole, // roles::GROUPING 20
|
||||
NSAccessibilityUnknownRole, // roles::SEPARATOR 21
|
||||
NSAccessibilityToolbarRole, // roles::TOOLBAR 22
|
||||
NSAccessibilityUnknownRole, // roles::STATUSBAR 23 Doesn't exist on OS X (a status bar is its parts; a progressbar, a label, etc.)
|
||||
NSAccessibilityGroupRole, // roles::TABLE 24
|
||||
NSAccessibilityGroupRole, // roles::COLUMNHEADER 25
|
||||
NSAccessibilityGroupRole, // roles::ROWHEADER 26
|
||||
NSAccessibilityColumnRole, // roles::COLUMN 27
|
||||
NSAccessibilityRowRole, // roles::ROW 28
|
||||
NSAccessibilityGroupRole, // roles::CELL 29
|
||||
@"AXLink", // roles::LINK 30 10.4+ the attr first define in SDK 10.4, so we define it here too. ROLE_LINK
|
||||
@"AXHelpTag", // roles::HELPBALLOON 31
|
||||
NSAccessibilityUnknownRole, // roles::CHARACTER 32 Unused on OS X.
|
||||
NSAccessibilityListRole, // roles::LIST 33
|
||||
NSAccessibilityGroupRole, // roles::LISTITEM 34
|
||||
NSAccessibilityOutlineRole, // roles::OUTLINE 35
|
||||
NSAccessibilityRowRole, // roles::OUTLINEITEM 36 XXX: use OutlineRow as subrole.
|
||||
NSAccessibilityRadioButtonRole, // roles::PAGETAB 37
|
||||
NSAccessibilityGroupRole, // roles::PROPERTYPAGE 38
|
||||
NSAccessibilityUnknownRole, // roles::INDICATOR 39
|
||||
NSAccessibilityImageRole, // roles::GRAPHIC 40
|
||||
NSAccessibilityStaticTextRole, // roles::STATICTEXT 41
|
||||
NSAccessibilityStaticTextRole, // roles::TEXT_LEAF 42
|
||||
NSAccessibilityButtonRole, // roles::PUSHBUTTON 43
|
||||
NSAccessibilityCheckBoxRole, // roles::CHECKBUTTON 44
|
||||
NSAccessibilityRadioButtonRole, // roles::RADIOBUTTON 45
|
||||
NSAccessibilityPopUpButtonRole, // roles::COMBOBOX 46
|
||||
NSAccessibilityPopUpButtonRole, // roles::DROPLIST 47
|
||||
NSAccessibilityProgressIndicatorRole, // roles::PROGRESSBAR 48
|
||||
NSAccessibilityUnknownRole, // roles::DIAL 49
|
||||
NSAccessibilityUnknownRole, // roles::HOTKEYFIELD 50
|
||||
NSAccessibilitySliderRole, // roles::SLIDER 51
|
||||
NSAccessibilityIncrementorRole, // roles::SPINBUTTON 52 Subroles: Increment/Decrement.
|
||||
NSAccessibilityUnknownRole, // roles::DIAGRAM 53
|
||||
NSAccessibilityUnknownRole, // roles::ANIMATION 54
|
||||
NSAccessibilityUnknownRole, // roles::EQUATION 55
|
||||
NSAccessibilityPopUpButtonRole, // roles::BUTTONDROPDOWN 56
|
||||
NSAccessibilityMenuButtonRole, // roles::BUTTONMENU 57
|
||||
NSAccessibilityGroupRole, // roles::BUTTONDROPDOWNGRID 58
|
||||
NSAccessibilityUnknownRole, // roles::WHITESPACE 59
|
||||
NSAccessibilityTabGroupRole, // roles::PAGETABLIST 60
|
||||
NSAccessibilityUnknownRole, // roles::CLOCK 61 Unused on OS X
|
||||
NSAccessibilityButtonRole, // roles::SPLITBUTTON 62
|
||||
NSAccessibilityUnknownRole, // roles::IPADDRESS 63
|
||||
NSAccessibilityStaticTextRole, // roles::ACCEL_LABEL 64
|
||||
NSAccessibilityUnknownRole, // roles::ARROW 65
|
||||
NSAccessibilityImageRole, // roles::CANVAS 66
|
||||
NSAccessibilityMenuItemRole, // roles::CHECK_MENU_ITEM 67
|
||||
NSAccessibilityColorWellRole, // roles::COLOR_CHOOSER 68
|
||||
NSAccessibilityUnknownRole, // roles::DATE_EDITOR 69
|
||||
NSAccessibilityImageRole, // roles::DESKTOP_ICON 70
|
||||
NSAccessibilityUnknownRole, // roles::DESKTOP_FRAME 71
|
||||
NSAccessibilityBrowserRole, // roles::DIRECTORY_PANE 72
|
||||
NSAccessibilityUnknownRole, // roles::FILE_CHOOSER 73 Unused on OS X
|
||||
NSAccessibilityUnknownRole, // roles::FONT_CHOOSER 74
|
||||
NSAccessibilityUnknownRole, // roles::CHROME_WINDOW 75 Unused on OS X
|
||||
NSAccessibilityGroupRole, // roles::GLASS_PANE 76
|
||||
NSAccessibilityUnknownRole, // roles::HTML_CONTAINER 77
|
||||
NSAccessibilityImageRole, // roles::ICON 78
|
||||
NSAccessibilityGroupRole, // roles::LABEL 79
|
||||
NSAccessibilityGroupRole, // roles::LAYERED_PANE 80
|
||||
NSAccessibilityGroupRole, // roles::OPTION_PANE 81
|
||||
NSAccessibilityTextFieldRole, // roles::PASSWORD_TEXT 82
|
||||
NSAccessibilityUnknownRole, // roles::POPUP_MENU 83 Unused
|
||||
NSAccessibilityMenuItemRole, // roles::RADIO_MENU_ITEM 84
|
||||
NSAccessibilityGroupRole, // roles::ROOT_PANE 85
|
||||
NSAccessibilityScrollAreaRole, // roles::SCROLL_PANE 86
|
||||
NSAccessibilitySplitGroupRole, // roles::SPLIT_PANE 87
|
||||
NSAccessibilityUnknownRole, // roles::TABLE_COLUMN_HEADER 88
|
||||
NSAccessibilityUnknownRole, // roles::TABLE_ROW_HEADER 89
|
||||
NSAccessibilityMenuItemRole, // roles::TEAR_OFF_MENU_ITEM 90
|
||||
NSAccessibilityUnknownRole, // roles::TERMINAL 91
|
||||
NSAccessibilityGroupRole, // roles::TEXT_CONTAINER 92
|
||||
NSAccessibilityButtonRole, // roles::TOGGLE_BUTTON 93
|
||||
NSAccessibilityTableRole, // roles::TREE_TABLE 94
|
||||
NSAccessibilityUnknownRole, // roles::VIEWPORT 95
|
||||
NSAccessibilityGroupRole, // roles::HEADER 96
|
||||
NSAccessibilityGroupRole, // roles::FOOTER 97
|
||||
NSAccessibilityGroupRole, // roles::PARAGRAPH 98
|
||||
@"AXRuler", // roles::RULER 99 10.4+ only, so we re-define the constant.
|
||||
NSAccessibilityUnknownRole, // roles::AUTOCOMPLETE 100
|
||||
NSAccessibilityTextFieldRole, // roles::EDITBAR 101
|
||||
NSAccessibilityTextFieldRole, // roles::ENTRY 102
|
||||
NSAccessibilityStaticTextRole, // roles::CAPTION 103
|
||||
NSAccessibilityScrollAreaRole, // roles::DOCUMENT_FRAME 104
|
||||
@"AXHeading", // roles::HEADING 105
|
||||
NSAccessibilityGroupRole, // roles::PAGE 106
|
||||
NSAccessibilityGroupRole, // roles::SECTION 107
|
||||
NSAccessibilityUnknownRole, // roles::REDUNDANT_OBJECT 108
|
||||
NSAccessibilityGroupRole, // roles::FORM 109
|
||||
NSAccessibilityUnknownRole, // roles::IME 110
|
||||
NSAccessibilityUnknownRole, // roles::APP_ROOT 111 Unused on OS X
|
||||
NSAccessibilityMenuItemRole, // roles::PARENT_MENUITEM 112
|
||||
NSAccessibilityGroupRole, // roles::CALENDAR 113
|
||||
NSAccessibilityMenuRole, // roles::COMBOBOX_LIST 114
|
||||
NSAccessibilityMenuItemRole, // roles::COMBOBOX_OPTION 115
|
||||
NSAccessibilityImageRole, // roles::IMAGE_MAP 116
|
||||
NSAccessibilityRowRole, // roles::OPTION 117
|
||||
NSAccessibilityRowRole, // roles::RICH_OPTION 118
|
||||
NSAccessibilityListRole, // roles::LISTBOX 119
|
||||
NSAccessibilityUnknownRole, // roles::FLAT_EQUATION 120
|
||||
NSAccessibilityGroupRole, // roles::GRID_CELL 121
|
||||
NSAccessibilityGroupRole, // roles::EMBEDDED_OBJECT 122
|
||||
NSAccessibilityGroupRole, // roles::NOTE 123
|
||||
NSAccessibilityGroupRole, // roles::FIGURE 124
|
||||
NSAccessibilityCheckBoxRole, // roles::CHECK_RICH_OPTION 125
|
||||
@"ROLE_LAST_ENTRY" // roles::LAST_ENTRY Bogus role that will never be shown (just marks the end of this array)!
|
||||
};
|
@ -38,7 +38,7 @@
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "nsApplicationAccessibleWrap.h"
|
||||
#include "ApplicationAccessibleWrap.h"
|
||||
|
||||
#include "AccessibleApplication_i.c"
|
||||
|
||||
@ -48,11 +48,11 @@
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// nsISupports
|
||||
NS_IMPL_ISUPPORTS_INHERITED0(nsApplicationAccessibleWrap,
|
||||
nsApplicationAccessible)
|
||||
NS_IMPL_ISUPPORTS_INHERITED0(ApplicationAccessibleWrap,
|
||||
ApplicationAccessible)
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsApplicationAccessibleWrap::GetAttributes(nsIPersistentProperties** aAttributes)
|
||||
ApplicationAccessibleWrap::GetAttributes(nsIPersistentProperties** aAttributes)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aAttributes);
|
||||
*aAttributes = nsnull;
|
||||
@ -80,7 +80,7 @@ nsApplicationAccessibleWrap::GetAttributes(nsIPersistentProperties** aAttributes
|
||||
// IUnknown
|
||||
|
||||
STDMETHODIMP
|
||||
nsApplicationAccessibleWrap::QueryInterface(REFIID iid, void** ppv)
|
||||
ApplicationAccessibleWrap::QueryInterface(REFIID iid, void** ppv)
|
||||
{
|
||||
*ppv = NULL;
|
||||
|
||||
@ -97,7 +97,7 @@ nsApplicationAccessibleWrap::QueryInterface(REFIID iid, void** ppv)
|
||||
// IAccessibleApplication
|
||||
|
||||
STDMETHODIMP
|
||||
nsApplicationAccessibleWrap::get_appName(BSTR *aName)
|
||||
ApplicationAccessibleWrap::get_appName(BSTR* aName)
|
||||
{
|
||||
__try {
|
||||
*aName = NULL;
|
||||
@ -121,7 +121,7 @@ __try {
|
||||
}
|
||||
|
||||
STDMETHODIMP
|
||||
nsApplicationAccessibleWrap::get_appVersion(BSTR *aVersion)
|
||||
ApplicationAccessibleWrap::get_appVersion(BSTR* aVersion)
|
||||
{
|
||||
__try {
|
||||
*aVersion = NULL;
|
||||
@ -145,7 +145,7 @@ __try {
|
||||
}
|
||||
|
||||
STDMETHODIMP
|
||||
nsApplicationAccessibleWrap::get_toolkitName(BSTR *aName)
|
||||
ApplicationAccessibleWrap::get_toolkitName(BSTR* aName)
|
||||
{
|
||||
__try {
|
||||
if (IsDefunct())
|
||||
@ -167,7 +167,7 @@ __try {
|
||||
}
|
||||
|
||||
STDMETHODIMP
|
||||
nsApplicationAccessibleWrap::get_toolkitVersion(BSTR *aVersion)
|
||||
ApplicationAccessibleWrap::get_toolkitVersion(BSTR* aVersion)
|
||||
{
|
||||
__try {
|
||||
*aVersion = NULL;
|
||||
@ -191,15 +191,15 @@ __try {
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// nsApplicationAccessibleWrap public static
|
||||
// ApplicationAccessibleWrap public static
|
||||
|
||||
void
|
||||
nsApplicationAccessibleWrap::PreCreate()
|
||||
ApplicationAccessibleWrap::PreCreate()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
nsApplicationAccessibleWrap::Unload()
|
||||
ApplicationAccessibleWrap::Unload()
|
||||
{
|
||||
}
|
||||
|
@ -38,15 +38,15 @@
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef __NS_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
#define __NS_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
#ifndef MOZILLA_A11Y_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
#define MOZILLA_A11Y_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
|
||||
#include "nsApplicationAccessible.h"
|
||||
#include "ApplicationAccessible.h"
|
||||
|
||||
#include "AccessibleApplication.h"
|
||||
|
||||
class nsApplicationAccessibleWrap: public nsApplicationAccessible,
|
||||
public IAccessibleApplication
|
||||
class ApplicationAccessibleWrap: public ApplicationAccessible,
|
||||
public IAccessibleApplication
|
||||
{
|
||||
public:
|
||||
// nsISupporst
|
@ -80,7 +80,7 @@ IsModuleVersionLessThan(HMODULE aModuleHandle, DWORD aMajor, DWORD aMinor)
|
||||
// Compatibility
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
PRUint32 Compatibility::sMode = Compatibility::NoCompatibilityMode;
|
||||
PRUint32 Compatibility::sConsumers = Compatibility::UNKNOWN;
|
||||
|
||||
void
|
||||
Compatibility::Init()
|
||||
@ -88,47 +88,53 @@ Compatibility::Init()
|
||||
// Note we collect some AT statistics/telemetry here for convenience.
|
||||
|
||||
HMODULE jawsHandle = ::GetModuleHandleW(L"jhook");
|
||||
if (jawsHandle) {
|
||||
sMode |= JAWSMode;
|
||||
// IA2 off mode for JAWS versions below 8.0.2173.
|
||||
if (IsModuleVersionLessThan(jawsHandle, 8, 2173)) {
|
||||
sMode |= IA2OffMode;
|
||||
statistics::A11yConsumers(OLDJAWS);
|
||||
} else {
|
||||
statistics::A11yConsumers(JAWS);
|
||||
}
|
||||
}
|
||||
if (jawsHandle)
|
||||
sConsumers |= (IsModuleVersionLessThan(jawsHandle, 8, 2173)) ?
|
||||
OLDJAWS : JAWS;
|
||||
|
||||
if (::GetModuleHandleW(L"gwm32inc")) {
|
||||
sMode |= WEMode;
|
||||
statistics::A11yConsumers(WE);
|
||||
}
|
||||
if (::GetModuleHandleW(L"dolwinhk")) {
|
||||
sMode |= DolphinMode;
|
||||
statistics::A11yConsumers(DOLPHIN);
|
||||
}
|
||||
if (::GetModuleHandleW(L"gwm32inc"))
|
||||
sConsumers |= WE;
|
||||
|
||||
if (::GetModuleHandleW(L"dolwinhk"))
|
||||
sConsumers |= DOLPHIN;
|
||||
|
||||
if (::GetModuleHandleW(L"STSA32"))
|
||||
statistics::A11yConsumers(SEROTEK);
|
||||
sConsumers |= SEROTEK;
|
||||
|
||||
if (::GetModuleHandleW(L"nvdaHelperRemote"))
|
||||
statistics::A11yConsumers(NVDA);
|
||||
sConsumers |= NVDA;
|
||||
|
||||
if (::GetModuleHandleW(L"OsmHooks"))
|
||||
statistics::A11yConsumers(COBRA);
|
||||
sConsumers |= COBRA;
|
||||
|
||||
if (::GetModuleHandleW(L"WebFinderRemote"))
|
||||
statistics::A11yConsumers(ZOOMTEXT);
|
||||
sConsumers |= ZOOMTEXT;
|
||||
|
||||
if (::GetModuleHandleW(L"Kazahook"))
|
||||
statistics::A11yConsumers(KAZAGURU);
|
||||
sConsumers |= KAZAGURU;
|
||||
|
||||
if (::GetModuleHandleW(L"TextExtractorImpl32") ||
|
||||
::GetModuleHandleW(L"TextExtractorImpl64"))
|
||||
statistics::A11yConsumers(YOUDAO);
|
||||
sConsumers |= YOUDAO;
|
||||
|
||||
if (::GetModuleHandleW(L"uiautomation"))
|
||||
sConsumers |= UIAUTOMATION;
|
||||
|
||||
// If we have a known consumer remove the unknown bit.
|
||||
if (sConsumers != Compatibility::UNKNOWN)
|
||||
sConsumers ^= Compatibility::UNKNOWN;
|
||||
|
||||
// Gather telemetry
|
||||
PRUint32 temp = sConsumers;
|
||||
for (int i = 0; temp; i++) {
|
||||
if (temp & 0x1)
|
||||
statistics::A11yConsumers(i);
|
||||
|
||||
temp >>= 1;
|
||||
}
|
||||
|
||||
// Turn off new tab switching for Jaws and WE.
|
||||
if (sMode & JAWSMode || sMode & WEMode) {
|
||||
if (sConsumers & (JAWS | OLDJAWS | WE)) {
|
||||
// Check to see if the pref for disallowing CtrlTab is already set. If so,
|
||||
// bail out (respect the user settings). If not, set it.
|
||||
if (!Preferences::HasUserValue("browser.ctrlTab.disallowForScreenReaders"))
|
||||
|
@ -57,22 +57,22 @@ public:
|
||||
/**
|
||||
* Return true if IAccessible2 disabled.
|
||||
*/
|
||||
static bool IsIA2Off() { return sMode & IA2OffMode; }
|
||||
static bool IsIA2Off() { return !!(sConsumers & OLDJAWS); }
|
||||
|
||||
/**
|
||||
* Return true if JAWS mode is enabled.
|
||||
*/
|
||||
static bool IsJAWS() { return sMode & JAWSMode; }
|
||||
static bool IsJAWS() { return !!(sConsumers & (JAWS | OLDJAWS)); }
|
||||
|
||||
/**
|
||||
* Return true if WE mode is enabled.
|
||||
*/
|
||||
static bool IsWE() { return sMode & WEMode; }
|
||||
static bool IsWE() { return !!(sConsumers & WE); }
|
||||
|
||||
/**
|
||||
* Return true if Dolphin mode is enabled.
|
||||
*/
|
||||
static bool IsDolphin() { return sMode & DolphinMode; }
|
||||
static bool IsDolphin() { return !!(sConsumers & DOLPHIN); }
|
||||
|
||||
private:
|
||||
Compatibility();
|
||||
@ -87,34 +87,25 @@ private:
|
||||
friend class nsAccessNodeWrap;
|
||||
|
||||
/**
|
||||
* List of compatibility modes.
|
||||
* List of detected consumers of a11y (used for statistics/telemetry and compat)
|
||||
*/
|
||||
enum {
|
||||
NoCompatibilityMode = 0,
|
||||
JAWSMode = 1 << 0,
|
||||
WEMode = 1 << 1,
|
||||
DolphinMode = 1 << 2,
|
||||
IA2OffMode = 1 << 3
|
||||
};
|
||||
|
||||
/**
|
||||
* List of detected consumers of a11y (used for statistics/telemetry)
|
||||
*/
|
||||
enum {
|
||||
NVDA = 0,
|
||||
JAWS = 1,
|
||||
OLDJAWS = 2,
|
||||
WE = 3,
|
||||
DOLPHIN = 4,
|
||||
SEROTEK = 5,
|
||||
COBRA = 6,
|
||||
ZOOMTEXT = 7,
|
||||
KAZAGURU = 8,
|
||||
YOUDAO = 9
|
||||
NVDA = 1 << 0,
|
||||
JAWS = 1 << 1,
|
||||
OLDJAWS = 1 << 2,
|
||||
WE = 1 << 3,
|
||||
DOLPHIN = 1 << 4,
|
||||
SEROTEK = 1 << 5,
|
||||
COBRA = 1 << 6,
|
||||
ZOOMTEXT = 1 << 7,
|
||||
KAZAGURU = 1 << 8,
|
||||
YOUDAO = 1 << 9,
|
||||
UNKNOWN = 1 << 10,
|
||||
UIAUTOMATION = 1 << 11
|
||||
};
|
||||
|
||||
private:
|
||||
static PRUint32 sMode;
|
||||
static PRUint32 sConsumers;
|
||||
};
|
||||
|
||||
} // a11y namespace
|
||||
|
@ -48,12 +48,13 @@ LIBXUL_LIBRARY = 1
|
||||
|
||||
|
||||
CPPSRCS = \
|
||||
ApplicationAccessibleWrap.cpp \
|
||||
ARIAGridAccessibleWrap.cpp \
|
||||
nsAccessNodeWrap.cpp \
|
||||
nsAccessibleWrap.cpp \
|
||||
nsTextAccessibleWrap.cpp \
|
||||
nsDocAccessibleWrap.cpp \
|
||||
nsHTMLWin32ObjectAccessible.cpp \
|
||||
ARIAGridAccessibleWrap.cpp \
|
||||
nsRootAccessibleWrap.cpp \
|
||||
nsXULMenuAccessibleWrap.cpp \
|
||||
nsXULListboxAccessibleWrap.cpp \
|
||||
@ -61,7 +62,6 @@ CPPSRCS = \
|
||||
nsHyperTextAccessibleWrap.cpp \
|
||||
nsHTMLImageAccessibleWrap.cpp \
|
||||
nsHTMLTableAccessibleWrap.cpp \
|
||||
nsApplicationAccessibleWrap.cpp \
|
||||
nsWinUtils.cpp \
|
||||
ia2AccessibleAction.cpp \
|
||||
ia2AccessibleComponent.cpp \
|
||||
@ -78,6 +78,7 @@ CPPSRCS = \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS = \
|
||||
ApplicationAccessibleWrap.h \
|
||||
ARIAGridAccessibleWrap.h \
|
||||
nsAccessNodeWrap.h \
|
||||
nsAccessibleWrap.h \
|
||||
@ -91,7 +92,6 @@ EXPORTS = \
|
||||
nsHyperTextAccessibleWrap.h \
|
||||
nsHTMLImageAccessibleWrap.h \
|
||||
nsHTMLTableAccessibleWrap.h \
|
||||
nsApplicationAccessibleWrap.h \
|
||||
ia2AccessibleAction.h \
|
||||
ia2AccessibleComponent.h \
|
||||
CAccessibleImage.h \
|
||||
|
@ -39,11 +39,11 @@
|
||||
#include "nsAccessNodeWrap.h"
|
||||
|
||||
#include "AccessibleApplication.h"
|
||||
#include "ApplicationAccessibleWrap.h"
|
||||
#include "ISimpleDOMNode_i.c"
|
||||
|
||||
#include "Compatibility.h"
|
||||
#include "nsAccessibilityService.h"
|
||||
#include "nsApplicationAccessibleWrap.h"
|
||||
#include "nsCoreUtils.h"
|
||||
#include "nsRootAccessible.h"
|
||||
#include "nsWinUtils.h"
|
||||
@ -174,7 +174,7 @@ nsAccessNodeWrap::QueryService(REFGUID guidService, REFIID iid, void** ppv)
|
||||
|
||||
// Can get to IAccessibleApplication from any node via QS
|
||||
if (iid == IID_IAccessibleApplication) {
|
||||
nsApplicationAccessible *applicationAcc = GetApplicationAccessible();
|
||||
ApplicationAccessible* applicationAcc = GetApplicationAccessible();
|
||||
if (!applicationAcc)
|
||||
return E_NOINTERFACE;
|
||||
|
||||
|
@ -52,6 +52,7 @@
|
||||
#include "nsIAccessibleRelation.h"
|
||||
|
||||
#include "Accessible2_i.c"
|
||||
#include "AccessibleRole.h"
|
||||
#include "AccessibleStates.h"
|
||||
|
||||
#include "nsIMutableArray.h"
|
||||
@ -65,12 +66,29 @@
|
||||
#include "nsTextFormatter.h"
|
||||
#include "nsIView.h"
|
||||
#include "nsIViewManager.h"
|
||||
#include "nsRoleMap.h"
|
||||
#include "nsEventMap.h"
|
||||
#include "nsArrayUtils.h"
|
||||
|
||||
#include "OLEACC.H"
|
||||
|
||||
using namespace mozilla;
|
||||
using namespace mozilla::a11y;
|
||||
|
||||
const PRUint32 USE_ROLE_STRING = 0;
|
||||
|
||||
#ifndef ROLE_SYSTEM_SPLITBUTTON
|
||||
const PRUint32 ROLE_SYSTEM_SPLITBUTTON = 0x3e; // Not defined in all oleacc.h versions
|
||||
#endif
|
||||
|
||||
#ifndef ROLE_SYSTEM_IPADDRESS
|
||||
const PRUint32 ROLE_SYSTEM_IPADDRESS = 0x3f; // Not defined in all oleacc.h versions
|
||||
#endif
|
||||
|
||||
#ifndef ROLE_SYSTEM_OUTLINEBUTTON
|
||||
const PRUint32 ROLE_SYSTEM_OUTLINEBUTTON = 0x40; // Not defined in all oleacc.h versions
|
||||
#endif
|
||||
|
||||
|
||||
/* For documentation of the accessibility architecture,
|
||||
* see http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html
|
||||
*/
|
||||
@ -374,15 +392,26 @@ __try {
|
||||
"Does not support nsIAccessibleText when it should");
|
||||
#endif
|
||||
|
||||
roles::Role role = xpAccessible->Role();
|
||||
PRUint32 msaaRole = gWindowsRoleMap[role].msaaRole;
|
||||
NS_ASSERTION(gWindowsRoleMap[roles::LAST_ENTRY].msaaRole == ROLE_WINDOWS_LAST_ENTRY,
|
||||
"MSAA role map skewed");
|
||||
a11y::role geckoRole = xpAccessible->Role();
|
||||
PRUint32 msaaRole = 0;
|
||||
|
||||
#define ROLE(_geckoRole, stringRole, atkRole, macRole, _msaaRole, ia2Role) \
|
||||
case roles::_geckoRole: \
|
||||
msaaRole = _msaaRole; \
|
||||
break;
|
||||
|
||||
switch (geckoRole) {
|
||||
#include "RoleMap.h"
|
||||
default:
|
||||
MOZ_NOT_REACHED("Unknown role.");
|
||||
};
|
||||
|
||||
#undef ROLE
|
||||
|
||||
// Special case, if there is a ROLE_ROW inside of a ROLE_TREE_TABLE, then call the MSAA role
|
||||
// a ROLE_OUTLINEITEM for consistency and compatibility.
|
||||
// We need this because ARIA has a role of "row" for both grid and treegrid
|
||||
if (role == roles::ROW) {
|
||||
if (geckoRole == roles::ROW) {
|
||||
nsAccessible* xpParent = Parent();
|
||||
if (xpParent && xpParent->Role() == roles::TREE_TABLE)
|
||||
msaaRole = ROLE_SYSTEM_OUTLINEITEM;
|
||||
@ -1202,15 +1231,23 @@ __try {
|
||||
if (IsDefunct())
|
||||
return CO_E_OBJNOTCONNECTED;
|
||||
|
||||
NS_ASSERTION(gWindowsRoleMap[roles::LAST_ENTRY].ia2Role == ROLE_WINDOWS_LAST_ENTRY,
|
||||
"MSAA role map skewed");
|
||||
#define ROLE(_geckoRole, stringRole, atkRole, macRole, msaaRole, ia2Role) \
|
||||
case roles::_geckoRole: \
|
||||
*aRole = ia2Role; \
|
||||
break;
|
||||
|
||||
roles::Role role = Role();
|
||||
*aRole = gWindowsRoleMap[role].ia2Role;
|
||||
a11y::role geckoRole = Role();
|
||||
switch (geckoRole) {
|
||||
#include "RoleMap.h"
|
||||
default:
|
||||
MOZ_NOT_REACHED("Unknown role.");
|
||||
};
|
||||
|
||||
#undef ROLE
|
||||
|
||||
// Special case, if there is a ROLE_ROW inside of a ROLE_TREE_TABLE, then call
|
||||
// the IA2 role a ROLE_OUTLINEITEM.
|
||||
if (role == roles::ROW) {
|
||||
if (geckoRole == roles::ROW) {
|
||||
nsAccessible* xpParent = Parent();
|
||||
if (xpParent && xpParent->Role() == roles::TREE_TABLE)
|
||||
*aRole = ROLE_SYSTEM_OUTLINEITEM;
|
||||
|
@ -1,458 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim:expandtab:shiftwidth=2:tabstop=2:
|
||||
*/
|
||||
/* ***** BEGIN LICENSE BLOCK *****
|
||||
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public License Version
|
||||
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
* http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||
* for the specific language governing rights and limitations under the
|
||||
* License.
|
||||
*
|
||||
* The Original Code is mozilla.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is IBM Corporation
|
||||
* Portions created by the Initial Developer are Copyright (C) 2006
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Gao, Ming <gaoming@cn.ibm.com>
|
||||
* Aaron Leventhal <aleventh@us.ibm.com>
|
||||
* Alexander Surkov <surkov.alexander@gmail.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||
* of those above. If you wish to allow use of your version of this file only
|
||||
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||
* use your version of this file under the terms of the MPL, indicate your
|
||||
* decision by deleting the provisions above and replace them with the notice
|
||||
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||
* the provisions above, a recipient may use your version of this file under
|
||||
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#include "OLEACC.H"
|
||||
#include "AccessibleRole.h"
|
||||
|
||||
const PRUint32 USE_ROLE_STRING = 0;
|
||||
const PRUint32 ROLE_WINDOWS_LAST_ENTRY = 0xffffffff;
|
||||
|
||||
#ifndef ROLE_SYSTEM_SPLITBUTTON
|
||||
const PRUint32 ROLE_SYSTEM_SPLITBUTTON = 0x3e; // Not defined in all oleacc.h versions
|
||||
#endif
|
||||
|
||||
#ifndef ROLE_SYSTEM_IPADDRESS
|
||||
const PRUint32 ROLE_SYSTEM_IPADDRESS = 0x3f; // Not defined in all oleacc.h versions
|
||||
#endif
|
||||
|
||||
#ifndef ROLE_SYSTEM_OUTLINEBUTTON
|
||||
const PRUint32 ROLE_SYSTEM_OUTLINEBUTTON = 0x40; // Not defined in all oleacc.h versions
|
||||
#endif
|
||||
|
||||
struct WindowsRoleMapItem
|
||||
{
|
||||
PRUint32 msaaRole;
|
||||
long ia2Role;
|
||||
};
|
||||
|
||||
// Map array from cross platform roles to MSAA/IA2 roles
|
||||
static const WindowsRoleMapItem gWindowsRoleMap[] = {
|
||||
// roles::NOTHING
|
||||
{ USE_ROLE_STRING, IA2_ROLE_UNKNOWN },
|
||||
|
||||
// roles::TITLEBAR
|
||||
{ ROLE_SYSTEM_TITLEBAR, ROLE_SYSTEM_TITLEBAR },
|
||||
|
||||
// roles::MENUBAR
|
||||
{ ROLE_SYSTEM_MENUBAR, ROLE_SYSTEM_MENUBAR },
|
||||
|
||||
// roles::SCROLLBAR
|
||||
{ ROLE_SYSTEM_SCROLLBAR, ROLE_SYSTEM_SCROLLBAR },
|
||||
|
||||
// roles::GRIP
|
||||
{ ROLE_SYSTEM_GRIP, ROLE_SYSTEM_GRIP },
|
||||
|
||||
// roles::SOUND
|
||||
{ ROLE_SYSTEM_SOUND, ROLE_SYSTEM_SOUND },
|
||||
|
||||
// roles::CURSOR
|
||||
{ ROLE_SYSTEM_CURSOR, ROLE_SYSTEM_CURSOR },
|
||||
|
||||
// roles::CARET
|
||||
{ ROLE_SYSTEM_CARET, ROLE_SYSTEM_CARET },
|
||||
|
||||
// roles::ALERT
|
||||
{ ROLE_SYSTEM_ALERT, ROLE_SYSTEM_ALERT },
|
||||
|
||||
// roles::WINDOW
|
||||
{ ROLE_SYSTEM_WINDOW, ROLE_SYSTEM_WINDOW },
|
||||
|
||||
// roles::INTERNAL_FRAME
|
||||
{ USE_ROLE_STRING, IA2_ROLE_INTERNAL_FRAME},
|
||||
|
||||
// roles::MENUPOPUP
|
||||
{ ROLE_SYSTEM_MENUPOPUP, ROLE_SYSTEM_MENUPOPUP },
|
||||
|
||||
// roles::MENUITEM
|
||||
{ ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_MENUITEM },
|
||||
|
||||
// roles::TOOLTIP
|
||||
{ ROLE_SYSTEM_TOOLTIP, ROLE_SYSTEM_TOOLTIP },
|
||||
|
||||
// roles::APPLICATION
|
||||
{ ROLE_SYSTEM_APPLICATION, ROLE_SYSTEM_APPLICATION },
|
||||
|
||||
// roles::DOCUMENT
|
||||
{ ROLE_SYSTEM_DOCUMENT, ROLE_SYSTEM_DOCUMENT },
|
||||
|
||||
// roles::PANE
|
||||
// We used to map to ROLE_SYSTEM_PANE, but JAWS would
|
||||
// not read the accessible name for the contaning pane.
|
||||
// However, JAWS will read the accessible name for a groupbox.
|
||||
// By mapping a PANE to a GROUPING, we get no undesirable effects,
|
||||
// but fortunately JAWS will then read the group's label,
|
||||
// when an inner control gets focused.
|
||||
{ ROLE_SYSTEM_GROUPING , ROLE_SYSTEM_GROUPING },
|
||||
|
||||
// roles::CHART
|
||||
{ ROLE_SYSTEM_CHART, ROLE_SYSTEM_CHART },
|
||||
|
||||
// roles::DIALOG
|
||||
{ ROLE_SYSTEM_DIALOG, ROLE_SYSTEM_DIALOG },
|
||||
|
||||
// roles::BORDER
|
||||
{ ROLE_SYSTEM_BORDER, ROLE_SYSTEM_BORDER },
|
||||
|
||||
// roles::GROUPING
|
||||
{ ROLE_SYSTEM_GROUPING, ROLE_SYSTEM_GROUPING },
|
||||
|
||||
// roles::SEPARATOR
|
||||
{ ROLE_SYSTEM_SEPARATOR, ROLE_SYSTEM_SEPARATOR },
|
||||
|
||||
// roles::TOOLBAR
|
||||
{ ROLE_SYSTEM_TOOLBAR, ROLE_SYSTEM_TOOLBAR },
|
||||
|
||||
// roles::STATUSBAR
|
||||
{ ROLE_SYSTEM_STATUSBAR, ROLE_SYSTEM_STATUSBAR },
|
||||
|
||||
// roles::TABLE
|
||||
{ ROLE_SYSTEM_TABLE, ROLE_SYSTEM_TABLE },
|
||||
|
||||
// roles::COLUMNHEADER,
|
||||
{ ROLE_SYSTEM_COLUMNHEADER, ROLE_SYSTEM_COLUMNHEADER },
|
||||
|
||||
// roles::ROWHEADER
|
||||
{ ROLE_SYSTEM_ROWHEADER, ROLE_SYSTEM_ROWHEADER },
|
||||
|
||||
// roles::COLUMN
|
||||
{ ROLE_SYSTEM_COLUMN, ROLE_SYSTEM_COLUMN },
|
||||
|
||||
// roles::ROW
|
||||
{ ROLE_SYSTEM_ROW, ROLE_SYSTEM_ROW },
|
||||
|
||||
// roles::CELL
|
||||
{ ROLE_SYSTEM_CELL, ROLE_SYSTEM_CELL },
|
||||
|
||||
// roles::LINK
|
||||
{ ROLE_SYSTEM_LINK, ROLE_SYSTEM_LINK },
|
||||
|
||||
// roles::HELPBALLOON
|
||||
{ ROLE_SYSTEM_HELPBALLOON, ROLE_SYSTEM_HELPBALLOON },
|
||||
|
||||
// roles::CHARACTER
|
||||
{ ROLE_SYSTEM_CHARACTER, ROLE_SYSTEM_CHARACTER },
|
||||
|
||||
// roles::LIST
|
||||
{ ROLE_SYSTEM_LIST, ROLE_SYSTEM_LIST },
|
||||
|
||||
// roles::LISTITEM
|
||||
{ ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_LISTITEM },
|
||||
|
||||
// roles::OUTLINE
|
||||
{ ROLE_SYSTEM_OUTLINE, ROLE_SYSTEM_OUTLINE },
|
||||
|
||||
// roles::OUTLINEITEM
|
||||
{ ROLE_SYSTEM_OUTLINEITEM, ROLE_SYSTEM_OUTLINEITEM },
|
||||
|
||||
// roles::PAGETAB
|
||||
{ ROLE_SYSTEM_PAGETAB, ROLE_SYSTEM_PAGETAB },
|
||||
|
||||
// roles::PROPERTYPAGE
|
||||
{ ROLE_SYSTEM_PROPERTYPAGE, ROLE_SYSTEM_PROPERTYPAGE },
|
||||
|
||||
// roles::INDICATOR
|
||||
{ ROLE_SYSTEM_INDICATOR, ROLE_SYSTEM_INDICATOR },
|
||||
|
||||
// roles::GRAPHIC
|
||||
{ ROLE_SYSTEM_GRAPHIC, ROLE_SYSTEM_GRAPHIC },
|
||||
|
||||
// roles::STATICTEXT
|
||||
{ ROLE_SYSTEM_STATICTEXT, ROLE_SYSTEM_STATICTEXT },
|
||||
|
||||
// roles::TEXT_LEAF
|
||||
{ ROLE_SYSTEM_TEXT, ROLE_SYSTEM_TEXT },
|
||||
|
||||
// roles::PUSHBUTTON
|
||||
{ ROLE_SYSTEM_PUSHBUTTON, ROLE_SYSTEM_PUSHBUTTON },
|
||||
|
||||
// roles::CHECKBUTTON
|
||||
{ ROLE_SYSTEM_CHECKBUTTON, ROLE_SYSTEM_CHECKBUTTON },
|
||||
|
||||
// roles::RADIOBUTTON
|
||||
{ ROLE_SYSTEM_RADIOBUTTON, ROLE_SYSTEM_RADIOBUTTON },
|
||||
|
||||
// roles::COMBOBOX
|
||||
{ ROLE_SYSTEM_COMBOBOX, ROLE_SYSTEM_COMBOBOX },
|
||||
|
||||
// roles::DROPLIST
|
||||
{ ROLE_SYSTEM_DROPLIST, ROLE_SYSTEM_DROPLIST },
|
||||
|
||||
// roles::PROGRESSBAR
|
||||
{ ROLE_SYSTEM_PROGRESSBAR, ROLE_SYSTEM_PROGRESSBAR },
|
||||
|
||||
// roles::DIAL
|
||||
{ ROLE_SYSTEM_DIAL, ROLE_SYSTEM_DIAL },
|
||||
|
||||
// roles::HOTKEYFIELD
|
||||
{ ROLE_SYSTEM_HOTKEYFIELD, ROLE_SYSTEM_HOTKEYFIELD },
|
||||
|
||||
// roles::SLIDER
|
||||
{ ROLE_SYSTEM_SLIDER, ROLE_SYSTEM_SLIDER },
|
||||
|
||||
// roles::SPINBUTTON
|
||||
{ ROLE_SYSTEM_SPINBUTTON, ROLE_SYSTEM_SPINBUTTON },
|
||||
|
||||
// roles::DIAGRAM
|
||||
{ ROLE_SYSTEM_DIAGRAM, ROLE_SYSTEM_DIAGRAM },
|
||||
|
||||
// roles::ANIMATION
|
||||
{ ROLE_SYSTEM_ANIMATION, ROLE_SYSTEM_ANIMATION },
|
||||
|
||||
// roles::EQUATION
|
||||
{ ROLE_SYSTEM_EQUATION, ROLE_SYSTEM_EQUATION },
|
||||
|
||||
// roles::BUTTONDROPDOWN
|
||||
{ ROLE_SYSTEM_BUTTONDROPDOWN, ROLE_SYSTEM_BUTTONDROPDOWN },
|
||||
|
||||
// roles::BUTTONMENU
|
||||
{ ROLE_SYSTEM_BUTTONMENU, ROLE_SYSTEM_BUTTONMENU },
|
||||
|
||||
// roles::BUTTONDROPDOWNGRID
|
||||
{ ROLE_SYSTEM_BUTTONDROPDOWNGRID, ROLE_SYSTEM_BUTTONDROPDOWNGRID },
|
||||
|
||||
// roles::WHITESPACE
|
||||
{ ROLE_SYSTEM_WHITESPACE, ROLE_SYSTEM_WHITESPACE },
|
||||
|
||||
// roles::PAGETABLIST
|
||||
{ ROLE_SYSTEM_PAGETABLIST, ROLE_SYSTEM_PAGETABLIST },
|
||||
|
||||
// roles::CLOCK
|
||||
{ ROLE_SYSTEM_CLOCK, ROLE_SYSTEM_CLOCK },
|
||||
|
||||
// roles::SPLITBUTTON
|
||||
{ ROLE_SYSTEM_SPLITBUTTON, ROLE_SYSTEM_SPLITBUTTON },
|
||||
|
||||
// roles::IPADDRESS
|
||||
{ ROLE_SYSTEM_IPADDRESS, ROLE_SYSTEM_IPADDRESS },
|
||||
|
||||
// Make up for Gecko roles that we don't have in MSAA or IA2. When in doubt
|
||||
// map them to USE_ROLE_STRING (IA2_ROLE_UNKNOWN).
|
||||
|
||||
// roles::ACCEL_LABEL
|
||||
{ ROLE_SYSTEM_STATICTEXT, ROLE_SYSTEM_STATICTEXT },
|
||||
|
||||
// roles::ARROW
|
||||
{ ROLE_SYSTEM_INDICATOR, ROLE_SYSTEM_INDICATOR },
|
||||
|
||||
// roles::CANVAS
|
||||
{ USE_ROLE_STRING, IA2_ROLE_CANVAS },
|
||||
|
||||
// roles::CHECK_MENU_ITEM
|
||||
{ ROLE_SYSTEM_MENUITEM, IA2_ROLE_CHECK_MENU_ITEM },
|
||||
|
||||
// roles::COLOR_CHOOSER
|
||||
{ ROLE_SYSTEM_DIALOG, IA2_ROLE_COLOR_CHOOSER },
|
||||
|
||||
// roles::DATE_EDITOR
|
||||
{ USE_ROLE_STRING, IA2_ROLE_DATE_EDITOR },
|
||||
|
||||
// roles::DESKTOP_ICON
|
||||
{ USE_ROLE_STRING, IA2_ROLE_DESKTOP_ICON },
|
||||
|
||||
// roles::DESKTOP_FRAME
|
||||
{ USE_ROLE_STRING, IA2_ROLE_DESKTOP_PANE },
|
||||
|
||||
// roles::DIRECTORY_PANE
|
||||
{ USE_ROLE_STRING, IA2_ROLE_DIRECTORY_PANE },
|
||||
|
||||
// roles::FILE_CHOOSER
|
||||
{ USE_ROLE_STRING, IA2_ROLE_FILE_CHOOSER },
|
||||
|
||||
// roles::FONT_CHOOSER
|
||||
{ USE_ROLE_STRING, IA2_ROLE_FONT_CHOOSER },
|
||||
|
||||
// roles::CHROME_WINDOW
|
||||
{ ROLE_SYSTEM_APPLICATION, IA2_ROLE_FRAME },
|
||||
|
||||
// roles::GLASS_PANE
|
||||
{ USE_ROLE_STRING, IA2_ROLE_GLASS_PANE },
|
||||
|
||||
// roles::HTML_CONTAINER
|
||||
{ USE_ROLE_STRING, IA2_ROLE_UNKNOWN },
|
||||
|
||||
// roles::ICON
|
||||
{ ROLE_SYSTEM_PUSHBUTTON, IA2_ROLE_ICON },
|
||||
|
||||
// roles::LABEL
|
||||
{ ROLE_SYSTEM_STATICTEXT, IA2_ROLE_LABEL },
|
||||
|
||||
// roles::LAYERED_PANE
|
||||
{ USE_ROLE_STRING, IA2_ROLE_LAYERED_PANE },
|
||||
|
||||
// roles::OPTION_PANE
|
||||
{ USE_ROLE_STRING, IA2_ROLE_OPTION_PANE },
|
||||
|
||||
// roles::PASSWORD_TEXT
|
||||
{ ROLE_SYSTEM_TEXT, ROLE_SYSTEM_TEXT },
|
||||
|
||||
// roles::POPUP_MENU
|
||||
{ ROLE_SYSTEM_MENUPOPUP, ROLE_SYSTEM_MENUPOPUP },
|
||||
|
||||
// roles::RADIO_MENU_ITEM
|
||||
{ ROLE_SYSTEM_MENUITEM, IA2_ROLE_RADIO_MENU_ITEM },
|
||||
|
||||
// roles::ROOT_PANE
|
||||
{ USE_ROLE_STRING, IA2_ROLE_ROOT_PANE },
|
||||
|
||||
// roles::SCROLL_PANE
|
||||
{ USE_ROLE_STRING, IA2_ROLE_SCROLL_PANE },
|
||||
|
||||
// roles::SPLIT_PANE
|
||||
{ USE_ROLE_STRING, IA2_ROLE_SPLIT_PANE },
|
||||
|
||||
// roles::TABLE_COLUMN_HEADER
|
||||
{ ROLE_SYSTEM_COLUMNHEADER, ROLE_SYSTEM_COLUMNHEADER },
|
||||
|
||||
// roles::TABLE_ROW_HEADER
|
||||
{ ROLE_SYSTEM_ROWHEADER, ROLE_SYSTEM_ROWHEADER },
|
||||
|
||||
// roles::TEAR_OFF_MENU_ITEM
|
||||
{ ROLE_SYSTEM_MENUITEM, IA2_ROLE_TEAR_OFF_MENU },
|
||||
|
||||
// roles::TERMINAL
|
||||
{ USE_ROLE_STRING, IA2_ROLE_TERMINAL },
|
||||
|
||||
// roles::TEXT_CONTAINER
|
||||
{ USE_ROLE_STRING, IA2_ROLE_TEXT_FRAME },
|
||||
|
||||
// roles::TOGGLE_BUTTON
|
||||
{ ROLE_SYSTEM_PUSHBUTTON, IA2_ROLE_TOGGLE_BUTTON },
|
||||
|
||||
// roles::TREE_TABLE
|
||||
{ ROLE_SYSTEM_OUTLINE, ROLE_SYSTEM_OUTLINE },
|
||||
|
||||
// roles::VIEWPORT
|
||||
{ ROLE_SYSTEM_PANE, IA2_ROLE_VIEW_PORT },
|
||||
|
||||
// roles::HEADER
|
||||
{ USE_ROLE_STRING, IA2_ROLE_HEADER },
|
||||
|
||||
// roles::FOOTER
|
||||
{ USE_ROLE_STRING, IA2_ROLE_FOOTER },
|
||||
|
||||
// roles::PARAGRAPH
|
||||
{ USE_ROLE_STRING, IA2_ROLE_PARAGRAPH },
|
||||
|
||||
// roles::RULER
|
||||
{ USE_ROLE_STRING, IA2_ROLE_RULER },
|
||||
|
||||
// roles::AUTOCOMPLETE
|
||||
{ ROLE_SYSTEM_COMBOBOX, ROLE_SYSTEM_COMBOBOX },
|
||||
|
||||
// roles::EDITBAR
|
||||
{ ROLE_SYSTEM_TEXT, IA2_ROLE_EDITBAR },
|
||||
|
||||
// roles::ENTRY
|
||||
{ ROLE_SYSTEM_TEXT, ROLE_SYSTEM_TEXT },
|
||||
|
||||
// roles::CAPTION
|
||||
{ USE_ROLE_STRING, IA2_ROLE_CAPTION },
|
||||
|
||||
// roles::DOCUMENT_FRAME
|
||||
{ USE_ROLE_STRING, IA2_ROLE_UNKNOWN },
|
||||
|
||||
// roles::HEADING
|
||||
{ USE_ROLE_STRING, IA2_ROLE_HEADING },
|
||||
|
||||
// roles::PAGE
|
||||
{ USE_ROLE_STRING, IA2_ROLE_PAGE },
|
||||
|
||||
// roles::SECTION
|
||||
{ USE_ROLE_STRING, IA2_ROLE_SECTION },
|
||||
|
||||
// roles::REDUNDANT_OBJECT
|
||||
{ USE_ROLE_STRING, IA2_ROLE_REDUNDANT_OBJECT },
|
||||
|
||||
// roles::FORM
|
||||
{ USE_ROLE_STRING, IA2_ROLE_FORM },
|
||||
|
||||
// roles::IME
|
||||
{ USE_ROLE_STRING, IA2_ROLE_INPUT_METHOD_WINDOW },
|
||||
|
||||
// roles::APP_ROOT
|
||||
{ ROLE_SYSTEM_APPLICATION, ROLE_SYSTEM_APPLICATION },
|
||||
|
||||
// roles::PARENT_MENUITEM
|
||||
{ ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_MENUITEM },
|
||||
|
||||
// roles::CALENDAR
|
||||
{ ROLE_SYSTEM_CLIENT, ROLE_SYSTEM_CLIENT },
|
||||
|
||||
// roles::COMBOBOX_LIST
|
||||
{ ROLE_SYSTEM_LIST, ROLE_SYSTEM_LIST },
|
||||
|
||||
// roles::COMBOBOX_OPTION
|
||||
{ ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_LISTITEM },
|
||||
|
||||
// roles::IMAGE_MAP
|
||||
{ ROLE_SYSTEM_GRAPHIC, ROLE_SYSTEM_GRAPHIC },
|
||||
|
||||
// roles::OPTION
|
||||
{ ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_LISTITEM },
|
||||
|
||||
// roles::RICH_OPTION
|
||||
{ ROLE_SYSTEM_LISTITEM, ROLE_SYSTEM_LISTITEM },
|
||||
|
||||
// roles::LISTBOX
|
||||
{ ROLE_SYSTEM_LIST, ROLE_SYSTEM_LIST },
|
||||
|
||||
// roles::FLAT_EQUATION
|
||||
{ ROLE_SYSTEM_EQUATION, ROLE_SYSTEM_EQUATION },
|
||||
|
||||
// roles::GRID_CELL
|
||||
{ ROLE_SYSTEM_CELL, ROLE_SYSTEM_CELL },
|
||||
|
||||
// roles::EMBEDDED_OBJECT
|
||||
{ USE_ROLE_STRING, IA2_ROLE_EMBEDDED_OBJECT },
|
||||
|
||||
// roles::NOTE
|
||||
{ USE_ROLE_STRING, IA2_ROLE_NOTE },
|
||||
|
||||
// roles::FIGURE
|
||||
{ ROLE_SYSTEM_GROUPING, ROLE_SYSTEM_GROUPING },
|
||||
|
||||
// roles::CHECK_RICH_OPTION
|
||||
{ ROLE_SYSTEM_CHECKBUTTON, ROLE_SYSTEM_CHECKBUTTON },
|
||||
|
||||
// roles::LAST_ENTRY
|
||||
{ ROLE_WINDOWS_LAST_ENTRY, ROLE_WINDOWS_LAST_ENTRY }
|
||||
};
|
||||
|
@ -20,7 +20,7 @@
|
||||
* the Initial Developer. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Alexander Surkov <surkov.alexander@gmail.com> (origianl author)
|
||||
* Alexander Surkov <surkov.alexander@gmail.com> (original author)
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
||||
|
@ -38,12 +38,12 @@
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#ifndef __NS_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
#define __NS_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
#ifndef MOZILLA_A11Y_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
#define MOZILLA_A11Y_APPLICATION_ACCESSIBLE_WRAP_H__
|
||||
|
||||
#include "nsApplicationAccessible.h"
|
||||
#include "ApplicationAccessible.h"
|
||||
|
||||
class nsApplicationAccessibleWrap: public nsApplicationAccessible
|
||||
class ApplicationAccessibleWrap: public ApplicationAccessible
|
||||
{
|
||||
public:
|
||||
static void PreCreate() {}
|
@ -54,6 +54,7 @@ CPPSRCS = \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS = \
|
||||
ApplicationAccessibleWrap.h \
|
||||
ARIAGridAccessibleWrap.h \
|
||||
nsAccessNodeWrap.h \
|
||||
nsTextAccessibleWrap.h \
|
||||
@ -66,7 +67,6 @@ EXPORTS = \
|
||||
nsHyperTextAccessibleWrap.h \
|
||||
nsHTMLImageAccessibleWrap.h \
|
||||
nsHTMLTableAccessibleWrap.h \
|
||||
nsApplicationAccessibleWrap.h \
|
||||
$(NULL)
|
||||
|
||||
# we don't want the shared lib, but we want to force the creation of a static lib.
|
||||
|
@ -21,6 +21,32 @@ xpcAccessibleTable::GetCaption(nsIAccessible** aCaption)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
xpcAccessibleTable::GetColumnCount(PRInt32* aColumnCount)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aColumnCount);
|
||||
*aColumnCount = 0;
|
||||
|
||||
if (!mTable)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
*aColumnCount = mTable->ColCount();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
xpcAccessibleTable::GetRowCount(PRInt32* aRowCount)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aRowCount);
|
||||
*aRowCount = 0;
|
||||
|
||||
if (!mTable)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
*aRowCount = mTable->RowCount();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
xpcAccessibleTable::GetSummary(nsAString& aSummary)
|
||||
{
|
||||
@ -45,3 +71,31 @@ xpcAccessibleTable::IsProbablyForLayout(bool* aResult)
|
||||
*aResult = mTable->IsProbablyLayoutTable();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
xpcAccessibleTable::UnselectColumn(PRInt32 aColIdx)
|
||||
{
|
||||
if (!mTable)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
if (aColIdx < 0 || aColIdx >= mTable->ColCount())
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
|
||||
mTable->UnselectCol(aColIdx);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
xpcAccessibleTable::UnselectRow(PRInt32 aRowIdx)
|
||||
{
|
||||
if (!mTable)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
if (aRowIdx < 0 || aRowIdx >= mTable->RowCount())
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
|
||||
mTable->UnselectRow(aRowIdx);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
@ -24,6 +24,10 @@ public:
|
||||
|
||||
nsresult GetCaption(nsIAccessible** aCaption);
|
||||
nsresult GetSummary(nsAString& aSummary);
|
||||
nsresult GetColumnCount(PRInt32* aColumnCount);
|
||||
nsresult GetRowCount(PRInt32* aRowCount);
|
||||
nsresult UnselectColumn(PRInt32 aColIdx);
|
||||
nsresult UnselectRow(PRInt32 aRowIdx);
|
||||
nsresult IsProbablyForLayout(bool* aIsForLayout);
|
||||
|
||||
protected:
|
||||
@ -35,8 +39,10 @@ protected:
|
||||
{ return xpcAccessibleTable::GetCaption(aCaption); } \
|
||||
NS_SCRIPTABLE NS_IMETHOD GetSummary(nsAString & aSummary) \
|
||||
{ return xpcAccessibleTable::GetSummary(aSummary); } \
|
||||
NS_SCRIPTABLE NS_IMETHOD GetColumnCount(PRInt32 *aColumnCount); \
|
||||
NS_SCRIPTABLE NS_IMETHOD GetRowCount(PRInt32 *aRowCount); \
|
||||
NS_SCRIPTABLE NS_IMETHOD GetColumnCount(PRInt32* aColumnCount) \
|
||||
{ return xpcAccessibleTable::GetColumnCount(aColumnCount); } \
|
||||
NS_SCRIPTABLE NS_IMETHOD GetRowCount(PRInt32* aRowCount) \
|
||||
{ return xpcAccessibleTable::GetRowCount(aRowCount); } \
|
||||
NS_SCRIPTABLE NS_IMETHOD GetCellAt(PRInt32 rowIndex, PRInt32 columnIndex, nsIAccessible * *_retval NS_OUTPARAM); \
|
||||
NS_SCRIPTABLE NS_IMETHOD GetCellIndexAt(PRInt32 rowIndex, PRInt32 columnIndex, PRInt32 *_retval NS_OUTPARAM); \
|
||||
NS_SCRIPTABLE NS_IMETHOD GetColumnIndexAt(PRInt32 cellIndex, PRInt32 *_retval NS_OUTPARAM); \
|
||||
@ -58,8 +64,10 @@ protected:
|
||||
NS_SCRIPTABLE NS_IMETHOD GetSelectedRowIndices(PRUint32 *rowsArraySize NS_OUTPARAM, PRInt32 **rowsArray NS_OUTPARAM); \
|
||||
NS_SCRIPTABLE NS_IMETHOD SelectRow(PRInt32 rowIndex); \
|
||||
NS_SCRIPTABLE NS_IMETHOD SelectColumn(PRInt32 columnIndex); \
|
||||
NS_SCRIPTABLE NS_IMETHOD UnselectColumn(PRInt32 columnIndex); \
|
||||
NS_IMETHOD UnselectRow(PRInt32 aRowIdx); \
|
||||
NS_SCRIPTABLE NS_IMETHOD UnselectColumn(PRInt32 aColIdx) \
|
||||
{ return xpcAccessibleTable::UnselectColumn(aColIdx); } \
|
||||
NS_IMETHOD UnselectRow(PRInt32 aRowIdx) \
|
||||
{ return xpcAccessibleTable::UnselectRow(aRowIdx); } \
|
||||
NS_IMETHOD IsProbablyForLayout(bool* aResult) \
|
||||
{ return xpcAccessibleTable::IsProbablyForLayout(aResult); } \
|
||||
|
||||
|
@ -241,15 +241,9 @@ nsXULListboxAccessible::NativeRole()
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// nsXULListboxAccessible. nsIAccessibleTable
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXULListboxAccessible::GetColumnCount(PRInt32 *aColumnsCout)
|
||||
PRUint32
|
||||
nsXULListboxAccessible::ColCount()
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aColumnsCout);
|
||||
*aColumnsCout = 0;
|
||||
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsIContent* headContent = nsnull;
|
||||
for (nsIContent* childContent = mContent->GetFirstChild(); childContent;
|
||||
childContent = childContent->GetNextSibling()) {
|
||||
@ -259,7 +253,7 @@ nsXULListboxAccessible::GetColumnCount(PRInt32 *aColumnsCout)
|
||||
}
|
||||
}
|
||||
if (!headContent)
|
||||
return NS_OK;
|
||||
return 0;
|
||||
|
||||
PRUint32 columnCount = 0;
|
||||
for (nsIContent* childContent = headContent->GetFirstChild(); childContent;
|
||||
@ -270,28 +264,19 @@ nsXULListboxAccessible::GetColumnCount(PRInt32 *aColumnsCout)
|
||||
}
|
||||
}
|
||||
|
||||
*aColumnsCout = columnCount;
|
||||
return NS_OK;
|
||||
return columnCount;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXULListboxAccessible::GetRowCount(PRInt32 *aRowCount)
|
||||
PRUint32
|
||||
nsXULListboxAccessible::RowCount()
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aRowCount);
|
||||
*aRowCount = 0;
|
||||
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIDOMXULSelectControlElement> element(do_QueryInterface(mContent));
|
||||
NS_ENSURE_STATE(element);
|
||||
|
||||
PRUint32 itemCount = 0;
|
||||
nsresult rv = element->GetItemCount(&itemCount);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if(element)
|
||||
element->GetItemCount(&itemCount);
|
||||
|
||||
*aRowCount = itemCount;
|
||||
return NS_OK;
|
||||
return itemCount;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -790,29 +775,19 @@ nsXULListboxAccessible::SelectColumn(PRInt32 aColumn)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXULListboxAccessible::UnselectRow(PRInt32 aRow)
|
||||
void
|
||||
nsXULListboxAccessible::UnselectRow(PRUint32 aRowIdx)
|
||||
{
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIDOMXULMultiSelectControlElement> control =
|
||||
do_QueryInterface(mContent);
|
||||
NS_ASSERTION(control,
|
||||
"Doesn't implement nsIDOMXULMultiSelectControlElement.");
|
||||
|
||||
nsCOMPtr<nsIDOMXULSelectControlItemElement> item;
|
||||
control->GetItemAtIndex(aRow, getter_AddRefs(item));
|
||||
NS_ENSURE_TRUE(item, NS_ERROR_INVALID_ARG);
|
||||
|
||||
return control->RemoveItemFromSelection(item);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXULListboxAccessible::UnselectColumn(PRInt32 aColumn)
|
||||
{
|
||||
// xul:listbox and xul:richlistbox support row selection only.
|
||||
return NS_OK;
|
||||
if (control) {
|
||||
nsCOMPtr<nsIDOMXULSelectControlItemElement> item;
|
||||
control->GetItemAtIndex(aRowIdx, getter_AddRefs(item));
|
||||
control->RemoveItemFromSelection(item);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -104,6 +104,11 @@ public:
|
||||
// nsIAccessibleTable
|
||||
NS_DECL_OR_FORWARD_NSIACCESSIBLETABLE_WITH_XPCACCESSIBLETABLE
|
||||
|
||||
// TableAccessible
|
||||
virtual PRUint32 ColCount();
|
||||
virtual PRUint32 RowCount();
|
||||
virtual void UnselectRow(PRUint32 aRowIdx);
|
||||
|
||||
// nsAccessNode
|
||||
virtual void Shutdown();
|
||||
|
||||
|
@ -71,10 +71,13 @@ nsXULTreeAccessible::
|
||||
mFlags |= eXULTreeAccessible;
|
||||
|
||||
mTree = nsCoreUtils::GetTreeBoxObject(aContent);
|
||||
if (mTree)
|
||||
mTree->GetView(getter_AddRefs(mTreeView));
|
||||
NS_ASSERTION(mTree, "Can't get mTree!\n");
|
||||
|
||||
NS_ASSERTION(mTree && mTreeView, "Can't get mTree or mTreeView!\n");
|
||||
if (mTree) {
|
||||
nsCOMPtr<nsITreeView> treeView;
|
||||
mTree->GetView(getter_AddRefs(treeView));
|
||||
mTreeView = treeView;
|
||||
}
|
||||
|
||||
nsIContent* parentContent = mContent->GetParent();
|
||||
if (parentContent) {
|
||||
@ -95,14 +98,12 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(nsXULTreeAccessible)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsXULTreeAccessible,
|
||||
nsAccessible)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mTree)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mTreeView)
|
||||
CycleCollectorTraverseCache(tmp->mAccessibleCache, &cb);
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsXULTreeAccessible,
|
||||
nsAccessible)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mTree)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mTreeView)
|
||||
ClearCache(tmp->mAccessibleCache);
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||
|
||||
@ -145,10 +146,11 @@ nsXULTreeAccessible::NativeState()
|
||||
void
|
||||
nsXULTreeAccessible::Value(nsString& aValue)
|
||||
{
|
||||
// Return the value is the first selected child.
|
||||
|
||||
aValue.Truncate();
|
||||
if (!mTreeView)
|
||||
return;
|
||||
|
||||
// Return the value is the first selected child.
|
||||
nsCOMPtr<nsITreeSelection> selection;
|
||||
mTreeView->GetSelection(getter_AddRefs(selection));
|
||||
if (!selection)
|
||||
@ -739,13 +741,11 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(nsXULTreeItemAccessibleBase)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsXULTreeItemAccessibleBase,
|
||||
nsAccessible)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mTree)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mTreeView)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsXULTreeItemAccessibleBase,
|
||||
nsAccessible)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mTree)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mTreeView)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||
|
||||
NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION_INHERITED(nsXULTreeItemAccessibleBase)
|
||||
|
@ -143,7 +143,7 @@ protected:
|
||||
virtual already_AddRefed<nsAccessible> CreateTreeItemAccessible(PRInt32 aRow);
|
||||
|
||||
nsCOMPtr<nsITreeBoxObject> mTree;
|
||||
nsCOMPtr<nsITreeView> mTreeView;
|
||||
nsITreeView* mTreeView;
|
||||
nsAccessibleHashtable mAccessibleCache;
|
||||
};
|
||||
|
||||
@ -244,7 +244,7 @@ protected:
|
||||
void GetCellName(nsITreeColumn* aColumn, nsAString& aName);
|
||||
|
||||
nsCOMPtr<nsITreeBoxObject> mTree;
|
||||
nsCOMPtr<nsITreeView> mTreeView;
|
||||
nsITreeView* mTreeView;
|
||||
PRInt32 mRow;
|
||||
};
|
||||
|
||||
|
@ -72,32 +72,21 @@ NS_IMPL_ISUPPORTS_INHERITED1(nsXULTreeGridAccessible,
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// nsXULTreeGridAccessible: nsIAccessibleTable implementation
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXULTreeGridAccessible::GetColumnCount(PRInt32 *aColumnCount)
|
||||
PRUint32
|
||||
nsXULTreeGridAccessible::ColCount()
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aColumnCount);
|
||||
*aColumnCount = 0;
|
||||
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
*aColumnCount = nsCoreUtils::GetSensibleColumnCount(mTree);
|
||||
return NS_OK;
|
||||
return nsCoreUtils::GetSensibleColumnCount(mTree);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXULTreeGridAccessible::GetRowCount(PRInt32* aRowCount)
|
||||
PRUint32
|
||||
nsXULTreeGridAccessible::RowCount()
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aRowCount);
|
||||
*aRowCount = 0;
|
||||
|
||||
if (IsDefunct())
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
if (!mTreeView)
|
||||
return NS_OK;
|
||||
return 0;
|
||||
|
||||
return mTreeView->GetRowCount(aRowCount);
|
||||
PRInt32 rowCount = 0;
|
||||
mTreeView->GetRowCount(&rowCount);
|
||||
return rowCount >= 0 ? rowCount : 0;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
@ -556,23 +545,17 @@ nsXULTreeGridAccessible::SelectColumn(PRInt32 aColumnIndex)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXULTreeGridAccessible::UnselectRow(PRInt32 aRowIndex)
|
||||
void
|
||||
nsXULTreeGridAccessible::UnselectRow(PRUint32 aRowIdx)
|
||||
{
|
||||
if (!mTreeView)
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
return;
|
||||
|
||||
nsCOMPtr<nsITreeSelection> selection;
|
||||
mTreeView->GetSelection(getter_AddRefs(selection));
|
||||
NS_ENSURE_STATE(selection);
|
||||
|
||||
return selection->ClearRange(aRowIndex, aRowIndex);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsXULTreeGridAccessible::UnselectColumn(PRInt32 aColumnIndex)
|
||||
{
|
||||
return NS_OK;
|
||||
|
||||
if (selection)
|
||||
selection->ClearRange(aRowIdx, aRowIdx);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@ -835,14 +818,12 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(nsXULTreeGridCellAccessible)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsXULTreeGridCellAccessible,
|
||||
nsLeafAccessible)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mTree)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mTreeView)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_NSCOMPTR(mColumn)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsXULTreeGridCellAccessible,
|
||||
nsLeafAccessible)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mTree)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mTreeView)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_NSCOMPTR(mColumn)
|
||||
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
|
||||
|
||||
|
@ -60,6 +60,11 @@ public:
|
||||
// nsIAccessibleTable
|
||||
NS_DECL_OR_FORWARD_NSIACCESSIBLETABLE_WITH_XPCACCESSIBLETABLE
|
||||
|
||||
// TableAccessible
|
||||
virtual PRUint32 ColCount();
|
||||
virtual PRUint32 RowCount();
|
||||
virtual void UnselectRow(PRUint32 aRowIdx);
|
||||
|
||||
// nsAccessNode
|
||||
virtual void Shutdown();
|
||||
|
||||
@ -205,7 +210,7 @@ protected:
|
||||
enum { eAction_Click = 0 };
|
||||
|
||||
nsCOMPtr<nsITreeBoxObject> mTree;
|
||||
nsCOMPtr<nsITreeView> mTreeView;
|
||||
nsITreeView* mTreeView;
|
||||
|
||||
PRInt32 mRow;
|
||||
nsCOMPtr<nsITreeColumn> mColumn;
|
||||
|
@ -26,8 +26,8 @@
|
||||
function doTest()
|
||||
{
|
||||
testKeyboardShortcut("input1", "");
|
||||
testKeyboardShortcut("input2", MAC ? "⌃b" : "Alt+Shift+b");
|
||||
testKeyboardShortcut("link", MAC ? "⌃l" : "Alt+Shift+l");
|
||||
testKeyboardShortcut("input2", MAC ? "⌃⌥b" : "Alt+Shift+b");
|
||||
testKeyboardShortcut("link", MAC ? "⌃⌥l" : "Alt+Shift+l");
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
@ -237,8 +237,7 @@ const kSansSerifFontFamily =
|
||||
const kSerifFontFamily =
|
||||
function(aFontFamily) { return aFontFamily != "serif"; }
|
||||
|
||||
const kCursiveFontFamily = WIN ? "Comic Sans MS" :
|
||||
(LINUX ? "DejaVu Serif" : "MacFont");
|
||||
const kCursiveFontFamily = LINUX ? "DejaVu Serif" : "Comic Sans MS";
|
||||
|
||||
/**
|
||||
* Return used font from the given computed style.
|
||||
|
@ -109,6 +109,9 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=558036
|
||||
// no object attributes
|
||||
testAbsentAttrs(getAccessible("listitem").firstChild, { "tag": "" });
|
||||
|
||||
// experimental aria
|
||||
testAttrs("experimental", {"blah" : "true"}, true);
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
@ -142,6 +145,11 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=558036
|
||||
title="Add test coverage for tablist as implicit live region">
|
||||
Mozilla Bug 663136
|
||||
</a>
|
||||
<a target="_blank"
|
||||
href="https://bugzilla.mozilla.org/show_bug.cgi?id=563862"
|
||||
title="Expand support for nsIAccessibleEvent::OBJECT_ATTRIBUTE_CHANGE">
|
||||
Mozilla Bug 563862
|
||||
</a>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none"></div>
|
||||
<pre id="test">
|
||||
@ -201,5 +209,8 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=558036
|
||||
<ul>
|
||||
<li id="listitem">item
|
||||
</ul>
|
||||
|
||||
<!-- experimental aria -->
|
||||
<div id="experimental" aria-blah="true">Fake beer</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -22,6 +22,14 @@
|
||||
<script type="application/javascript">
|
||||
function doTest()
|
||||
{
|
||||
// Bug 746176: Failure of this whole test file on OS X.
|
||||
if (MAC) {
|
||||
todo(false, "Fix bug 746176 on Mac");
|
||||
closeBrowserWindow();
|
||||
SimpleTest.finish();
|
||||
return;
|
||||
}
|
||||
|
||||
var tabDocument = currentTabDocument();
|
||||
var p1 = tabDocument.getElementById("p1");
|
||||
var p2 = tabDocument.getElementById("p2");
|
||||
|
@ -21,7 +21,7 @@
|
||||
*/
|
||||
var gQueue = null;
|
||||
|
||||
function hideNode(aID, bHide)
|
||||
function updateAttribute(aID, aAttr, aValue)
|
||||
{
|
||||
this.node = getNode(aID);
|
||||
this.accessible = getAccessible(this.node);
|
||||
@ -30,34 +30,14 @@
|
||||
new invokerChecker(EVENT_OBJECT_ATTRIBUTE_CHANGED, this.accessible),
|
||||
];
|
||||
|
||||
this.invoke = function hideNode_invoke()
|
||||
this.invoke = function updateAttribute_invoke()
|
||||
{
|
||||
this.node.setAttribute("aria-hidden", bHide);
|
||||
this.node.setAttribute(aAttr, aValue);
|
||||
}
|
||||
|
||||
this.getID = function hideNode_getID()
|
||||
this.getID = function updateAttribute_getID()
|
||||
{
|
||||
return "aria-hidden for " + aID + " " + bHide;
|
||||
}
|
||||
}
|
||||
|
||||
function updateSort(aID, aSort)
|
||||
{
|
||||
this.node = getNode(aID);
|
||||
this.accessible = getAccessible(this.node);
|
||||
|
||||
this.eventSeq = [
|
||||
new invokerChecker(EVENT_OBJECT_ATTRIBUTE_CHANGED, this.accessible),
|
||||
];
|
||||
|
||||
this.invoke = function updateSort_invoke()
|
||||
{
|
||||
this.node.setAttribute("aria-sort", aSort);
|
||||
}
|
||||
|
||||
this.getID = function updateSort_getID()
|
||||
{
|
||||
return "aria-sort for " + aID + " " + aSort;
|
||||
return aAttr + " for " + aID + " " + aValue;
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,9 +49,12 @@
|
||||
{
|
||||
gQueue = new eventQueue();
|
||||
|
||||
gQueue.push(new hideNode("hideable", "true"));
|
||||
gQueue.push(new updateAttribute("hideable", "aria-hidden", "true"));
|
||||
|
||||
gQueue.push(new updateSort("sortable", "ascending"));
|
||||
gQueue.push(new updateAttribute("sortable", "aria-sort", "ascending"));
|
||||
|
||||
// For experimental ARIA extensions
|
||||
gQueue.push(new updateAttribute("custom", "aria-blah", "true"));
|
||||
|
||||
gQueue.invoke(); // Will call SimpleTest.finish();
|
||||
}
|
||||
@ -95,6 +78,12 @@
|
||||
Mozilla Bug 640707
|
||||
</a>
|
||||
|
||||
<a target="_blank"
|
||||
href="https://bugzilla.mozilla.org/show_bug.cgi?id=640707"
|
||||
title="Expand support for aria attribute change events">
|
||||
Mozilla Bug 563862
|
||||
</a>
|
||||
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none"></div>
|
||||
<pre id="test">
|
||||
@ -103,6 +92,8 @@
|
||||
|
||||
<div id="hideable"><div>Hi</div><div>there</div></div>
|
||||
|
||||
<div id="sortable" role="columnheader" aria-sort"none">aria-sort</div>
|
||||
<div id="sortable" role="columnheader" aria-sort="none">aria-sort</div>
|
||||
|
||||
<div id="custom" role="custom" aria-blah="false">Fat free cheese</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -384,8 +384,8 @@
|
||||
var gInitQueue = null;
|
||||
function initTests()
|
||||
{
|
||||
if (SEAMONKEY) {
|
||||
todo(false, "Skipping this test on SeaMonkey ftb. (Bug 718237)");
|
||||
if (SEAMONKEY || MAC) {
|
||||
todo(false, "Skipping this test on SeaMonkey ftb. (Bug 718237), and on Mac (bug 746177)");
|
||||
shutdownAutoComplete();
|
||||
SimpleTest.finish();
|
||||
return;
|
||||
|
@ -96,6 +96,7 @@
|
||||
// back one page in history, moves moves on input of tab document
|
||||
gQueue.push(new goBack());
|
||||
|
||||
if (!MAC) {
|
||||
// open new tab, focus moves to urlbar
|
||||
gQueue.push(new synthKey(tabDocument, "t", { ctrlKey: true, window: browserWindow() },
|
||||
new focusChecker(urlbarInput)));
|
||||
@ -103,6 +104,9 @@
|
||||
// close open tab, focus goes on input of tab document
|
||||
gQueue.push(new synthKey(tabDocument, "w", { ctrlKey: true, window: browserWindow() },
|
||||
new focusChecker(inputInDocument)));
|
||||
} else {
|
||||
todo(false, "Reenable on Mac after fixing bug 746178!");
|
||||
}
|
||||
|
||||
gQueue.onFinish = function()
|
||||
{
|
||||
|
@ -27,6 +27,13 @@
|
||||
var gQueue = null;
|
||||
function doTests()
|
||||
{
|
||||
// bug 746183 - Whole file times out on OS X
|
||||
if (MAC) {
|
||||
todo(false, "Reenable on mac after fixing bug 746183!");
|
||||
SimpleTest.finish();
|
||||
return;
|
||||
}
|
||||
|
||||
// Test focus events.
|
||||
gQueue = new eventQueue();
|
||||
|
||||
|
@ -109,8 +109,8 @@
|
||||
if (SEAMONKEY) {
|
||||
todo(false, "shift tab from editable document fails on (Windows) SeaMonkey! (Bug 718235)");
|
||||
} else {
|
||||
if (LINUX)
|
||||
todo(false, "shift tab from editable document fails on linux!");
|
||||
if (LINUX || MAC)
|
||||
todo(false, "shift tab from editable document fails on linux and Mac, bug 746519!");
|
||||
else
|
||||
gQueue.push(new synthShiftTab("link", new focusChecker("link")));
|
||||
} // ! SEAMONKEY
|
||||
|
@ -73,6 +73,7 @@
|
||||
// show popup again for the next test
|
||||
gQueue.push(new synthClick("popupbutton", new nofocusChecker()));
|
||||
|
||||
if (MAC) {
|
||||
// click menubutton of the 'menubutton' button while popup of button open.
|
||||
gQueue.push(new synthClick("mbb", new focusChecker("mbb"), { where: "right" }));
|
||||
// close popup, focus stays on menubutton, fire focus event
|
||||
@ -89,6 +90,9 @@
|
||||
gQueue.push(new synthUpKey("menubutton", new focusChecker("mbb_item2")));
|
||||
// click on menu item of menubutton menu, focus menubutton
|
||||
gQueue.push(new synthClick("mbb_item2", new focusChecker("mbb")));
|
||||
} else {
|
||||
todo(false, "mbb tests time out on OS X, fix bug 746970 and reenable!");
|
||||
}
|
||||
|
||||
// focus colorpicker button
|
||||
gQueue.push(new synthFocus("colorpicker"));
|
||||
|
@ -50,9 +50,13 @@
|
||||
gQueue.push(new synthClick("menulist", new focusChecker("ml_tangerine")));
|
||||
gQueue.push(new synthDownKey("ml_tangerine", new focusChecker("ml_marmalade")));
|
||||
gQueue.push(new synthEscapeKey("ml_marmalade", new focusChecker("menulist")));
|
||||
if (!MAC) {
|
||||
gQueue.push(new synthDownKey("menulist", new nofocusChecker("ml_marmalade")));
|
||||
gQueue.push(new synthOpenComboboxKey("menulist", new focusChecker("ml_marmalade")));
|
||||
gQueue.push(new synthEnterKey("ml_marmalade", new focusChecker("menulist")));
|
||||
} else {
|
||||
todo(false, "Bug 746531 - timeouts of last three menulist tests on OS X");
|
||||
}
|
||||
|
||||
var textentry = getAccessible("emenulist").firstChild;
|
||||
gQueue.push(new synthFocus("emenulist", new focusChecker(textentry)));
|
||||
@ -68,7 +72,9 @@
|
||||
|
||||
gQueue.push(new changeCurrentItem("listbox", "lb_item1"));
|
||||
gQueue.push(new changeCurrentItem("richlistbox", "rlb_item1"));
|
||||
if (!MAC) {
|
||||
gQueue.push(new changeCurrentItem("menulist", "ml_tangerine"));
|
||||
}
|
||||
gQueue.push(new changeCurrentItem("emenulist", "eml_tangerine"));
|
||||
|
||||
gQueue.invoke(); // Will call SimpleTest.finish();
|
||||
|
@ -28,6 +28,13 @@
|
||||
|
||||
function doTests()
|
||||
{
|
||||
// Bug 746534 - File causes crash or hang on OS X
|
||||
if (MAC) {
|
||||
todo(false, "Bug 746534 - test file causes crash or hang on OS X");
|
||||
SimpleTest.finish();
|
||||
return;
|
||||
}
|
||||
|
||||
gQueue = new eventQueue();
|
||||
|
||||
// first item is focused until there's selection
|
||||
|
@ -27,6 +27,12 @@
|
||||
var gQueue = null;
|
||||
function doTests()
|
||||
{
|
||||
if (MAC) {
|
||||
todo(false, "Tests disabled because of imminent failure.");
|
||||
SimpleTest.finish();
|
||||
return;
|
||||
}
|
||||
|
||||
// Test focus events.
|
||||
gQueue = new eventQueue();
|
||||
|
||||
|
@ -19,7 +19,11 @@
|
||||
var list = getAccessible("list");
|
||||
var listitem = getAccessible("listitem");
|
||||
var image = getAccessible("image");
|
||||
if (!MAC) {
|
||||
testChildAtPoint(list, 1, 1, listitem, image.firstChild);
|
||||
} else {
|
||||
todo(false, "Bug 746974 - children must match on all platforms, disable failing test on Mac");
|
||||
}
|
||||
|
||||
// ::MustPrune case (in this case childAtPoint doesn't look inside a
|
||||
// textbox), point is inside of textbox.
|
||||
|
@ -20,6 +20,7 @@
|
||||
<script type="application/javascript">
|
||||
function doTest()
|
||||
{
|
||||
if (!MAC) {
|
||||
var tabDocument = currentTabDocument();
|
||||
var p1 = tabDocument.body.firstElementChild;
|
||||
var p2 = tabDocument.body.lastElementChild;
|
||||
@ -33,6 +34,9 @@
|
||||
hitTest(tabDocument, p2, p2.firstChild);
|
||||
|
||||
closeBrowserWindow();
|
||||
} else {
|
||||
todo(false, "Bug 746974 - deepest child must be correct on all platforms, disabling on Mac!");
|
||||
}
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
|
@ -210,7 +210,7 @@
|
||||
aria-labelledby="l1 l2"
|
||||
alt="Mozilla logo"
|
||||
title="This is a logo"
|
||||
src="moz.png"/>
|
||||
src="../moz.png"/>
|
||||
</markup>
|
||||
|
||||
<markup ref="html:img" ruleset="htmlimageemptyalt">
|
||||
@ -221,7 +221,7 @@
|
||||
aria-labelledby="l1 l2"
|
||||
title="This is a logo"
|
||||
alt=""
|
||||
src="moz.png"/>
|
||||
src="../moz.png"/>
|
||||
</markup>
|
||||
|
||||
<markup ref="html:table/html:tr/html:td" ruleset="htmlelm"
|
||||
|
@ -62,6 +62,7 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Test
|
||||
var gQueue = null;
|
||||
gA11yEventDumpToConsole = true;
|
||||
function doTest()
|
||||
{
|
||||
// Load documents into tabs and wait for DocLoadComplete events caused by
|
||||
|
@ -16,6 +16,8 @@ const ROLE_COMBOBOX = nsIAccessibleRole.ROLE_COMBOBOX;
|
||||
const ROLE_COMBOBOX_LIST = nsIAccessibleRole.ROLE_COMBOBOX_LIST;
|
||||
const ROLE_COMBOBOX_OPTION = nsIAccessibleRole.ROLE_COMBOBOX_OPTION;
|
||||
const ROLE_COLUMNHEADER = nsIAccessibleRole.ROLE_COLUMNHEADER;
|
||||
const ROLE_DEFINITION = nsIAccessibleRole.ROLE_DEFINITION;
|
||||
const ROLE_DEFINITION_LIST = nsIAccessibleRole.ROLE_DEFINITION_LIST;
|
||||
const ROLE_DIALOG = nsIAccessibleRole.ROLE_DIALOG;
|
||||
const ROLE_DOCUMENT = nsIAccessibleRole.ROLE_DOCUMENT;
|
||||
const ROLE_EMBEDDED_OBJECT = nsIAccessibleRole.ROLE_EMBEDDED_OBJECT;
|
||||
@ -62,6 +64,7 @@ const ROLE_SEPARATOR = nsIAccessibleRole.ROLE_SEPARATOR;
|
||||
const ROLE_SLIDER = nsIAccessibleRole.ROLE_SLIDER;
|
||||
const ROLE_STATICTEXT = nsIAccessibleRole.ROLE_STATICTEXT;
|
||||
const ROLE_TABLE = nsIAccessibleRole.ROLE_TABLE;
|
||||
const ROLE_TERM = nsIAccessibleRole.ROLE_TERM;
|
||||
const ROLE_TEXT_CONTAINER = nsIAccessibleRole.ROLE_TEXT_CONTAINER;
|
||||
const ROLE_TEXT_LEAF = nsIAccessibleRole.ROLE_TEXT_LEAF;
|
||||
const ROLE_TOGGLE_BUTTON = nsIAccessibleRole.ROLE_TOGGLE_BUTTON;
|
||||
|
@ -53,9 +53,9 @@
|
||||
testRole("p", ROLE_PARAGRAPH);
|
||||
|
||||
// Test dl, dt, dd
|
||||
testRole("definitionlist", ROLE_LIST);
|
||||
testRole("definitionterm", ROLE_LISTITEM);
|
||||
testRole("definitiondescription", ROLE_PARAGRAPH);
|
||||
testRole("definitionlist", ROLE_DEFINITION_LIST);
|
||||
testRole("definitionterm", ROLE_TERM);
|
||||
testRole("definitiondescription", ROLE_DEFINITION);
|
||||
|
||||
// Has click, mousedown or mouseup listeners.
|
||||
testRole("span1", ROLE_TEXT_CONTAINER);
|
||||
|
@ -110,6 +110,8 @@
|
||||
testStates("autocomplete-list", 0, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
|
||||
testStates("autocomplete-list2", 0, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
|
||||
testStates("autocomplete-tel", 0, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
|
||||
testStates("autocomplete-email", 0, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
|
||||
testStates("autocomplete-search", 0, EXT_STATE_SUPPORTS_AUTOCOMPLETION);
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
@ -159,6 +161,7 @@
|
||||
title="Editable state bit should be present on readonly inputs">
|
||||
Mozilla Bug 733382
|
||||
</a>
|
||||
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none"></div>
|
||||
<pre id="test">
|
||||
@ -235,5 +238,19 @@
|
||||
<input id="autocomplete-list2" list="cities" autocomplete="off">
|
||||
<input id="autocomplete-tel" type="tel">
|
||||
|
||||
Email Address:
|
||||
<input id="autocomplete-email" type="email" list="contacts" value="xyzzy">
|
||||
<datalist id="contacts">
|
||||
<option>xyzzy@plughs.com</option>
|
||||
<option>nobody@mozilla.org</option>
|
||||
</datalist>
|
||||
|
||||
</br>Search for:
|
||||
<input id="autocomplete-search" type="search" list="searchhisty" value="Gamma">
|
||||
<datalist id="searchhisty">
|
||||
<option>Gamma Rays</option>
|
||||
<option>Gamma Ray Bursts</option>
|
||||
</datalist>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@ -87,6 +87,13 @@
|
||||
|
||||
function doTests()
|
||||
{
|
||||
// Shift+Tab not working, and a test timeout, bug 746977
|
||||
if (MAC) {
|
||||
todo(false, "Shift+tab isn't working on OS X, needs to be disabled until bug 746977 is fixed!");
|
||||
SimpleTest.finish();
|
||||
return;
|
||||
}
|
||||
|
||||
gQueue = new eventQueue();
|
||||
|
||||
// CSS 'overflow: scroll' property setting and unsetting causes accessible
|
||||
|
@ -31,7 +31,7 @@
|
||||
|
||||
is(root.parentDocument, null,
|
||||
"Wrong parent document of root accessible");
|
||||
is(root.childDocumentCount, 1,
|
||||
is(root.childDocumentCount, SEAMONKEY ? 1 : 3,
|
||||
"Wrong child document count of root accessible");
|
||||
is(root.getChildDocumentAt(0), tabDoc,
|
||||
"Wrong child document at index 0 of root accessible");
|
||||
|
@ -88,17 +88,17 @@
|
||||
|
||||
// dl list
|
||||
var tree =
|
||||
{ LIST: [ // dl
|
||||
{ LISTITEM: [ // dt
|
||||
{ DEFINITION_LIST: [ // dl
|
||||
{ TERM: [ // dt
|
||||
{ TEXT_LEAF: [] },
|
||||
] },
|
||||
{ PARAGRAPH: [ // dd
|
||||
{ DEFINITION: [ // dd
|
||||
{ TEXT_LEAF: [] }
|
||||
] },
|
||||
{ LISTITEM: [ // dt
|
||||
{ TERM: [ // dt
|
||||
{ TEXT_LEAF: [] }
|
||||
] },
|
||||
{ PARAGRAPH: [ // dd
|
||||
{ DEFINITION: [ // dd
|
||||
{ TEXT_LEAF: [] }
|
||||
] }
|
||||
] };
|
||||
@ -110,11 +110,11 @@
|
||||
{ LIST: [ // ol
|
||||
{ LISTITEM: [ // li
|
||||
{ STATICTEXT: [ ] },
|
||||
{ LIST: [ // dl
|
||||
{ LISTITEM: [ // dt
|
||||
{ DEFINITION_LIST: [ // dl
|
||||
{ TERM: [ // dt
|
||||
{ TEXT_LEAF: [] }
|
||||
] },
|
||||
{ PARAGRAPH: [ // dd
|
||||
{ DEFINITION: [ // dd
|
||||
{ TEXT_LEAF: [] }
|
||||
] }
|
||||
] }
|
||||
|
@ -128,6 +128,17 @@
|
||||
|
||||
testAccessibleTree("table3", accTree);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// table4 (display: table-row)
|
||||
accTree =
|
||||
{ TABLE: [
|
||||
{ ROW: [
|
||||
{ CELL: [
|
||||
{ TEXT_LEAF: [ ] }
|
||||
] }
|
||||
] } ]
|
||||
};
|
||||
testAccessibleTree("table4", accTree);
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
@ -142,6 +153,11 @@
|
||||
href="https://bugzilla.mozilla.org/show_bug.cgi?id=529621">
|
||||
Mozilla Bug 529621
|
||||
</a>
|
||||
<a target="_blank"
|
||||
title="when div has display style table-row"
|
||||
href="https://bugzilla.mozilla.org/show_bug.cgi?id=727722">
|
||||
Mozilla Bug 727722
|
||||
</a>
|
||||
<p id="display"></p>
|
||||
<div id="content" style="display: none"></div>
|
||||
<pre id="test">
|
||||
@ -189,5 +205,11 @@
|
||||
<td>cell</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table id="table4">
|
||||
<div style="display: table-row">
|
||||
<td>cell1</td>
|
||||
</div>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -90,6 +90,32 @@
|
||||
|
||||
testAccessibleTree("txc6", accTree);
|
||||
|
||||
// input@type="email", value
|
||||
accTree = {
|
||||
role: ROLE_ENTRY,
|
||||
children: [
|
||||
{ // text child
|
||||
role: ROLE_TEXT_LEAF,
|
||||
children: []
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
testAccessibleTree("txc7", accTree);
|
||||
|
||||
// input@type="search", value
|
||||
accTree = {
|
||||
role: ROLE_ENTRY,
|
||||
children: [
|
||||
{ // text child
|
||||
role: ROLE_TEXT_LEAF,
|
||||
children: []
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
testAccessibleTree("txc8", accTree);
|
||||
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
@ -132,5 +158,19 @@
|
||||
<input id="txc5" type="password" value="hello">
|
||||
<input id="txc6" type="tel" value="4167771234">
|
||||
|
||||
Email Address:
|
||||
<input id="txc7" type="email" list="contacts" value="xyzzy">
|
||||
<datalist id="contacts">
|
||||
<option>xyzzy@plughs.com</option>
|
||||
<option>nobody@mozilla.org</option>
|
||||
</datalist>
|
||||
|
||||
</br>Search for:
|
||||
<input id="txc8" type="search" list="searchhisty" value="Gamma">
|
||||
<datalist id="searchhisty">
|
||||
<option>Gamma Rays</option>
|
||||
<option>Gamma Ray Bursts</option>
|
||||
</datalist>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
@ -64,8 +64,7 @@
|
||||
this.preinvoke = function rootContentRemoved_preinvoke()
|
||||
{
|
||||
// Set up target for hide event before we invoke.
|
||||
var text =
|
||||
getAccessible(getAccessible(getDocNode(aID)).firstChild).DOMNode;
|
||||
var text = getAccessible(getAccessible(getDocNode(aID)).firstChild);
|
||||
this.eventSeq[0].target = text;
|
||||
}
|
||||
|
||||
@ -304,16 +303,21 @@
|
||||
|
||||
function insertElmUnderDocElmWhileBodyMissed(aID)
|
||||
{
|
||||
this.docNode = getDocNode(aID);
|
||||
this.inputNode = getDocNode(aID).createElement("input");
|
||||
this.docNode = null;
|
||||
this.inputNode = null;
|
||||
|
||||
function getInputNode()
|
||||
{ return this.inputNode; }
|
||||
|
||||
this.eventSeq = [
|
||||
new invokerChecker(EVENT_SHOW, this.inputNode),
|
||||
new invokerChecker(EVENT_REORDER, this.docNode)
|
||||
new invokerChecker(EVENT_SHOW, getInputNode.bind(this)),
|
||||
new invokerChecker(EVENT_REORDER, getDocNode, aID)
|
||||
];
|
||||
|
||||
this.invoke = function invoke()
|
||||
{
|
||||
this.docNode = getDocNode(aID);
|
||||
this.inputNode = this.docNode.createElement("input");
|
||||
this.docNode.documentElement.appendChild(this.inputNode);
|
||||
}
|
||||
|
||||
@ -389,6 +393,7 @@
|
||||
// Test
|
||||
|
||||
//gA11yEventDumpID = "eventdump"; // debug stuff
|
||||
//gA11yEventDumpToConsole = true;
|
||||
|
||||
var gQueue = null;
|
||||
|
||||
|
@ -380,7 +380,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
//gA11yEventDumpToConsole = true;
|
||||
gA11yEventDumpToConsole = true;
|
||||
|
||||
var gQueue = null;
|
||||
function doTest()
|
||||
|
1
aclocal.m4
vendored
1
aclocal.m4
vendored
@ -3,7 +3,6 @@ dnl Local autoconf macros used with mozilla
|
||||
dnl The contents of this file are under the Public Domain.
|
||||
dnl
|
||||
|
||||
builtin(include, build/autoconf/glib.m4)dnl
|
||||
builtin(include, build/autoconf/nspr.m4)dnl
|
||||
builtin(include, build/autoconf/nss.m4)dnl
|
||||
builtin(include, build/autoconf/pkg.m4)dnl
|
||||
|
@ -40,6 +40,12 @@ probes/Makefile
|
||||
extensions/Makefile
|
||||
"
|
||||
|
||||
if [ "$MOZ_WEBAPP_RUNTIME" ]; then
|
||||
add_makefiles "
|
||||
webapprt/Makefile
|
||||
"
|
||||
fi
|
||||
|
||||
if [ ! "$LIBXUL_SDK" ]; then
|
||||
if [ "$STLPORT_SOURCES" ]; then
|
||||
add_makefiles "
|
||||
@ -83,6 +89,11 @@ if [ "$OS_ARCH" != "WINNT" -a "$OS_ARCH" != "OS2" ]; then
|
||||
add_makefiles "
|
||||
build/unix/Makefile
|
||||
"
|
||||
if [ "$STDCXX_COMPAT" ]; then
|
||||
add_makefiles "
|
||||
build/unix/stdc++compat/Makefile
|
||||
"
|
||||
fi
|
||||
if [ "$USE_ELF_HACK" ]; then
|
||||
add_makefiles "
|
||||
build/unix/elfhack/Makefile
|
||||
|
@ -380,6 +380,9 @@ pref("urlclassifier.gethashtables", "goog-phish-shavar,goog-malware-shavar");
|
||||
// the database.
|
||||
pref("urlclassifier.confirm-age", 2700);
|
||||
|
||||
// Maximum size of the sqlite3 cache during an update, in bytes
|
||||
pref("urlclassifier.updatecachemax", 4194304);
|
||||
|
||||
// URL for checking the reason for a malware warning.
|
||||
pref("browser.safebrowsing.malware.reportURL", "http://safebrowsing.clients.google.com/safebrowsing/diagnostic?client=%NAME%&hl=%LOCALE%&site=");
|
||||
#endif
|
||||
@ -422,14 +425,18 @@ pref("browser.link.open_newwindow", 3);
|
||||
// 2: don't divert window.open with features
|
||||
pref("browser.link.open_newwindow.restriction", 0);
|
||||
|
||||
// Enable browser frame
|
||||
// Enable browser frames, but not OOP.
|
||||
pref("dom.mozBrowserFramesEnabled", true);
|
||||
pref("dom.mozBrowserFramesWhitelist", "http://homescreen.gaiamobile.org,http://browser.gaiamobile.org");
|
||||
pref("dom.ipc.tabs.disabled", true);
|
||||
|
||||
// Temporary permission hack for WebSMS
|
||||
pref("dom.sms.enabled", true);
|
||||
pref("dom.sms.whitelist", "file://,http://homescreen.gaiamobile.org,http://sms.gaiamobile.org");
|
||||
|
||||
// Temporary permission hack for WebMobileConnection
|
||||
pref("dom.mobileconnection.whitelist", "http://homescreen.gaiamobile.org");
|
||||
|
||||
// Temporary permission hack for WebContacts
|
||||
pref("dom.mozContacts.enabled", true);
|
||||
pref("dom.mozContacts.whitelist", "http://dialer.gaiamobile.org,http://sms.gaiamobile.org");
|
||||
@ -469,15 +476,6 @@ pref("full-screen-api.enabled", true);
|
||||
|
||||
pref("media.volume.steps", 10);
|
||||
|
||||
// Data connection settings. These will eventually live in the
|
||||
// navigator.settings API, or even in a database where we can look
|
||||
// it up automatically (bug 729440), but for this will have to do.
|
||||
pref("ril.data.enabled", false);
|
||||
pref("ril.data.roaming.enabled", false);
|
||||
pref("ril.data.apn", "");
|
||||
pref("ril.data.user", "");
|
||||
pref("ril.data.passwd", "");
|
||||
|
||||
//Enable/disable marionette server, set listening port
|
||||
pref("marionette.defaultPrefs.enabled", true);
|
||||
pref("marionette.defaultPrefs.port", 2828);
|
||||
|
@ -112,7 +112,12 @@ var shell = {
|
||||
// a specific value when the device starts. This way the front-end
|
||||
// can display a notification when the volume change and show a volume
|
||||
// level modified from this point.
|
||||
Services.audioManager.masterVolume = 0.5;
|
||||
// try catch block must be used since the emulator fails here. bug 746429
|
||||
try {
|
||||
Services.audioManager.masterVolume = 0.5;
|
||||
} catch(e) {
|
||||
dump('Error setting master volume: ' + e + '\n');
|
||||
}
|
||||
|
||||
let domains = "";
|
||||
try {
|
||||
@ -323,6 +328,10 @@ var shell = {
|
||||
navigator.mozPower.screenEnabled = true;
|
||||
}
|
||||
}
|
||||
if (topic == "cpu") {
|
||||
navigator.mozPower.cpuSleepAllowed = (state != "locked-foreground" &&
|
||||
state != "locked-background");
|
||||
}
|
||||
}
|
||||
|
||||
let idleTimeout = Services.prefs.getIntPref("power.screen.timeout");
|
||||
@ -356,6 +365,54 @@ var shell = {
|
||||
};
|
||||
})();
|
||||
|
||||
const DATA_CALL_SETTING_BOLKEYS = ["ril.data.enabled",
|
||||
"ril.data.roaming.enabled"];
|
||||
const DATA_CALL_SETTING_CHARKEYS = ["ril.data.apn",
|
||||
"ril.data.user",
|
||||
"ril.data.passwd"];
|
||||
(function DataCallSettings() {
|
||||
let sm = navigator.mozSettings;
|
||||
let lock = sm.getLock();
|
||||
DATA_CALL_SETTING_BOLKEYS.forEach(function(key) {
|
||||
let request = lock.get(key);
|
||||
request.onsuccess = function onSuccess() {
|
||||
let value = request.result[key] || false;
|
||||
Services.prefs.setBoolPref(key, value);
|
||||
dump("DataCallSettings - " + key + ":" + value);
|
||||
};
|
||||
request.onerror = function onError() {
|
||||
Services.prefs.setBoolPref(key, false);
|
||||
};
|
||||
});
|
||||
|
||||
DATA_CALL_SETTING_CHARKEYS.forEach(function(key) {
|
||||
let request = lock.get(key);
|
||||
request.onsuccess = function onSuccess() {
|
||||
let value = request.result[key] || "";
|
||||
Services.prefs.setCharPref(key, value);
|
||||
dump("DataCallSettings - " + key + ":" + value);
|
||||
};
|
||||
request.onerror = function onError() {
|
||||
Services.prefs.setCharPref(key, "");
|
||||
};
|
||||
});
|
||||
|
||||
navigator.mozSettings.onsettingchange = function onSettingChange(e) {
|
||||
dump("DataCallSettings - onsettingchange: " + e.settingName +
|
||||
": " + e.settingValue);
|
||||
if (e.settingValue) {
|
||||
if (DATA_CALL_SETTING_BOLKEYS.indexOf(e.settingName) > -1 ) {
|
||||
Services.prefs.setBoolPref(e.settingName, e.settingValue);
|
||||
return;
|
||||
}
|
||||
if (DATA_CALL_SETTING_CHARKEYS.indexOf(e.settingName) > -1) {
|
||||
Services.prefs.setCharPref(e.settingName, e.settingValue);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
})();
|
||||
|
||||
function nsBrowserAccess() {
|
||||
}
|
||||
|
||||
|
@ -10,23 +10,24 @@ const Cr = Components.results;
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
const OFFLINE_PROFILE_DIR = "/data/local"
|
||||
const LOCAL_DIR = "/data/local";
|
||||
|
||||
function DirectoryProvider() {
|
||||
}
|
||||
|
||||
DirectoryProvider.prototype = {
|
||||
classID: Components.ID("{9181eb7c-6f87-11e1-90b1-4f59d80dd2e5}"),
|
||||
|
||||
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIDirectoryServiceProvider]),
|
||||
|
||||
getFile: function dp_getFile(prop, persistent) {
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
if (prop == "cachePDir" || prop == "webappsDir") {
|
||||
let localProps = ["cachePDir", "webappsDir", "PrefD"];
|
||||
if (localProps.indexOf(prop) != -1) {
|
||||
prop.persistent = true;
|
||||
let file = Cc["@mozilla.org/file/local;1"]
|
||||
.createInstance(Ci.nsILocalFile)
|
||||
file.initWithPath(OFFLINE_PROFILE_DIR);
|
||||
file.initWithPath(LOCAL_DIR);
|
||||
return file;
|
||||
}
|
||||
#endif
|
||||
|
@ -1,14 +1,14 @@
|
||||
[
|
||||
{
|
||||
"size": 195,
|
||||
"digest": "85369693c2362131515014cd4547cd0824225b03e1e52a352a84012e6e8586fa46ad619181167d220c463761865719a1747a83aeee76a5fcc5ab7859c14ef24a",
|
||||
"algorithm": "sha512",
|
||||
"filename": "setup.sh"
|
||||
"size": 195,
|
||||
"digest": "ff960e3cb9e07865bde6fdb0d4127a11205d4cb70ee527e30ccc38f6370a9d750eb5da8993cb3c5de28b45836a3a20b8c25c4adcc68b1945a59dbe1c8b28cc23",
|
||||
"algorithm": "sha512",
|
||||
"filename": "setup.sh"
|
||||
},
|
||||
{
|
||||
"size": 121344236,
|
||||
"digest": "0bf5cceced8add6142c1c7522890c39554b94848e3f5eb9b92de2a8c6f6af3c0e8ab69ddf7bae39eaab2bcb637233ff02de07b47a1850767d2810a46fb31bf65",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gonk-toolchain-0.tar.bz2"
|
||||
"size": 121135598,
|
||||
"digest": "e182eb95105f186ec81546c373752c3af5b8fbc520fd14d37fcb1bb40efac76b96befe868b5a5a17f967bd04390122b7911d167dda1516225709cbd3a00e2c78",
|
||||
"algorithm": "sha512",
|
||||
"filename": "gonk-toolchain-1.tar.bz2"
|
||||
}
|
||||
]
|
||||
|
2
b2g/confvars.sh
Normal file → Executable file
2
b2g/confvars.sh
Normal file → Executable file
@ -38,7 +38,7 @@
|
||||
MOZ_APP_BASENAME=B2G
|
||||
MOZ_APP_VENDOR=Mozilla
|
||||
|
||||
MOZ_APP_VERSION=14.0a1
|
||||
MOZ_APP_VERSION=15.0a1
|
||||
MOZ_APP_UA_NAME=Firefox
|
||||
|
||||
MOZ_BRANDING_DIRECTORY=b2g/branding/unofficial
|
||||
|
@ -138,6 +138,7 @@
|
||||
@BINPATH@/components/content_canvas.xpt
|
||||
@BINPATH@/components/content_htmldoc.xpt
|
||||
@BINPATH@/components/content_html.xpt
|
||||
@BINPATH@/components/content_media.xpt
|
||||
@BINPATH@/components/content_xslt.xpt
|
||||
@BINPATH@/components/content_xtf.xpt
|
||||
@BINPATH@/components/cookie.xpt
|
||||
@ -408,11 +409,16 @@
|
||||
@BINPATH@/components/messageWakeupService.manifest
|
||||
@BINPATH@/components/SettingsManager.js
|
||||
@BINPATH@/components/SettingsManager.manifest
|
||||
@BINPATH@/components/SettingsService.js
|
||||
@BINPATH@/components/SettingsService.manifest
|
||||
@BINPATH@/components/nsFilePicker.js
|
||||
@BINPATH@/components/nsFilePicker.manifest
|
||||
#ifdef MOZ_B2G_RIL
|
||||
@BINPATH@/components/NetworkManager.manifest
|
||||
@BINPATH@/components/NetworkManager.js
|
||||
@BINPATH@/components/RadioInterfaceLayer.manifest
|
||||
@BINPATH@/components/RadioInterfaceLayer.js
|
||||
@BINPATH@/components/RILContentHelper.js
|
||||
@BINPATH@/components/SmsDatabaseService.manifest
|
||||
@BINPATH@/components/SmsDatabaseService.js
|
||||
@BINPATH@/components/WifiWorker.js
|
||||
|
@ -55,7 +55,7 @@
|
||||
<Description>
|
||||
<em:id>{3c2e2abc-06d4-11e1-ac3b-374f68613e61}</em:id>
|
||||
<em:minVersion>@MOZ_APP_VERSION@</em:minVersion>
|
||||
<em:maxVersion>@MOZ_APP_VERSION@</em:maxVersion>
|
||||
<em:maxVersion>@MOZ_APP_MAXVERSION@</em:maxVersion>
|
||||
</Description>
|
||||
</em:targetApplication>
|
||||
</Description>
|
||||
|
@ -62,6 +62,10 @@ DEFINES += \
|
||||
-DAPP_VERSION="$(MOZ_APP_VERSION)" \
|
||||
-DFIREFOX_ICO=\"$(DIST)/branding/firefox.ico\" \
|
||||
-DDOCUMENT_ICO=\"$(DIST)/branding/document.ico\" \
|
||||
-DNEWWINDOW_ICO=\"$(DIST)/branding/newwindow.ico\" \
|
||||
-DNEWTAB_ICO=\"$(DIST)/branding/newtab.ico\" \
|
||||
-DPBMODE_ICO=\"$(DIST)/branding/pbmode.ico\" \
|
||||
|
||||
$(NULL)
|
||||
|
||||
ifdef LIBXUL_SDK #{
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user