Changeset 111699 in webkit


Ignore:
Timestamp:
Mar 22, 2012 8:07:02 AM (12 years ago)
Author:
leviw@chromium.org
Message:

Correct LayoutUnit usage in Accessibility code
https://bugs.webkit.org/show_bug.cgi?id=81789

Reviewed by Eric Seidel.

Reverting Accessibility hit testing code back to integers. Accessibility hit tests originate from
the embedder and don't accumulate offsets, so we get nothing from using LayoutUnits, and needlessly
expose them to the embedder.

No new tests. No change in behavior.

  • accessibility/AccessibilityListBox.cpp:

(WebCore::AccessibilityListBox::elementAccessibilityHitTest): See above.

  • accessibility/AccessibilityListBox.h:

(AccessibilityListBox):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::clickPoint): This value is only ever used to display a context menu,
which is always done with integer coordinates.
(WebCore::AccessibilityObject::boundingBoxForQuads): This is a bounding box built from floats. We
don't pixel snap floats, so we return an integer bounding box.
(WebCore::AccessibilityObject::elementAccessibilityHitTest): See above.
(WebCore::AccessibilityObject::scrollToMakeVisible): Pixel snapping the bounding box and simplifying
up the code to position it at (0,0).

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::accessibilityHitTest): See above.
(AccessibilityObject):
(WebCore::AccessibilityObject::pixelSnappedBoundingBoxRect): Convenience method for embedder callers.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::visiblePositionForPoint): The point passed in here is comes from
screen coordinates and originates in embedder code. Reverting it to take an integer.
(WebCore::AccessibilityRenderObject::accessibilityImageMapHitTest): See above.
(WebCore::AccessibilityRenderObject::accessibilityHitTest): See above.

  • accessibility/AccessibilityRenderObject.h:

(AccessibilityRenderObject):

  • accessibility/AccessibilityScrollView.cpp:

(WebCore::AccessibilityScrollView::accessibilityHitTest): See above.

  • accessibility/AccessibilityScrollView.h:

(AccessibilityScrollView):

  • accessibility/AccessibilitySlider.cpp:

(WebCore::AccessibilitySlider::elementAccessibilityHitTest): See above.

  • accessibility/AccessibilitySlider.h:

(AccessibilitySlider):

