Changeset 111699 in webkit
- Timestamp:
- Mar 22, 2012 8:07:02 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r111697 r111699 1 2012-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 1 46 2012-03-21 Ilya Tikhonovsky <loislo@chromium.org> 2 47 -
trunk/Source/WebCore/accessibility/AccessibilityListBox.cpp
r97533 r111699 164 164 } 165 165 166 AccessibilityObject* AccessibilityListBox::elementAccessibilityHitTest(const LayoutPoint& point) const166 AccessibilityObject* AccessibilityListBox::elementAccessibilityHitTest(const IntPoint& point) const 167 167 { 168 168 // the internal HTMLSelectElement methods for returning a listbox option at a point -
trunk/Source/WebCore/accessibility/AccessibilityListBox.h
r95901 r111699 57 57 AccessibilityObject* listBoxOptionAccessibilityObject(HTMLElement*) const; 58 58 virtual bool accessibilityIsIgnored() const; 59 virtual AccessibilityObject* elementAccessibilityHitTest(const LayoutPoint&) const;59 virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const; 60 60 }; 61 61 -
trunk/Source/WebCore/accessibility/AccessibilityObject.cpp
r110819 r111699 490 490 } 491 491 492 LayoutPoint AccessibilityObject::clickPoint()492 IntPoint AccessibilityObject::clickPoint() 493 493 { 494 494 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 498 IntRect AccessibilityObject::boundingBoxForQuads(RenderObject* obj, const Vector<FloatQuad>& quads) 499 499 { 500 500 ASSERT(obj); 501 501 if (!obj) 502 return LayoutRect();502 return IntRect(); 503 503 504 504 size_t count = quads.size(); 505 505 if (!count) 506 return LayoutRect();507 508 LayoutRect result;506 return IntRect(); 507 508 IntRect result; 509 509 for (size_t i = 0; i < count; ++i) { 510 LayoutRect r = quads[i].enclosingBoundingBox();510 IntRect r = quads[i].enclosingBoundingBox(); 511 511 if (!r.isEmpty()) { 512 512 if (obj->style()->hasAppearance()) … … 1467 1467 } 1468 1468 1469 AccessibilityObject* AccessibilityObject::elementAccessibilityHitTest(const LayoutPoint& point) const1469 AccessibilityObject* AccessibilityObject::elementAccessibilityHitTest(const IntPoint& point) const 1470 1470 { 1471 1471 // Send the hit test back into the sub-frame if necessary. … … 1620 1620 void AccessibilityObject::scrollToMakeVisible() const 1621 1621 { 1622 IntRect objectRect = boundingBoxRect();1623 objectRect. move(-objectRect.x(), -objectRect.y());1622 IntRect objectRect = pixelSnappedIntRect(boundingBoxRect()); 1623 objectRect.setLocation(IntPoint()); 1624 1624 scrollToMakeVisibleWithSubFocus(objectRect); 1625 1625 } -
trunk/Source/WebCore/accessibility/AccessibilityObject.h
r110828 r111699 462 462 463 463 // 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; } 465 465 // 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; 467 467 468 468 virtual AccessibilityObject* focusedUIElement() const; … … 504 504 virtual Element* actionElement() const { return 0; } 505 505 virtual LayoutRect boundingBoxRect() const { return LayoutRect(); } 506 IntRect pixelSnappedBoundingBoxRect() const { return pixelSnappedIntRect(boundingBoxRect()); } 506 507 virtual LayoutRect elementRect() const = 0; 507 508 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>&); 510 511 511 512 virtual PlainTextRange selectedTextRange() const { return PlainTextRange(); } -
trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
r111030 r111699 2652 2652 } 2653 2653 2654 VisiblePosition AccessibilityRenderObject::visiblePositionForPoint(const LayoutPoint& point) const2654 VisiblePosition AccessibilityRenderObject::visiblePositionForPoint(const IntPoint& point) const 2655 2655 { 2656 2656 if (!m_renderer) … … 2677 2677 LayoutPoint ourpoint; 2678 2678 #if PLATFORM(MAC) 2679 ourpoint = frameView->screenToContents( roundedIntPoint(point));2679 ourpoint = frameView->screenToContents(point); 2680 2680 #else 2681 2681 ourpoint = point; … … 2820 2820 } 2821 2821 2822 AccessibilityObject* AccessibilityRenderObject::accessibilityImageMapHitTest(HTMLAreaElement* area, const LayoutPoint& point) const2822 AccessibilityObject* AccessibilityRenderObject::accessibilityImageMapHitTest(HTMLAreaElement* area, const IntPoint& point) const 2823 2823 { 2824 2824 if (!area) … … 2856 2856 2857 2857 if (node->hasTagName(areaTag)) 2858 return accessibilityImageMapHitTest(static_cast<HTMLAreaElement*>(node), roundedIntPoint(point));2858 return accessibilityImageMapHitTest(static_cast<HTMLAreaElement*>(node), point); 2859 2859 2860 2860 if (node->hasTagName(optionTag)) -
trunk/Source/WebCore/accessibility/AccessibilityRenderObject.h
r110819 r111699 155 155 156 156 // 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; 158 158 159 159 virtual Element* actionElement() const; … … 240 240 virtual void determineARIADropEffects(Vector<String>&); 241 241 242 virtual VisiblePosition visiblePositionForPoint(const LayoutPoint&) const;242 virtual VisiblePosition visiblePositionForPoint(const IntPoint&) const; 243 243 virtual VisiblePosition visiblePositionForIndex(unsigned indexValue, bool lastIndexOK) const; 244 244 virtual int index(const VisiblePosition&) const; -
trunk/Source/WebCore/accessibility/AccessibilityScrollView.cpp
r105295 r111699 164 164 } 165 165 166 AccessibilityObject* AccessibilityScrollView::accessibilityHitTest(const LayoutPoint& point) const166 AccessibilityObject* AccessibilityScrollView::accessibilityHitTest(const IntPoint& point) const 167 167 { 168 168 AccessibilityObject* webArea = webAreaObject(); -
trunk/Source/WebCore/accessibility/AccessibilityScrollView.h
r105295 r111699 58 58 virtual void addChildren(); 59 59 virtual void clearChildren(); 60 virtual AccessibilityObject* accessibilityHitTest(const LayoutPoint&) const;60 virtual AccessibilityObject* accessibilityHitTest(const IntPoint&) const; 61 61 virtual void updateChildrenIfNecessary(); 62 62 virtual void setNeedsToUpdateChildren() { m_childrenDirty = true; } -
trunk/Source/WebCore/accessibility/AccessibilitySlider.cpp
r109231 r111699 103 103 } 104 104 105 AccessibilityObject* AccessibilitySlider::elementAccessibilityHitTest(const LayoutPoint& point) const105 AccessibilityObject* AccessibilitySlider::elementAccessibilityHitTest(const IntPoint& point) const 106 106 { 107 107 if (m_children.size()) { -
trunk/Source/WebCore/accessibility/AccessibilitySlider.h
r106884 r111699 49 49 HTMLInputElement* element() const; 50 50 virtual bool accessibilityIsIgnored() const; 51 virtual AccessibilityObject* elementAccessibilityHitTest(const LayoutPoint&) const;51 virtual AccessibilityObject* elementAccessibilityHitTest(const IntPoint&) const; 52 52 53 53 virtual AccessibilityRole roleValue() const { return SliderRole; }
Note: See TracChangeset
for help on using the changeset viewer.