bug 777117 - add table cell accessible interface r=davidb

From 5d763ba823c357e2023c0e8b4ee6c7c173433d23 Mon Sep 17 00:00:00 2001
---
 accessible/src/generic/ARIAGridAccessible.cpp |    9 +++-
 accessible/src/generic/ARIAGridAccessible.h   |    9 +++-
 accessible/src/generic/TableCellAccessible.h  |   71 +++++++++++++++++++++++++
 accessible/src/html/HTMLTableAccessible.cpp   |    9 +++-
 accessible/src/html/HTMLTableAccessible.h     |    9 +++-
 accessible/src/xpcom/xpcAccessibleTableCell.h |   37 +++++++++++++
 accessible/src/xul/XULListboxAccessible.cpp   |    9 +++-
 accessible/src/xul/XULListboxAccessible.h     |    9 +++-
 accessible/src/xul/XULTreeGridAccessible.cpp  |    9 +++-
 accessible/src/xul/XULTreeGridAccessible.h    |    9 +++-
 10 files changed, 168 insertions(+), 12 deletions(-)
 create mode 100644 accessible/src/generic/TableCellAccessible.h
 create mode 100644 accessible/src/xpcom/xpcAccessibleTableCell.h
This commit is contained in:
Trevor Saunders 2012-07-24 11:58:25 -04:00
parent f537e09f60
commit ba6eb75773
10 changed files with 168 additions and 12 deletions

View File

@ -531,7 +531,7 @@ ARIAGridAccessible::SetARIASelected(Accessible* aAccessible,
ARIAGridCellAccessible:: ARIAGridCellAccessible::
ARIAGridCellAccessible(nsIContent* aContent, DocAccessible* aDoc) : ARIAGridCellAccessible(nsIContent* aContent, DocAccessible* aDoc) :
HyperTextAccessibleWrap(aContent, aDoc) HyperTextAccessibleWrap(aContent, aDoc), xpcAccessibleTableCell(this)
{ {
} }
@ -789,3 +789,10 @@ ARIAGridCellAccessible::GetAttributesInternal(nsIPersistentProperties* aAttribut
return NS_OK; return NS_OK;
} }
void
ARIAGridCellAccessible::Shutdown()
{
mTableCell = nsnull;
HyperTextAccessibleWrap::Shutdown();
}

View File