Location:
trunk/Source/WebCore
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r111697 r111699  
     12012-03-22  Levi Weintraub  <leviw@chromium.org>
     2
     3        Correct LayoutUnit usage in Accessibility code
     4        https://bugs.webkit.org/show_bug.cgi?id=81789
     5
     6        Reviewed by Eric Seidel.
     7
     8        Reverting Accessibility hit testing code back to integers. Accessibility hit tests originate from
     9        the embedder and don't accumulate offsets, so we get nothing from using LayoutUnits, and needlessly
     10        expose them to the embedder.
     11
     12        No new tests. No change in behavior.
     13
     14        * accessibility/AccessibilityListBox.cpp:
     15        (WebCore::AccessibilityListBox::elementAccessibilityHitTest): See above.
     16        * accessibility/AccessibilityListBox.h:
     17        (AccessibilityListBox):
     18        * accessibility/AccessibilityObject.cpp:
     19        (WebCore::AccessibilityObject::clickPoint): This value is only ever used to display a context menu,
     20        which is always done with integer coordinates.
     21        (WebCore::AccessibilityObject::boundingBoxForQuads): This is a bounding box built from floats. We
     22        don't pixel snap floats, so we return an integer bounding box.
     23        (WebCore::AccessibilityObject::elementAccessibilityHitTest): See above.
     24        (WebCore::AccessibilityObject::scrollToMakeVisible): Pixel snapping the bounding box and simplifying
     25        up the code to position it at (0,0).
     26        * accessibility/AccessibilityObject.h:
     27        (WebCore::AccessibilityObject::accessibilityHitTest): See above.
     28        (AccessibilityObject):
     29        (WebCore::AccessibilityObject::pixelSnappedBoundingBoxRect): Convenience method for embedder callers.
     30        * accessibility/AccessibilityRenderObject.cpp:
     31        (WebCore::AccessibilityRenderObject::visiblePositionForPoint): The point passed in here is comes from
     32        screen coordinates and originates in embedder code. Reverting it to take an integer.
     33        (WebCore::AccessibilityRenderObject::accessibilityImageMapHitTest): See above.
     34        (WebCore::AccessibilityRenderObject::accessibilityHitTest): See above.
     35        * accessibility/AccessibilityRenderObject.h:
     36        (AccessibilityRenderObject):
     37        * accessibility/AccessibilityScrollView.cpp:
     38        (WebCore::AccessibilityScrollView::accessibilityHitTest): See above.
     39        * accessibility/AccessibilityScrollView.h:
     40        (AccessibilityScrollView):
     41        * accessibility/AccessibilitySlider.cpp:
     42        (WebCore::AccessibilitySlider::elementAccessibilityHitTest): See above.
     43        * accessibility/AccessibilitySlider.h:
     44        (AccessibilitySlider):
     45
    1462012-03-21  Ilya Tikhonovsky  <loislo@chromium.org>
    247
  • trunk/Source/WebCore/accessibility/AccessibilityListBox.cpp

    r97533 r111699  
    164164}
    165165
    166 AccessibilityObject* AccessibilityListBox::elementAccessibilityHitTest(const LayoutPoint& point) const
     166AccessibilityObject* AccessibilityListBox::elementAccessibilityHitTest(const IntPoint& point) const
    167167{
    168168    // the internal HTMLSelectElement methods for returning a listbox option at a point
  • trunk/Source/WebCore/accessibility/AccessibilityListBox.h

    r95901 r111699  
    5757    AccessibilityObject* listBoxOptionAccessibilityObject(HTMLElement*) const;
    5858    virtual bool accessibilityIsIgnored() const;
    59     virtual AccessibilityObject* elementAccessibilityHitTest(const LayoutPoint&) const;
     59    virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const;
    6060};
    6161   
  • trunk/Source/WebCore/accessibility/AccessibilityObject.cpp

    r110819 r111699  
    490490}
    491491
    492 LayoutPoint AccessibilityObject::clickPoint()
     492IntPoint AccessibilityObject::clickPoint()
    493493{
    494494    LayoutRect rect = elementRect();
    495     return LayoutPoint(rect.x() + rect.width() / 2, rect.y() + rect.height() / 2);
    496 }
    497 
    498 LayoutRect AccessibilityObject::boundingBoxForQuads(RenderObject* obj, const Vector<FloatQuad>& quads)
     495    return roundedIntPoint(LayoutPoint(rect.x() + rect.width() / 2, rect.y() + rect.height() / 2));
     496}
     497
     498IntRect AccessibilityObject::boundingBoxForQuads(RenderObject* obj, const Vector<FloatQuad>& quads)
    499499{
    500500    ASSERT(obj);
    501501    if (!obj)
    502         return LayoutRect();
     502        return IntRect();
    503503   
    504504    size_t count = quads.size();
    505505    if (!count)
    506         return LayoutRect();
    507    
    508     LayoutRect result;
     506        return IntRect();
     507   
     508    IntRect result;
    509509    for (size_t i = 0; i < count; ++i) {
    510         LayoutRect r = quads[i].enclosingBoundingBox();
     510        IntRect r = quads[i].enclosingBoundingBox();
    511511        if (!r.isEmpty()) {
    512512            if (obj->style()->hasAppearance())
     
    14671467}
    14681468
    1469 AccessibilityObject* AccessibilityObject::elementAccessibilityHitTest(const LayoutPoint& point) const
     1469AccessibilityObject* AccessibilityObject::elementAccessibilityHitTest(const IntPoint& point) const
    14701470{
    14711471    // Send the hit test back into the sub-frame if necessary.
     
    16201620void AccessibilityObject::scrollToMakeVisible() const
    16211621{
    1622     IntRect objectRect = boundingBoxRect();
    1623     objectRect.move(-objectRect.x(), -objectRect.y());
     1622    IntRect objectRect = pixelSnappedIntRect(boundingBoxRect());
     1623    objectRect.setLocation(IntPoint());
    16241624    scrollToMakeVisibleWithSubFocus(objectRect);
    16251625}
  • trunk/Source/WebCore/accessibility/AccessibilityObject.h

    r110828 r111699  
    462462   
    463463    // Called on the root AX object to return the deepest available element.
    464     virtual AccessibilityObject* accessibilityHitTest(const LayoutPoint&) const { return 0; }
     464    virtual AccessibilityObject* accessibilityHitTest(const IntPoint&) const { return 0; }
    465465    // Called on the AX object after the render tree determines which is the right AccessibilityRenderObject.
    466     virtual AccessibilityObject* elementAccessibilityHitTest(const LayoutPoint&) const;
     466    virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const;
    467467
    468468    virtual AccessibilityObject* focusedUIElement() const;
     
    504504    virtual Element* actionElement() const { return 0; }
    505505    virtual LayoutRect boundingBoxRect() const { return LayoutRect(); }
     506    IntRect pixelSnappedBoundingBoxRect() const { return pixelSnappedIntRect(boundingBoxRect()); }
    506507    virtual LayoutRect elementRect() const = 0;
    507508    virtual LayoutSize size() const { return elementRect().size(); }
    508     virtual LayoutPoint clickPoint();
    509     static LayoutRect boundingBoxForQuads(RenderObject*, const Vector<FloatQuad>&);
     509    virtual IntPoint clickPoint();
     510    static IntRect boundingBoxForQuads(RenderObject*, const Vector<FloatQuad>&);
    510511   
    511512    virtual PlainTextRange selectedTextRange() const { return PlainTextRange(); }
  • trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp

    r111030 r111699  
    26522652}
    26532653
    2654 VisiblePosition AccessibilityRenderObject::visiblePositionForPoint(const LayoutPoint& point) const
     2654VisiblePosition AccessibilityRenderObject::visiblePositionForPoint(const IntPoint& point) const
    26552655{
    26562656    if (!m_renderer)
     
    26772677        LayoutPoint ourpoint;
    26782678#if PLATFORM(MAC)
    2679         ourpoint = frameView->screenToContents(roundedIntPoint(point));
     2679        ourpoint = frameView->screenToContents(point);
    26802680#else
    26812681        ourpoint = point;
     
    28202820}
    28212821
    2822 AccessibilityObject* AccessibilityRenderObject::accessibilityImageMapHitTest(HTMLAreaElement* area, const LayoutPoint& point) const
     2822AccessibilityObject* AccessibilityRenderObject::accessibilityImageMapHitTest(HTMLAreaElement* area, const IntPoint& point) const
    28232823{
    28242824    if (!area)
     
    28562856
    28572857    if (node->hasTagName(areaTag))
    2858         return accessibilityImageMapHitTest(static_cast<HTMLAreaElement*>(node), roundedIntPoint(point));
     2858        return accessibilityImageMapHitTest(static_cast<HTMLAreaElement*>(node), point);
    28592859   
    28602860    if (node->hasTagName(optionTag))
  • trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h

    r110819 r111699  
    155155   
    156156    // Should be called on the root accessibility object to kick off a hit test.
    157     virtual AccessibilityObject* accessibilityHitTest(const LayoutPoint&) const;
     157    virtual AccessibilityObject* accessibilityHitTest(const IntPoint&) const;
    158158
    159159    virtual Element* actionElement() const;
     
    240240    virtual void determineARIADropEffects(Vector<String>&);
    241241   
    242     virtual VisiblePosition visiblePositionForPoint(const LayoutPoint&) const;
     242    virtual VisiblePosition visiblePositionForPoint(const IntPoint&) const;
    243243    virtual VisiblePosition visiblePositionForIndex(unsigned indexValue, bool lastIndexOK) const;   
    244244    virtual int index(const VisiblePosition&) const;
  • trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp

    r105295 r111699  
    164164}
    165165
    166 AccessibilityObject* AccessibilityScrollView::accessibilityHitTest(const LayoutPoint& point) const
     166AccessibilityObject* AccessibilityScrollView::accessibilityHitTest(const IntPoint& point) const
    167167{
    168168    AccessibilityObject* webArea = webAreaObject();
  • trunk/Source/WebCore/accessibility/AccessibilityScrollView.h

    r105295 r111699  
    5858    virtual void addChildren();
    5959    virtual void clearChildren();
    60     virtual AccessibilityObject* accessibilityHitTest(const LayoutPoint&) const;
     60    virtual AccessibilityObject* accessibilityHitTest(const IntPoint&) const;
    6161    virtual void updateChildrenIfNecessary();
    6262    virtual void setNeedsToUpdateChildren() { m_childrenDirty = true; }
  • trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp

    r109231 r111699  
    103103}
    104104   
    105 AccessibilityObject* AccessibilitySlider::elementAccessibilityHitTest(const LayoutPoint& point) const
     105AccessibilityObject* AccessibilitySlider::elementAccessibilityHitTest(const IntPoint& point) const
    106106{
    107107    if (m_children.size()) {
  • trunk/Source/WebCore/accessibility/AccessibilitySlider.h

    r106884 r111699  
    4949    HTMLInputElement* element() const;
    5050    virtual bool accessibilityIsIgnored() const;
    51     virtual AccessibilityObject* elementAccessibilityHitTest(const LayoutPoint&) const;
     51    virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const;
    5252
    5353    virtual AccessibilityRole roleValue() const { return SliderRole; }   
Note: See TracChangeset for help on using the changeset viewer.