mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
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:
parent
f537e09f60
commit
ba6eb75773
@ -531,7 +531,7 @@ ARIAGridAccessible::SetARIASelected(Accessible* aAccessible,
|
||||
|
||||
ARIAGridCellAccessible::
|
||||
ARIAGridCellAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
HyperTextAccessibleWrap(aContent, aDoc)
|
||||
HyperTextAccessibleWrap(aContent, aDoc), xpcAccessibleTableCell(this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -789,3 +789,10 @@ ARIAGridCellAccessible::GetAttributesInternal(nsIPersistentProperties* aAttribut
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
ARIAGridCellAccessible::Shutdown()
|
||||
{
|
||||
mTableCell = nsnull;
|
||||
HyperTextAccessibleWrap::Shutdown();
|
||||
}
|
||||
|
@ -10,7 +10,9 @@
|
||||
|
||||
#include "HyperTextAccessibleWrap.h"
|
||||
#include "TableAccessible.h"
|
||||
#include "TableCellAccessible.h"
|
||||
#include "xpcAccessibleTable.h"
|
||||
#include "xpcAccessibleTableCell.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace a11y {
|
||||
@ -95,7 +97,9 @@ protected:
|
||||
* Accessible for ARIA gridcell and rowheader/columnheader.
|
||||
*/
|
||||
class ARIAGridCellAccessible : public HyperTextAccessibleWrap,
|
||||
public nsIAccessibleTableCell
|
||||
public nsIAccessibleTableCell,
|
||||
public TableCellAccessible,
|
||||
public xpcAccessibleTableCell
|
||||
{
|
||||
public:
|
||||
ARIAGridCellAccessible(nsIContent* aContent, DocAccessible* aDoc);
|
||||
@ -104,9 +108,10 @@ public:
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
// nsIAccessibleTableCell
|
||||
NS_DECL_NSIACCESSIBLETABLECELL
|
||||
NS_DECL_OR_FORWARD_NSIACCESSIBLETABLECELL_WITH_XPCACCESSIBLETABLECELL
|
||||
|
||||
// Accessible
|
||||
virtual void Shutdown();
|
||||
virtual void ApplyARIAState(PRUint64* aState) const;
|
||||
virtual nsresult GetAttributesInternal(nsIPersistentProperties *aAttributes);
|
||||
};
|
||||
|
71
accessible/src/generic/TableCellAccessible.h
Normal file
71
accessible/src/generic/TableCellAccessible.h
Normal 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__
|
@ -45,7 +45,7 @@ using namespace mozilla::a11y;
|
||||
|
||||
HTMLTableCellAccessible::
|
||||
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
|
||||
|
||||
void
|
||||
HTMLTableCellAccessible::Shutdown()
|
||||
{
|
||||
mTableCell = nsnull;
|
||||
HyperTextAccessibleWrap::Shutdown();
|
||||
}
|
||||
|
||||
role
|
||||
HTMLTableCellAccessible::NativeRole()
|
||||
{
|
||||
|
@ -9,7 +9,9 @@
|
||||
#include "HyperTextAccessibleWrap.h"
|
||||
#include "nsIAccessibleTable.h"
|
||||
#include "TableAccessible.h"
|
||||
#include "TableCellAccessible.h"
|
||||
#include "xpcAccessibleTable.h"
|
||||
#include "xpcAccessibleTableCell.h"
|
||||
|
||||
class nsITableLayout;
|
||||
class nsITableCellLayout;
|
||||
@ -21,7 +23,9 @@ namespace a11y {
|
||||
* HTML table cell accessible (html:td).
|
||||
*/
|
||||
class HTMLTableCellAccessible : public HyperTextAccessibleWrap,
|
||||
public nsIAccessibleTableCell
|
||||
public nsIAccessibleTableCell,
|
||||
public TableCellAccessible,
|
||||
public xpcAccessibleTableCell
|
||||
{
|
||||
public:
|
||||
HTMLTableCellAccessible(nsIContent* aContent, DocAccessible* aDoc);
|
||||
@ -30,9 +34,10 @@ public:
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
// nsIAccessibleTableCell
|
||||
NS_DECL_NSIACCESSIBLETABLECELL
|
||||
NS_DECL_OR_FORWARD_NSIACCESSIBLETABLECELL_WITH_XPCACCESSIBLETABLECELL
|
||||
|
||||
// Accessible
|
||||
virtual void Shutdown();
|
||||
virtual a11y::role NativeRole();
|
||||
virtual PRUint64 NativeState();
|
||||
virtual PRUint64 NativeInteractiveState() const;
|
||||
|
37
accessible/src/xpcom/xpcAccessibleTableCell.h
Normal file
37
accessible/src/xpcom/xpcAccessibleTableCell.h
Normal 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_
|
@ -727,7 +727,7 @@ XULListitemAccessible::ContainerWidget() const
|
||||
|
||||
XULListCellAccessible::
|
||||
XULListCellAccessible(nsIContent* aContent, DocAccessible* aDoc) :
|
||||
HyperTextAccessibleWrap(aContent, aDoc)
|
||||
HyperTextAccessibleWrap(aContent, aDoc), xpcAccessibleTableCell(this)
|
||||
{
|
||||
}
|
||||
|
||||
@ -934,6 +934,13 @@ XULListCellAccessible::IsSelected(bool* aIsSelected)
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// XULListCellAccessible. Accessible implementation
|
||||
|
||||
void
|
||||
XULListCellAccessible::Shutdown()
|
||||
{
|
||||
mTableCell = nsnull;
|
||||
HyperTextAccessibleWrap::Shutdown();
|
||||
}
|
||||
|
||||
role
|
||||
XULListCellAccessible::NativeRole()
|
||||
{
|
||||
|
@ -9,7 +9,9 @@
|
||||
#include "BaseAccessibles.h"
|
||||
#include "nsIAccessibleTable.h"
|
||||
#include "TableAccessible.h"
|
||||
#include "TableCellAccessible.h"
|
||||
#include "xpcAccessibleTable.h"
|
||||
#include "xpcAccessibleTableCell.h"
|
||||
#include "XULMenuAccessible.h"
|
||||
#include "XULSelectControlAccessible.h"
|
||||
|
||||
@ -151,7 +153,9 @@ private:
|
||||
* Class represents xul:listcell.
|
||||
*/
|
||||
class XULListCellAccessible : public HyperTextAccessibleWrap,
|
||||
public nsIAccessibleTableCell
|
||||
public nsIAccessibleTableCell,
|
||||
public TableCellAccessible,
|
||||
public xpcAccessibleTableCell
|
||||
{
|
||||
public:
|
||||
XULListCellAccessible(nsIContent* aContent, DocAccessible* aDoc);
|
||||
@ -160,9 +164,10 @@ public:
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
// nsIAccessibleTableCell
|
||||
NS_DECL_NSIACCESSIBLETABLECELL
|
||||
NS_DECL_OR_FORWARD_NSIACCESSIBLETABLECELL_WITH_XPCACCESSIBLETABLECELL
|
||||
|
||||
// Accessible
|
||||
virtual void Shutdown();
|
||||
virtual nsresult GetAttributesInternal(nsIPersistentProperties *aAttributes);
|
||||
virtual a11y::role NativeRole();
|
||||
};
|
||||
|
@ -464,7 +464,7 @@ XULTreeGridCellAccessible::
|
||||
XULTreeGridRowAccessible* aRowAcc,
|
||||
nsITreeBoxObject* aTree, nsITreeView* aTreeView,
|
||||
PRInt32 aRow, nsITreeColumn* aColumn) :
|
||||
LeafAccessible(aContent, aDoc), mTree(aTree),
|
||||
LeafAccessible(aContent, aDoc), xpcAccessibleTableCell(this), mTree(aTree),
|
||||
mTreeView(aTreeView), mRow(aRow), mColumn(aColumn)
|
||||
{
|
||||
mParent = aRowAcc;
|
||||
@ -498,6 +498,13 @@ NS_IMPL_RELEASE_INHERITED(XULTreeGridCellAccessible, LeafAccessible)
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// XULTreeGridCellAccessible: nsIAccessible implementation
|
||||
|
||||
void
|
||||
XULTreeGridCellAccessible::Shutdown()
|
||||
{
|
||||
mTableCell = nsnull;
|
||||
LeafAccessible::Shutdown();
|
||||
}
|
||||
|
||||
Accessible*
|
||||
XULTreeGridCellAccessible::FocusedChild()
|
||||
{
|
||||
|
@ -8,7 +8,9 @@
|
||||
|
||||
#include "XULTreeAccessible.h"
|
||||
#include "TableAccessible.h"
|
||||
#include "TableCellAccessible.h"
|
||||
#include "xpcAccessibleTable.h"
|
||||
#include "xpcAccessibleTableCell.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace a11y {
|
||||
@ -120,7 +122,9 @@ protected:
|
||||
}
|
||||
|
||||
class XULTreeGridCellAccessible : public LeafAccessible,
|
||||
public nsIAccessibleTableCell
|
||||
public nsIAccessibleTableCell,
|
||||
public TableCellAccessible,
|
||||
public xpcAccessibleTableCell
|
||||
{
|
||||
public:
|
||||
|
||||
@ -143,13 +147,14 @@ public:
|
||||
NS_IMETHOD DoAction(PRUint8 aIndex);
|
||||
|
||||
// nsIAccessibleTableCell
|
||||
NS_DECL_NSIACCESSIBLETABLECELL
|
||||
NS_DECL_OR_FORWARD_NSIACCESSIBLETABLECELL_WITH_XPCACCESSIBLETABLECELL
|
||||
|
||||
// nsAccessNode
|
||||
virtual bool Init();
|
||||
virtual bool IsPrimaryForNode() const;
|
||||
|
||||
// Accessible
|
||||
virtual void Shutdown();
|
||||
virtual ENameValueFlag Name(nsString& aName);
|
||||
virtual Accessible* FocusedChild();
|
||||
virtual nsresult GetAttributesInternal(nsIPersistentProperties* aAttributes);
|
||||
|
Loading…
Reference in New Issue
Block a user