AccessibilityScrollView.h revision 2fc2651226baac27029e38c9d6ef883fa32084db
1d0825bca7fe65beaee391d30da42e937db621564Steve Block/* 2d0825bca7fe65beaee391d30da42e937db621564Steve Block * Copyright (C) 2011 Apple Inc. All rights reserved. 3d0825bca7fe65beaee391d30da42e937db621564Steve Block * 4d0825bca7fe65beaee391d30da42e937db621564Steve Block * Redistribution and use in source and binary forms, with or without 5d0825bca7fe65beaee391d30da42e937db621564Steve Block * modification, are permitted provided that the following conditions 6d0825bca7fe65beaee391d30da42e937db621564Steve Block * are met: 7d0825bca7fe65beaee391d30da42e937db621564Steve Block * 8d0825bca7fe65beaee391d30da42e937db621564Steve Block * 1. Redistributions of source code must retain the above copyright 9d0825bca7fe65beaee391d30da42e937db621564Steve Block * notice, this list of conditions and the following disclaimer. 10d0825bca7fe65beaee391d30da42e937db621564Steve Block * 2. Redistributions in binary form must reproduce the above copyright 11d0825bca7fe65beaee391d30da42e937db621564Steve Block * notice, this list of conditions and the following disclaimer in the 12d0825bca7fe65beaee391d30da42e937db621564Steve Block * documentation and/or other materials provided with the distribution. 13d0825bca7fe65beaee391d30da42e937db621564Steve Block * 14d0825bca7fe65beaee391d30da42e937db621564Steve Block * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 15d0825bca7fe65beaee391d30da42e937db621564Steve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 16d0825bca7fe65beaee391d30da42e937db621564Steve Block * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 17d0825bca7fe65beaee391d30da42e937db621564Steve Block * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 18d0825bca7fe65beaee391d30da42e937db621564Steve Block * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 19d0825bca7fe65beaee391d30da42e937db621564Steve Block * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 20d0825bca7fe65beaee391d30da42e937db621564Steve Block * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 21d0825bca7fe65beaee391d30da42e937db621564Steve Block * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22d0825bca7fe65beaee391d30da42e937db621564Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23d0825bca7fe65beaee391d30da42e937db621564Steve Block * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24d0825bca7fe65beaee391d30da42e937db621564Steve Block */ 25d0825bca7fe65beaee391d30da42e937db621564Steve Block 26d0825bca7fe65beaee391d30da42e937db621564Steve Block#ifndef AccessibilityScrollView_h 27d0825bca7fe65beaee391d30da42e937db621564Steve Block#define AccessibilityScrollView_h 28d0825bca7fe65beaee391d30da42e937db621564Steve Block 29d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "AccessibilityObject.h" 30d0825bca7fe65beaee391d30da42e937db621564Steve Block 31d0825bca7fe65beaee391d30da42e937db621564Steve Blocknamespace WebCore { 32d0825bca7fe65beaee391d30da42e937db621564Steve Block 33d0825bca7fe65beaee391d30da42e937db621564Steve Blockclass AccessibilityScrollbar; 34d0825bca7fe65beaee391d30da42e937db621564Steve Blockclass Scrollbar; 35d0825bca7fe65beaee391d30da42e937db621564Steve Blockclass ScrollView; 36d0825bca7fe65beaee391d30da42e937db621564Steve Block 37d0825bca7fe65beaee391d30da42e937db621564Steve Blockclass AccessibilityScrollView : public AccessibilityObject { 38d0825bca7fe65beaee391d30da42e937db621564Steve Blockpublic: 39d0825bca7fe65beaee391d30da42e937db621564Steve Block static PassRefPtr<AccessibilityScrollView> create(ScrollView*); 40d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual AccessibilityRole roleValue() const { return ScrollAreaRole; } 41d0825bca7fe65beaee391d30da42e937db621564Steve Block ScrollView* scrollView() const { return m_scrollView.get(); } 42d0825bca7fe65beaee391d30da42e937db621564Steve Block 43d0825bca7fe65beaee391d30da42e937db621564Steve Blockprivate: 44d0825bca7fe65beaee391d30da42e937db621564Steve Block AccessibilityScrollView(ScrollView*); 45d0825bca7fe65beaee391d30da42e937db621564Steve Block 46d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool accessibilityIsIgnored() const { return false; } 47d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual bool isAccessibilityScrollView() const { return true; } 48d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual AccessibilityObject* scrollBar(AccessibilityOrientation) const; 49d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual void addChildren(); 50d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual AccessibilityObject* accessibilityHitTest(const IntPoint&) const; 51d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual const AccessibilityChildrenVector& children(); 52d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual void updateChildrenIfNecessary(); 53d0825bca7fe65beaee391d30da42e937db621564Steve Block 54d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual FrameView* documentFrameView() const; 55d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual IntRect elementRect() const; 56d0825bca7fe65beaee391d30da42e937db621564Steve Block virtual AccessibilityObject* parentObject() const; 57d0825bca7fe65beaee391d30da42e937db621564Steve Block 58d0825bca7fe65beaee391d30da42e937db621564Steve Block AccessibilityObject* webAreaObject() const; 59d0825bca7fe65beaee391d30da42e937db621564Steve Block AccessibilityScrollbar* addChildScrollbar(Scrollbar*); 60d0825bca7fe65beaee391d30da42e937db621564Steve Block void removeChildScrollbar(AccessibilityObject*); 61d0825bca7fe65beaee391d30da42e937db621564Steve Block 62d0825bca7fe65beaee391d30da42e937db621564Steve Block RefPtr<ScrollView> m_scrollView; 63d0825bca7fe65beaee391d30da42e937db621564Steve Block RefPtr<AccessibilityObject> m_horizontalScrollbar; 64d0825bca7fe65beaee391d30da42e937db621564Steve Block RefPtr<AccessibilityObject> m_verticalScrollbar; 65d0825bca7fe65beaee391d30da42e937db621564Steve Block}; 66d0825bca7fe65beaee391d30da42e937db621564Steve Block 67d0825bca7fe65beaee391d30da42e937db621564Steve Blockinline AccessibilityScrollView* toAccessibilityScrollView(AccessibilityObject* object) 68d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 69d0825bca7fe65beaee391d30da42e937db621564Steve Block ASSERT(!object || object->isAccessibilityScrollView()); 70d0825bca7fe65beaee391d30da42e937db621564Steve Block if (!object->isAccessibilityScrollView()) 71d0825bca7fe65beaee391d30da42e937db621564Steve Block return 0; 72d0825bca7fe65beaee391d30da42e937db621564Steve Block 73d0825bca7fe65beaee391d30da42e937db621564Steve Block return static_cast<AccessibilityScrollView*>(object); 74d0825bca7fe65beaee391d30da42e937db621564Steve Block} 75d0825bca7fe65beaee391d30da42e937db621564Steve Block 76d0825bca7fe65beaee391d30da42e937db621564Steve Block} // namespace WebCore 77d0825bca7fe65beaee391d30da42e937db621564Steve Block 78d0825bca7fe65beaee391d30da42e937db621564Steve Block#endif // AccessibilityScrollView_h 79d0825bca7fe65beaee391d30da42e937db621564Steve Block 80d0825bca7fe65beaee391d30da42e937db621564Steve Block