| Index: third_party/WebKit/Source/modules/accessibility/AXScrollView.cpp
|
| diff --git a/third_party/WebKit/Source/modules/accessibility/AXScrollView.cpp b/third_party/WebKit/Source/modules/accessibility/AXScrollView.cpp
|
| deleted file mode 100644
|
| index e4cd6c2d8df26405a041fd431783f2f462fcc199..0000000000000000000000000000000000000000
|
| --- a/third_party/WebKit/Source/modules/accessibility/AXScrollView.cpp
|
| +++ /dev/null
|
| @@ -1,264 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2011 Apple Inc. All rights reserved.
|
| - *
|
| - * Redistribution and use in source and binary forms, with or without
|
| - * modification, are permitted provided that the following conditions
|
| - * are met:
|
| - *
|
| - * 1. Redistributions of source code must retain the above copyright
|
| - * notice, this list of conditions and the following disclaimer.
|
| - * 2. Redistributions in binary form must reproduce the above copyright
|
| - * notice, this list of conditions and the following disclaimer in the
|
| - * documentation and/or other materials provided with the distribution.
|
| - *
|
| - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
|
| - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
| - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
| - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
|
| - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
| - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
| - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
| - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
| - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| - */
|
| -
|
| -#include "config.h"
|
| -#include "modules/accessibility/AXScrollView.h"
|
| -
|
| -#include "core/frame/FrameView.h"
|
| -#include "core/frame/LocalFrame.h"
|
| -#include "core/html/HTMLFrameOwnerElement.h"
|
| -#include "modules/accessibility/AXObjectCacheImpl.h"
|
| -#include "modules/accessibility/AXScrollbar.h"
|
| -
|
| -namespace blink {
|
| -
|
| -AXScrollView::AXScrollView(FrameView* view, AXObjectCacheImpl& axObjectCache)
|
| - : AXObject(axObjectCache)
|
| - , m_scrollView(view)
|
| - , m_childrenDirty(false)
|
| -{
|
| -}
|
| -
|
| -AXScrollView::~AXScrollView()
|
| -{
|
| - ASSERT(!m_scrollView);
|
| -}
|
| -
|
| -void AXScrollView::detach()
|
| -{
|
| - AXObject::detach();
|
| - m_scrollView = nullptr;
|
| -}
|
| -
|
| -AXScrollView* AXScrollView::create(FrameView* view, AXObjectCacheImpl& axObjectCache)
|
| -{
|
| - return new AXScrollView(view, axObjectCache);
|
| -}
|
| -
|
| -AXObject* AXScrollView::scrollBar(AccessibilityOrientation orientation)
|
| -{
|
| - updateScrollbars();
|
| -
|
| - switch (orientation) {
|
| - case AccessibilityOrientationVertical:
|
| - return m_verticalScrollbar ? m_verticalScrollbar.get() : 0;
|
| - case AccessibilityOrientationHorizontal:
|
| - return m_horizontalScrollbar ? m_horizontalScrollbar.get() : 0;
|
| - case AccessibilityOrientationUndefined:
|
| - return 0;
|
| - }
|
| -
|
| - return 0;
|
| -}
|
| -
|
| -// If this is WebKit1 then the native scroll view needs to return the
|
| -// AX information (because there are no scroll bar children in the FrameView object in WK1).
|
| -// In WebKit2, the FrameView object will return the AX information (because there are no platform widgets).
|
| -bool AXScrollView::isAttachment() const
|
| -{
|
| - return false;
|
| -}
|
| -
|
| -Widget* AXScrollView::widgetForAttachmentView() const
|
| -{
|
| - return m_scrollView;
|
| -}
|
| -
|
| -void AXScrollView::updateChildrenIfNecessary()
|
| -{
|
| - if (m_childrenDirty)
|
| - clearChildren();
|
| -
|
| - if (!m_haveChildren)
|
| - addChildren();
|
| -
|
| - updateScrollbars();
|
| -}
|
| -
|
| -void AXScrollView::updateScrollbars()
|
| -{
|
| - if (!m_scrollView)
|
| - return;
|
| -
|
| - if (m_scrollView->horizontalScrollbar() && !m_horizontalScrollbar) {
|
| - m_horizontalScrollbar = addChildScrollbar(m_scrollView->horizontalScrollbar());
|
| - } else if (!m_scrollView->horizontalScrollbar() && m_horizontalScrollbar) {
|
| - removeChildScrollbar(m_horizontalScrollbar.get());
|
| - m_horizontalScrollbar = nullptr;
|
| - }
|
| -
|
| - if (m_scrollView->verticalScrollbar() && !m_verticalScrollbar) {
|
| - m_verticalScrollbar = addChildScrollbar(m_scrollView->verticalScrollbar());
|
| - } else if (!m_scrollView->verticalScrollbar() && m_verticalScrollbar) {
|
| - removeChildScrollbar(m_verticalScrollbar.get());
|
| - m_verticalScrollbar = nullptr;
|
| - }
|
| -}
|
| -
|
| -void AXScrollView::removeChildScrollbar(AXObject* scrollbar)
|
| -{
|
| - size_t pos = m_children.find(scrollbar);
|
| - if (pos != kNotFound) {
|
| - m_children[pos]->detachFromParent();
|
| - m_children.remove(pos);
|
| - }
|
| -}
|
| -
|
| -AXScrollbar* AXScrollView::addChildScrollbar(Scrollbar* scrollbar)
|
| -{
|
| - if (!scrollbar)
|
| - return 0;
|
| -
|
| - AXScrollbar* scrollBarObject = toAXScrollbar(axObjectCache().getOrCreate(scrollbar));
|
| - scrollBarObject->setParent(this);
|
| - m_children.append(scrollBarObject);
|
| - return scrollBarObject;
|
| -}
|
| -
|
| -void AXScrollView::clearChildren()
|
| -{
|
| - AXObject::clearChildren();
|
| - m_verticalScrollbar = nullptr;
|
| - m_horizontalScrollbar = nullptr;
|
| -}
|
| -
|
| -bool AXScrollView::computeAccessibilityIsIgnored(IgnoredReasons* ignoredReasons) const
|
| -{
|
| - // We just want to match whatever's returned by our web area, which is a child of this
|
| - // object. Normally cached attribute values may only search up the tree. We can't just
|
| - // call accessibilityIsIgnored on the web area, because the web area may search up its
|
| - // ancestors and call this function recursively, and we'd loop until a stack overflow.
|
| -
|
| - // Instead, we first update the cached accessibilityIsIgnored value for this node to
|
| - // false, call accessibilityIsIgnored on the web area, then return the mathcing value.
|
| - m_cachedIsIgnored = false;
|
| - m_lastModificationCount = axObjectCache().modificationCount();
|
| -
|
| - AXObject* webArea = webAreaObject();
|
| - if (!webArea)
|
| - return true;
|
| -
|
| - if (!webArea->accessibilityIsIgnored())
|
| - return false;
|
| -
|
| - if (ignoredReasons)
|
| - return webArea->computeAccessibilityIsIgnored(ignoredReasons);
|
| -
|
| - return true;
|
| -}
|
| -
|
| -void AXScrollView::addChildren()
|
| -{
|
| - ASSERT(!m_haveChildren);
|
| - m_haveChildren = true;
|
| -
|
| - AXObject* webArea = webAreaObject();
|
| - if (webArea && !webArea->accessibilityIsIgnored())
|
| - m_children.append(webArea);
|
| -
|
| - updateScrollbars();
|
| -}
|
| -
|
| -AXObject* AXScrollView::webAreaObject() const
|
| -{
|
| - if (!m_scrollView || !m_scrollView->isFrameView())
|
| - return 0;
|
| -
|
| - Document* doc = m_scrollView->frame().document();
|
| - if (!doc || !doc->layoutView())
|
| - return 0;
|
| -
|
| - return axObjectCache().getOrCreate(doc);
|
| -}
|
| -
|
| -AXObject* AXScrollView::accessibilityHitTest(const IntPoint& point) const
|
| -{
|
| - AXObject* webArea = webAreaObject();
|
| - if (!webArea)
|
| - return 0;
|
| -
|
| - if (m_horizontalScrollbar && m_horizontalScrollbar->elementRect().contains(point))
|
| - return m_horizontalScrollbar.get();
|
| - if (m_verticalScrollbar && m_verticalScrollbar->elementRect().contains(point))
|
| - return m_verticalScrollbar.get();
|
| -
|
| - return webArea->accessibilityHitTest(point);
|
| -}
|
| -
|
| -LayoutRect AXScrollView::elementRect() const
|
| -{
|
| - if (!m_scrollView)
|
| - return LayoutRect();
|
| -
|
| - return LayoutRect(m_scrollView->frameRect());
|
| -}
|
| -
|
| -FrameView* AXScrollView::documentFrameView() const
|
| -{
|
| - if (!m_scrollView || !m_scrollView->isFrameView())
|
| - return 0;
|
| -
|
| - return m_scrollView;
|
| -}
|
| -
|
| -AXObject* AXScrollView::computeParent() const
|
| -{
|
| - if (!m_scrollView || !m_scrollView->isFrameView())
|
| - return 0;
|
| -
|
| - // FIXME: Broken for OOPI.
|
| - HTMLFrameOwnerElement* owner = m_scrollView->frame().deprecatedLocalOwner();
|
| - if (owner && owner->layoutObject())
|
| - return axObjectCache().getOrCreate(owner);
|
| -
|
| - return axObjectCache().getOrCreate(m_scrollView->frame().pagePopupOwner());
|
| -}
|
| -
|
| -AXObject* AXScrollView::computeParentIfExists() const
|
| -{
|
| - if (!m_scrollView || !m_scrollView->isFrameView())
|
| - return 0;
|
| -
|
| - HTMLFrameOwnerElement* owner = m_scrollView->frame().deprecatedLocalOwner();
|
| - if (owner && owner->layoutObject())
|
| - return axObjectCache().get(owner);
|
| -
|
| - return axObjectCache().get(m_scrollView->frame().pagePopupOwner());
|
| -}
|
| -
|
| -ScrollableArea* AXScrollView::getScrollableAreaIfScrollable() const
|
| -{
|
| - return m_scrollView;
|
| -}
|
| -
|
| -DEFINE_TRACE(AXScrollView)
|
| -{
|
| - visitor->trace(m_scrollView);
|
| - visitor->trace(m_horizontalScrollbar);
|
| - visitor->trace(m_verticalScrollbar);
|
| - AXObject::trace(visitor);
|
| -}
|
| -
|
| -} // namespace blink
|
|
|