This source file includes following definitions.
- create
 
- determineAccessibilityRole
 
- isTableRow
 
- observableObject
 
- computeAccessibilityIsIgnored
 
- parentTable
 
- headerObject
 
#include "config.h"
#include "core/accessibility/AXTableRow.h"
#include "core/accessibility/AXTableCell.h"
#include "core/rendering/RenderTableRow.h"
namespace WebCore {
using namespace HTMLNames;
AXTableRow::AXTableRow(RenderObject* renderer)
    : AXRenderObject(renderer)
{
}
AXTableRow::~AXTableRow()
{
}
PassRefPtr<AXTableRow> AXTableRow::create(RenderObject* renderer)
{
    return adoptRef(new AXTableRow(renderer));
}
AccessibilityRole AXTableRow::determineAccessibilityRole()
{
    if (!isTableRow())
        return AXRenderObject::determineAccessibilityRole();
    m_ariaRole = determineAriaRoleAttribute();
    AccessibilityRole ariaRole = ariaRoleAttribute();
    if (ariaRole != UnknownRole)
        return ariaRole;
    return RowRole;
}
bool AXTableRow::isTableRow() const
{
    AXObject* table = parentTable();
    if (!table || !table->isAXTable())
        return false;
    return true;
}
AXObject* AXTableRow::observableObject() const
{
    
    return parentTable();
}
bool AXTableRow::computeAccessibilityIsIgnored() const
{
    AXObjectInclusion decision = defaultObjectInclusion();
    if (decision == IncludeObject)
        return false;
    if (decision == IgnoreObject)
        return true;
    if (!isTableRow())
        return AXRenderObject::computeAccessibilityIsIgnored();
    return false;
}
AXObject* AXTableRow::parentTable() const
{
    AXObject* parent = parentObjectUnignored();
    if (!parent || !parent->isAXTable())
        return 0;
    return parent;
}
AXObject* AXTableRow::headerObject()
{
    if (!m_renderer || !m_renderer->isTableRow())
        return 0;
    AccessibilityChildrenVector rowChildren = children();
    if (!rowChildren.size())
        return 0;
    
    AXObject* cell = rowChildren[0].get();
    if (!cell->isTableCell())
        return 0;
    RenderObject* cellRenderer = toAXTableCell(cell)->renderer();
    if (!cellRenderer)
        return 0;
    Node* cellNode = cellRenderer->node();
    if (!cellNode || !cellNode->hasTagName(thTag))
        return 0;
    return cell;
}
}