18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Apple Inc. All rights reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1.  Redistributions of source code must retain the above copyright
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     notice, this list of conditions and the following disclaimer.
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2.  Redistributions in binary form must reproduce the above copyright
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     notice, this list of conditions and the following disclaimer in the
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     documentation and/or other materials provided with the distribution.
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     its contributors may be used to endorse or promote products derived
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     from this software without specific prior written permission.
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef AccessibilityTable_h
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define AccessibilityTable_h
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "AccessibilityRenderObject.h"
33dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <wtf/Forward.h>
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
355f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#if PLATFORM(MAC) && (defined(BUILDING_ON_TIGER) || defined(BUILDING_ON_LEOPARD))
365f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#define ACCESSIBILITY_TABLES 0
375f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#else
385f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#define ACCESSIBILITY_TABLES 1
395f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif
405f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass AccessibilityTableCell;
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass AccessibilityTableHeaderContainer;
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass AccessibilityTable : public AccessibilityRenderObject {
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
485f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianprotected:
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AccessibilityTable(RenderObject*);
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    static PassRefPtr<AccessibilityTable> create(RenderObject*);
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual ~AccessibilityTable();
53dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
54e14391e94c850b8bd03680c23b38978db68687a8John Reck    virtual bool isAccessibilityTable() const;
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool isDataTable() const;
56e14391e94c850b8bd03680c23b38978db68687a8John Reck
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual AccessibilityRole roleValue() const;
585f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    virtual bool isAriaTable() const { return false; }
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual bool accessibilityIsIgnored() const;
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void addChildren();
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual void clearChildren();
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AccessibilityChildrenVector& columns();
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AccessibilityChildrenVector& rows();
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
68d0825bca7fe65beaee391d30da42e937db621564Steve Block    virtual bool supportsSelectedRows() { return false; }
695f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    unsigned columnCount();
705f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    unsigned rowCount();
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    virtual String title() const;
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // all the cells in the table
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void cells(AccessibilityChildrenVector&);
765f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian    virtual AccessibilityTableCell* cellForColumnAndRow(unsigned column, unsigned row);
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void columnHeaders(AccessibilityChildrenVector&);
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    void rowHeaders(AccessibilityChildrenVector&);
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    // an object that contains, as children, all the objects that act as headers
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AccessibilityObject* headerContainer();
83dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
84dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochprotected:
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AccessibilityChildrenVector m_rows;
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AccessibilityChildrenVector m_columns;
87dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    AccessibilityTableHeaderContainer* m_headerContainer;
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    mutable bool m_isAccessibilityTable;
90dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
91e14391e94c850b8bd03680c23b38978db68687a8John Reck    bool hasARIARole() const;
92e14391e94c850b8bd03680c23b38978db68687a8John Reck    bool isTableExposableThroughAccessibility() const;
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
94dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // AccessibilityTable_h
98