@ -10,7 +10,9 @@
#include "HyperTextAccessibleWrap.h" #include "HyperTextAccessibleWrap.h"
#include "TableAccessible.h" #include "TableAccessible.h"
#include "TableCellAccessible.h"
#include "xpcAccessibleTable.h" #include "xpcAccessibleTable.h"
#include "xpcAccessibleTableCell.h"
namespace mozilla { namespace mozilla {
namespace a11y { namespace a11y {
@ -95,7 +97,9 @@ protected:
* Accessible for ARIA gridcell and rowheader/columnheader. * Accessible for ARIA gridcell and rowheader/columnheader.
*/ */
class ARIAGridCellAccessible : public HyperTextAccessibleWrap, class ARIAGridCellAccessible : public HyperTextAccessibleWrap,
public nsIAccessibleTableCell public nsIAccessibleTableCell,
public TableCellAccessible,
public xpcAccessibleTableCell
{ {
public: public:
ARIAGridCellAccessible(nsIContent* aContent, DocAccessible* aDoc); ARIAGridCellAccessible(nsIContent* aContent, DocAccessible* aDoc);
@ -104,9 +108,10 @@ public:
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
// nsIAccessibleTableCell // nsIAccessibleTableCell
NS_DECL_NSIACCESSIBLETABLECELL NS_DECL_OR_FORWARD_NSIACCESSIBLETABLECELL_WITH_XPCACCESSIBLETABLECELL
// Accessible // Accessible
virtual void Shutdown();
virtual void ApplyARIAState(PRUint64* aState) const; virtual void ApplyARIAState(PRUint64* aState) const;
virtual nsresult GetAttributesInternal(nsIPersistentProperties *aAttributes); virtual nsresult GetAttributesInternal(nsIPersistentProperties *aAttributes);
}; };

View File

@ -0,0 +1,71 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
#ifndef mozilla_a11y_TableCellAccessible_h__
#define mozilla_a11y_TableCellAccessible_h__
#include "nsTArray.h"
#include "mozilla/StandardInteger.h"
class Accessible;
namespace mozilla {
namespace a11y {
class TableAccessible;
/**
* abstract interface implemented by table cell accessibles.
*/
class TableCellAccessible
{
public:
/**
* Return the table this cell is in.
*/
virtual TableAccessible* Table() { return nullptr; }
/**
* Return the Column of the table this cell is in.
*/
virtual uint32_t ColIdx() { return 0; }
/**
* Return the the row of the table this cell is in.
*/
virtual uint32_t RowIdx() { return 0; }
/**
* Return the column extent of this cell.
*/
virtual uint32_t ColExtent() { return 0; }
/**
* Return the row extent of this cell.
*/
virtual uint32_t RowExtent() { return 0; }
/**
* Return the column header cells for this cell.
*/
virtual void ColHeaderCells(nsTArray<Accessible*>* aCells) { }
/**
* Return the row header cells for this cell.
*/
virtual void RowHeaderCells(nsTArray<Accessible*>* aCells) { }
/**
* Returns true if this cell is selected.
*/
virtual bool Selected() { return false; }
};
}
}
#endif // mozilla_a11y_TableCellAccessible_h__

View File

@ -45,7 +45,7 @@ using namespace mozilla::a11y;
HTMLTableCellAccessible:: HTMLTableCellAccessible::
HTMLTableCellAccessible(nsIContent* aContent, DocAccessible* aDoc) : HTMLTableCellAccessible(nsIContent* aContent, DocAccessible* aDoc) :
HyperTextAccessibleWrap(aContent, aDoc) HyperTextAccessibleWrap(aContent, aDoc), xpcAccessibleTableCell(this)
{ {
} }
@ -59,6 +59,13 @@ NS_IMPL_ISUPPORTS_INHERITED1(HTMLTableCellAccessible,
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// HTMLTableCellAccessible: Accessible implementation // HTMLTableCellAccessible: Accessible implementation
void
HTMLTableCellAccessible::Shutdown()
{
mTableCell = nsnull;
HyperTextAccessibleWrap::Shutdown();
}
role role
HTMLTableCellAccessible::NativeRole() HTMLTableCellAccessible::NativeRole()
{ {

View File

@ -9,7 +9,9 @@
#include "HyperTextAccessibleWrap.h" #include "HyperTextAccessibleWrap.h"
#include "nsIAccessibleTable.h" #include "nsIAccessibleTable.h"
#include "TableAccessible.h" #include "TableAccessible.h"
#include "TableCellAccessible.h"
#include "xpcAccessibleTable.h" #include "xpcAccessibleTable.h"
#include "xpcAccessibleTableCell.h"
class nsITableLayout; class nsITableLayout;
class nsITableCellLayout; class nsITableCellLayout;
@ -21,7 +23,9 @@ namespace a11y {
* HTML table cell accessible (html:td). * HTML table cell accessible (html:td).
*/ */
class HTMLTableCellAccessible : public HyperTextAccessibleWrap, class HTMLTableCellAccessible : public HyperTextAccessibleWrap,
public nsIAccessibleTableCell public nsIAccessibleTableCell,
public TableCellAccessible,
public xpcAccessibleTableCell
{ {
public: public:
HTMLTableCellAccessible(nsIContent* aContent, DocAccessible* aDoc); HTMLTableCellAccessible(nsIContent* aContent, DocAccessible* aDoc);
@ -30,9 +34,10 @@ public:
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
// nsIAccessibleTableCell // nsIAccessibleTableCell
NS_DECL_NSIACCESSIBLETABLECELL NS_DECL_OR_FORWARD_NSIACCESSIBLETABLECELL_WITH_XPCACCESSIBLETABLECELL
// Accessible // Accessible
virtual void Shutdown();
virtual a11y::role NativeRole(); virtual a11y::role NativeRole();
virtual PRUint64 NativeState(); virtual PRUint64 NativeState();
virtual PRUint64 NativeInteractiveState() const; virtual PRUint64 NativeInteractiveState() const;

View File

@ -0,0 +1,37 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
#ifndef MOZILLA_A11Y_XPCOM_XPACESSIBLETABLECELL_H_
#define MOZILLA_A11Y_XPCOM_XPACESSIBLETABLECELL_H_
namespace mozilla {
namespace a11y {
class TableAccessible;
class TableCellAccessible;
}
}
class xpcAccessibleTableCell
{
public:
xpcAccessibleTableCell(mozilla::a11y::TableCellAccessible* aTableCell) :
mTableCell(aTableCell) { }
protected:
mozilla::a11y::TableCellAccessible* mTableCell;
};
#define NS_DECL_OR_FORWARD_NSIACCESSIBLETABLECELL_WITH_XPCACCESSIBLETABLECELL \
NS_IMETHOD GetTable(nsIAccessibleTable * *aTable); \
NS_IMETHOD GetColumnIndex(PRInt32 *aColumnIndex); \
NS_IMETHOD GetRowIndex(PRInt32 *aRowIndex); \
NS_IMETHOD GetColumnExtent(PRInt32 *aColumnExtent); \
NS_IMETHOD GetRowExtent(PRInt32 *aRowExtent); \
NS_IMETHOD GetColumnHeaderCells(nsIArray * *aColumnHeaderCells); \
NS_IMETHOD GetRowHeaderCells(nsIArray * *aRowHeaderCells); \
NS_IMETHOD IsSelected(bool *_retval );
#endif // MOZILLA_A11Y_XPCOM_XPACESSIBLETABLECELL_H_

View File

@ -727,7 +727,7 @@ XULListitemAccessible::ContainerWidget() const
XULListCellAccessible:: XULListCellAccessible::
XULListCellAccessible(nsIContent* aContent, DocAccessible* aDoc) : XULListCellAccessible(nsIContent* aContent, DocAccessible* aDoc) :
HyperTextAccessibleWrap(aContent, aDoc) HyperTextAccessibleWrap(aContent, aDoc), xpcAccessibleTableCell(this)
{ {
} }
@ -934,6 +934,13 @@ XULListCellAccessible::IsSelected(bool* aIsSelected)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// XULListCellAccessible. Accessible implementation // XULListCellAccessible. Accessible implementation
void
XULListCellAccessible::Shutdown()
{
mTableCell = nsnull;
HyperTextAccessibleWrap::Shutdown();
}
role role
XULListCellAccessible::NativeRole() XULListCellAccessible::NativeRole()
{ {

View File

@ -9,7 +9,9 @@
#include "BaseAccessibles.h" #include "BaseAccessibles.h"
#include "nsIAccessibleTable.h" #include "nsIAccessibleTable.h"
#include "TableAccessible.h" #include "TableAccessible.h"
#include "TableCellAccessible.h"
#include "xpcAccessibleTable.h" #include "xpcAccessibleTable.h"
#include "xpcAccessibleTableCell.h"
#include "XULMenuAccessible.h" #include "XULMenuAccessible.h"
#include "XULSelectControlAccessible.h" #include "XULSelectControlAccessible.h"
@ -151,7 +153,9 @@ private:
* Class represents xul:listcell. * Class represents xul:listcell.
*/ */
class XULListCellAccessible : public HyperTextAccessibleWrap, class XULListCellAccessible : public HyperTextAccessibleWrap,
public nsIAccessibleTableCell public nsIAccessibleTableCell,
public TableCellAccessible,
public xpcAccessibleTableCell
{ {
public: public:
XULListCellAccessible(nsIContent* aContent, DocAccessible* aDoc); XULListCellAccessible(nsIContent* aContent, DocAccessible* aDoc);
@ -160,9 +164,10 @@ public:
NS_DECL_ISUPPORTS_INHERITED NS_DECL_ISUPPORTS_INHERITED
// nsIAccessibleTableCell // nsIAccessibleTableCell
NS_DECL_NSIACCESSIBLETABLECELL NS_DECL_OR_FORWARD_NSIACCESSIBLETABLECELL_WITH_XPCACCESSIBLETABLECELL
// Accessible // Accessible
virtual void Shutdown();
virtual nsresult GetAttributesInternal(nsIPersistentProperties *aAttributes); virtual nsresult GetAttributesInternal(nsIPersistentProperties *aAttributes);
virtual a11y::role NativeRole(); virtual a11y::role NativeRole();
}; };

View File

@ -464,7 +464,7 @@ XULTreeGridCellAccessible::
XULTreeGridRowAccessible* aRowAcc, XULTreeGridRowAccessible* aRowAcc,
nsITreeBoxObject* aTree, nsITreeView* aTreeView, nsITreeBoxObject* aTree, nsITreeView* aTreeView,
PRInt32 aRow, nsITreeColumn* aColumn) : PRInt32 aRow, nsITreeColumn* aColumn) :
LeafAccessible(aContent, aDoc), mTree(aTree), LeafAccessible(aContent, aDoc), xpcAccessibleTableCell(this), mTree(aTree),
mTreeView(aTreeView), mRow(aRow), mColumn(aColumn) mTreeView(aTreeView), mRow(aRow), mColumn(aColumn)
{ {
mParent = aRowAcc; mParent = aRowAcc;
@ -498,6 +498,13 @@ NS_IMPL_RELEASE_INHERITED(XULTreeGridCellAccessible, LeafAccessible)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// XULTreeGridCellAccessible: nsIAccessible implementation // XULTreeGridCellAccessible: nsIAccessible implementation
void
XULTreeGridCellAccessible::Shutdown()
{
mTableCell = nsnull;
LeafAccessible::Shutdown();
}
Accessible* Accessible*
XULTreeGridCellAccessible::FocusedChild() XULTreeGridCellAccessible::FocusedChild()
{ {

View File

@ -8,7 +8,9 @@
#include "XULTreeAccessible.h" #include "XULTreeAccessible.h"
#include "TableAccessible.h" #include "TableAccessible.h"
#include "TableCellAccessible.h"
#include "xpcAccessibleTable.h" #include "xpcAccessibleTable.h"
#include "xpcAccessibleTableCell.h"
namespace mozilla { namespace mozilla {
namespace a11y { namespace a11y {
@ -120,7 +122,9 @@ protected:
} }
class XULTreeGridCellAccessible : public LeafAccessible, class XULTreeGridCellAccessible : public LeafAccessible,
public nsIAccessibleTableCell public nsIAccessibleTableCell,
public TableCellAccessible,
public xpcAccessibleTableCell
{ {
public: public:
@ -143,13 +147,14 @@ public:
NS_IMETHOD DoAction(PRUint8 aIndex); NS_IMETHOD DoAction(PRUint8 aIndex);
// nsIAccessibleTableCell // nsIAccessibleTableCell
NS_DECL_NSIACCESSIBLETABLECELL NS_DECL_OR_FORWARD_NSIACCESSIBLETABLECELL_WITH_XPCACCESSIBLETABLECELL
// nsAccessNode // nsAccessNode
virtual bool Init(); virtual bool Init();
virtual bool IsPrimaryForNode() const; virtual bool IsPrimaryForNode() const;
// Accessible // Accessible
virtual void Shutdown();
virtual ENameValueFlag Name(nsString& aName); virtual ENameValueFlag Name(nsString& aName);
virtual Accessible* FocusedChild(); virtual Accessible* FocusedChild();
virtual nsresult GetAttributesInternal(nsIPersistentProperties* aAttributes); virtual nsresult GetAttributesInternal(nsIPersistentProperties* aAttributes);