Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1712)

Side by Side Diff: Source/core/accessibility/AccessibilityRenderObject.cpp

Issue 23819007: Have Node::document() return a reference instead of a pointer (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase on master Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2008 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 505
506 Element* anchor = anchorElement(); 506 Element* anchor = anchorElement();
507 if (!anchor || !isHTMLAnchorElement(anchor)) 507 if (!anchor || !isHTMLAnchorElement(anchor))
508 return false; 508 return false;
509 509
510 return !toHTMLAnchorElement(anchor)->href().isEmpty(); 510 return !toHTMLAnchorElement(anchor)->href().isEmpty();
511 } 511 }
512 512
513 bool AccessibilityRenderObject::isLoaded() const 513 bool AccessibilityRenderObject::isLoaded() const
514 { 514 {
515 return !m_renderer->document()->parser(); 515 return !m_renderer->document().parser();
516 } 516 }
517 517
518 bool AccessibilityRenderObject::isOffScreen() const 518 bool AccessibilityRenderObject::isOffScreen() const
519 { 519 {
520 ASSERT(m_renderer); 520 ASSERT(m_renderer);
521 IntRect contentRect = pixelSnappedIntRect(m_renderer->absoluteClippedOverflo wRect()); 521 IntRect contentRect = pixelSnappedIntRect(m_renderer->absoluteClippedOverflo wRect());
522 FrameView* view = m_renderer->frame()->view(); 522 FrameView* view = m_renderer->frame()->view();
523 IntRect viewRect = view->visibleContentRect(); 523 IntRect viewRect = view->visibleContentRect();
524 viewRect.intersect(contentRect); 524 viewRect.intersect(contentRect);
525 return viewRect.isEmpty(); 525 return viewRect.isEmpty();
526 } 526 }
527 527
528 bool AccessibilityRenderObject::isReadOnly() const 528 bool AccessibilityRenderObject::isReadOnly() const
529 { 529 {
530 ASSERT(m_renderer); 530 ASSERT(m_renderer);
531 531
532 if (isWebArea()) { 532 if (isWebArea()) {
533 Document* document = m_renderer->document(); 533 Document& document = m_renderer->document();
534 if (!document) 534 HTMLElement* body = document.body();
535 return true;
536
537 HTMLElement* body = document->body();
538 if (body && body->rendererIsEditable()) 535 if (body && body->rendererIsEditable())
539 return false; 536 return false;
540 537
541 return !document->rendererIsEditable(); 538 return !document.rendererIsEditable();
542 } 539 }
543 540
544 return AccessibilityNodeObject::isReadOnly(); 541 return AccessibilityNodeObject::isReadOnly();
545 } 542 }
546 543
547 bool AccessibilityRenderObject::isVisited() const 544 bool AccessibilityRenderObject::isVisited() const
548 { 545 {
549 // FIXME: Is it a privacy violation to expose visited information to accessi bility APIs? 546 // FIXME: Is it a privacy violation to expose visited information to accessi bility APIs?
550 return m_renderer->style()->isLink() && m_renderer->style()->insideLink() == InsideVisitedLink; 547 return m_renderer->style()->isLink() && m_renderer->style()->insideLink() == InsideVisitedLink;
551 } 548 }
552 549
553 // 550 //
554 // Check object state. 551 // Check object state.
555 // 552 //
556 553
557 bool AccessibilityRenderObject::isFocused() const 554 bool AccessibilityRenderObject::isFocused() const
558 { 555 {
559 if (!m_renderer) 556 if (!m_renderer)
560 return false; 557 return false;
561 558
562 Document* document = m_renderer->document(); 559 Document& document = m_renderer->document();
563 if (!document) 560 Element* focusedElement = document.focusedElement();
564 return false;
565
566 Element* focusedElement = document->focusedElement();
567 if (!focusedElement) 561 if (!focusedElement)
568 return false; 562 return false;
569 563
570 // A web area is represented by the Document node in the DOM tree, which isn 't focusable. 564 // A web area is represented by the Document node in the DOM tree, which isn 't focusable.
571 // Check instead if the frame's selection controller is focused 565 // Check instead if the frame's selection controller is focused
572 if (focusedElement == m_renderer->node() 566 if (focusedElement == m_renderer->node()
573 || (roleValue() == WebAreaRole && document->frame()->selection()->isFocu sedAndActive())) 567 || (roleValue() == WebAreaRole && document.frame()->selection()->isFocus edAndActive()))
574 return true; 568 return true;
575 569
576 return false; 570 return false;
577 } 571 }
578 572
579 bool AccessibilityRenderObject::isSelected() const 573 bool AccessibilityRenderObject::isSelected() const
580 { 574 {
581 if (!m_renderer) 575 if (!m_renderer)
582 return false; 576 return false;
583 577
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 } 834 }
841 835
842 KURL AccessibilityRenderObject::url() const 836 KURL AccessibilityRenderObject::url() const
843 { 837 {
844 if (isAnchor() && isHTMLAnchorElement(m_renderer->node())) { 838 if (isAnchor() && isHTMLAnchorElement(m_renderer->node())) {
845 if (HTMLAnchorElement* anchor = toHTMLAnchorElement(anchorElement())) 839 if (HTMLAnchorElement* anchor = toHTMLAnchorElement(anchorElement()))
846 return anchor->href(); 840 return anchor->href();
847 } 841 }
848 842
849 if (isWebArea()) 843 if (isWebArea())
850 return m_renderer->document()->url(); 844 return m_renderer->document().url();
851 845
852 if (isImage() && m_renderer->node() && m_renderer->node()->hasTagName(imgTag )) 846 if (isImage() && m_renderer->node() && m_renderer->node()->hasTagName(imgTag ))
853 return toHTMLImageElement(m_renderer->node())->src(); 847 return toHTMLImageElement(m_renderer->node())->src();
854 848
855 if (isInputImage()) 849 if (isInputImage())
856 return toHTMLInputElement(m_renderer->node())->src(); 850 return toHTMLInputElement(m_renderer->node())->src();
857 851
858 return KURL(); 852 return KURL();
859 } 853 }
860 854
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 if (!m_renderer) 1135 if (!m_renderer)
1142 return String(); 1136 return String();
1143 1137
1144 if (m_renderer->isFileUploadControl()) 1138 if (m_renderer->isFileUploadControl())
1145 return toRenderFileUploadControl(m_renderer)->buttonValue(); 1139 return toRenderFileUploadControl(m_renderer)->buttonValue();
1146 1140
1147 if (m_renderer->isText()) { 1141 if (m_renderer->isText()) {
1148 // If possible, use a text iterator to get the text, so that whitespace 1142 // If possible, use a text iterator to get the text, so that whitespace
1149 // is handled consistently. 1143 // is handled consistently.
1150 if (Node* node = this->node()) { 1144 if (Node* node = this->node()) {
1151 if (Frame* frame = node->document()->frame()) { 1145 if (Frame* frame = node->document().frame()) {
1152 // catch stale WebCoreAXObject (see <rdar://problem/3960196>) 1146 // catch stale WebCoreAXObject (see <rdar://problem/3960196>)
1153 if (frame->document() != node->document()) 1147 if (frame->document() != &node->document())
1154 return String(); 1148 return String();
1155 1149
1156 return plainText(rangeOfContents(node).get(), textIteratorBehavi orForTextRange()); 1150 return plainText(rangeOfContents(node).get(), textIteratorBehavi orForTextRange());
1157 } 1151 }
1158 } 1152 }
1159 1153
1160 // Sometimes text fragments don't have Nodes associated with them (like when 1154 // Sometimes text fragments don't have Nodes associated with them (like when
1161 // CSS content is used to insert text or when a RenderCounter is used.) 1155 // CSS content is used to insert text or when a RenderCounter is used.)
1162 RenderText* renderTextObject = toRenderText(m_renderer); 1156 RenderText* renderTextObject = toRenderText(m_renderer);
1163 if (renderTextObject->isTextFragment()) 1157 if (renderTextObject->isTextFragment())
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
1312 if (isHTMLAreaElement(node)) 1306 if (isHTMLAreaElement(node))
1313 return accessibilityImageMapHitTest(toHTMLAreaElement(node), point); 1307 return accessibilityImageMapHitTest(toHTMLAreaElement(node), point);
1314 1308
1315 if (node->hasTagName(optionTag)) 1309 if (node->hasTagName(optionTag))
1316 node = toHTMLOptionElement(node)->ownerSelectElement(); 1310 node = toHTMLOptionElement(node)->ownerSelectElement();
1317 1311
1318 RenderObject* obj = node->renderer(); 1312 RenderObject* obj = node->renderer();
1319 if (!obj) 1313 if (!obj)
1320 return 0; 1314 return 0;
1321 1315
1322 AccessibilityObject* result = obj->document()->axObjectCache()->getOrCreate( obj); 1316 AccessibilityObject* result = obj->document().axObjectCache()->getOrCreate(o bj);
1323 result->updateChildrenIfNecessary(); 1317 result->updateChildrenIfNecessary();
1324 1318
1325 // Allow the element to perform any hit-testing it might need to do to reach non-render children. 1319 // Allow the element to perform any hit-testing it might need to do to reach non-render children.
1326 result = result->elementAccessibilityHitTest(point); 1320 result = result->elementAccessibilityHitTest(point);
1327 1321
1328 if (result && result->accessibilityIsIgnored()) { 1322 if (result && result->accessibilityIsIgnored()) {
1329 // If this element is the label of a control, a hit test should return t he control. 1323 // If this element is the label of a control, a hit test should return t he control.
1330 if (result->isAccessibilityRenderObject()) { 1324 if (result->isAccessibilityRenderObject()) {
1331 AccessibilityObject* controlObject = static_cast<AccessibilityRender Object*>(result)->correspondingControlForLabelElement(); 1325 AccessibilityObject* controlObject = static_cast<AccessibilityRender Object*>(result)->correspondingControlForLabelElement();
1332 if (controlObject && !controlObject->exposesTitleUIElement()) 1326 if (controlObject && !controlObject->exposesTitleUIElement())
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
1512 // 1506 //
1513 1507
1514 double AccessibilityRenderObject::estimatedLoadingProgress() const 1508 double AccessibilityRenderObject::estimatedLoadingProgress() const
1515 { 1509 {
1516 if (!m_renderer) 1510 if (!m_renderer)
1517 return 0; 1511 return 0;
1518 1512
1519 if (isLoaded()) 1513 if (isLoaded())
1520 return 1.0; 1514 return 1.0;
1521 1515
1522 if (Page* page = m_renderer->document()->page()) 1516 if (Page* page = m_renderer->document().page())
1523 return page->progress().estimatedProgress(); 1517 return page->progress().estimatedProgress();
1524 return 0; 1518 return 0;
1525 } 1519 }
1526 1520
1527 // 1521 //
1528 // DOM and Render tree access. 1522 // DOM and Render tree access.
1529 // 1523 //
1530 1524
1531 Node* AccessibilityRenderObject::node() const 1525 Node* AccessibilityRenderObject::node() const
1532 { 1526 {
1533 return m_renderer ? m_renderer->node() : 0; 1527 return m_renderer ? m_renderer->node() : 0;
1534 } 1528 }
1535 1529
1536 Document* AccessibilityRenderObject::document() const 1530 Document* AccessibilityRenderObject::document() const
1537 { 1531 {
1538 if (!m_renderer) 1532 if (!m_renderer)
1539 return 0; 1533 return 0;
1540 return m_renderer->document(); 1534 return &m_renderer->document();
1541 } 1535 }
1542 1536
1543 FrameView* AccessibilityRenderObject::documentFrameView() const 1537 FrameView* AccessibilityRenderObject::documentFrameView() const
1544 { 1538 {
1545 if (!m_renderer || !m_renderer->document()) 1539 if (!m_renderer)
1546 return 0; 1540 return 0;
1547 1541
1548 // this is the RenderObject's Document's Frame's FrameView 1542 // this is the RenderObject's Document's Frame's FrameView
1549 return m_renderer->document()->view(); 1543 return m_renderer->document().view();
1550 } 1544 }
1551 1545
1552 Element* AccessibilityRenderObject::anchorElement() const 1546 Element* AccessibilityRenderObject::anchorElement() const
1553 { 1547 {
1554 if (!m_renderer) 1548 if (!m_renderer)
1555 return 0; 1549 return 0;
1556 1550
1557 AXObjectCache* cache = axObjectCache(); 1551 AXObjectCache* cache = axObjectCache();
1558 RenderObject* currRenderer; 1552 RenderObject* currRenderer;
1559 1553
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1639 // 1633 //
1640 1634
1641 void AccessibilityRenderObject::setSelectedTextRange(const PlainTextRange& range ) 1635 void AccessibilityRenderObject::setSelectedTextRange(const PlainTextRange& range )
1642 { 1636 {
1643 if (isNativeTextControl() && m_renderer->isTextControl()) { 1637 if (isNativeTextControl() && m_renderer->isTextControl()) {
1644 HTMLTextFormControlElement* textControl = toRenderTextControl(m_renderer )->textFormControlElement(); 1638 HTMLTextFormControlElement* textControl = toRenderTextControl(m_renderer )->textFormControlElement();
1645 textControl->setSelectionRange(range.start, range.start + range.length); 1639 textControl->setSelectionRange(range.start, range.start + range.length);
1646 return; 1640 return;
1647 } 1641 }
1648 1642
1649 Document* document = m_renderer->document(); 1643 Document& document = m_renderer->document();
1650 if (!document) 1644 Frame* frame = document.frame();
1651 return;
1652 Frame* frame = document->frame();
1653 if (!frame) 1645 if (!frame)
1654 return; 1646 return;
1655 Node* node = m_renderer->node(); 1647 Node* node = m_renderer->node();
1656 frame->selection()->setSelection(VisibleSelection(Position(node, range.start , Position::PositionIsOffsetInAnchor), 1648 frame->selection()->setSelection(VisibleSelection(Position(node, range.start , Position::PositionIsOffsetInAnchor),
1657 Position(node, range.start + range.length, Position::PositionIsOffsetInA nchor), DOWNSTREAM)); 1649 Position(node, range.start + range.length, Position::PositionIsOffsetInA nchor), DOWNSTREAM));
1658 } 1650 }
1659 1651
1660 void AccessibilityRenderObject::setValue(const String& string) 1652 void AccessibilityRenderObject::setValue(const String& string)
1661 { 1653 {
1662 if (!m_renderer || !m_renderer->node() || !m_renderer->node()->isElementNode ()) 1654 if (!m_renderer || !m_renderer->node() || !m_renderer->node()->isElementNode ())
(...skipping 27 matching lines...) Expand all
1690 1682
1691 // 1683 //
1692 // Notifications that this object may have changed. 1684 // Notifications that this object may have changed.
1693 // 1685 //
1694 1686
1695 void AccessibilityRenderObject::handleActiveDescendantChanged() 1687 void AccessibilityRenderObject::handleActiveDescendantChanged()
1696 { 1688 {
1697 Element* element = toElement(renderer()->node()); 1689 Element* element = toElement(renderer()->node());
1698 if (!element) 1690 if (!element)
1699 return; 1691 return;
1700 Document* doc = renderer()->document(); 1692 Document& doc = renderer()->document();
1701 if (!doc->frame()->selection()->isFocusedAndActive() || doc->focusedElement( ) != element) 1693 if (!doc.frame()->selection()->isFocusedAndActive() || doc.focusedElement() != element)
1702 return; 1694 return;
1703 AccessibilityRenderObject* activedescendant = static_cast<AccessibilityRende rObject*>(activeDescendant()); 1695 AccessibilityRenderObject* activedescendant = static_cast<AccessibilityRende rObject*>(activeDescendant());
1704 1696
1705 if (activedescendant && shouldNotifyActiveDescendant()) 1697 if (activedescendant && shouldNotifyActiveDescendant())
1706 doc->axObjectCache()->postNotification(m_renderer, AXObjectCache::AXActi veDescendantChanged, true); 1698 doc.axObjectCache()->postNotification(m_renderer, AXObjectCache::AXActiv eDescendantChanged, true);
1707 } 1699 }
1708 1700
1709 void AccessibilityRenderObject::handleAriaExpandedChanged() 1701 void AccessibilityRenderObject::handleAriaExpandedChanged()
1710 { 1702 {
1711 // Find if a parent of this object should handle aria-expanded changes. 1703 // Find if a parent of this object should handle aria-expanded changes.
1712 AccessibilityObject* containerParent = this->parentObject(); 1704 AccessibilityObject* containerParent = this->parentObject();
1713 while (containerParent) { 1705 while (containerParent) {
1714 bool foundParent = false; 1706 bool foundParent = false;
1715 1707
1716 switch (containerParent->roleValue()) { 1708 switch (containerParent->roleValue()) {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1767 if (!allowsTextRanges() && !m_renderer->isText()) 1759 if (!allowsTextRanges() && !m_renderer->isText())
1768 return VisiblePosition(); 1760 return VisiblePosition();
1769 1761
1770 Node* node = m_renderer->node(); 1762 Node* node = m_renderer->node();
1771 if (!node) 1763 if (!node)
1772 return VisiblePosition(); 1764 return VisiblePosition();
1773 1765
1774 if (index <= 0) 1766 if (index <= 0)
1775 return VisiblePosition(firstPositionInOrBeforeNode(node), DOWNSTREAM); 1767 return VisiblePosition(firstPositionInOrBeforeNode(node), DOWNSTREAM);
1776 1768
1777 RefPtr<Range> range = Range::create(m_renderer->document()); 1769 RefPtr<Range> range = Range::create(&m_renderer->document());
1778 range->selectNodeContents(node, IGNORE_EXCEPTION); 1770 range->selectNodeContents(node, IGNORE_EXCEPTION);
1779 CharacterIterator it(range.get()); 1771 CharacterIterator it(range.get());
1780 it.advance(index - 1); 1772 it.advance(index - 1);
1781 return VisiblePosition(Position(it.range()->endContainer(), it.range()->endO ffset(), Position::PositionIsOffsetInAnch\ 1773 return VisiblePosition(Position(it.range()->endContainer(), it.range()->endO ffset(), Position::PositionIsOffsetInAnch\
1782 or), UPSTREAM); 1774 or), UPSTREAM);
1783 } 1775 }
1784 1776
1785 int AccessibilityRenderObject::indexForVisiblePosition(const VisiblePosition& po s) const 1777 int AccessibilityRenderObject::indexForVisiblePosition(const VisiblePosition& po s) const
1786 { 1778 {
1787 if (isNativeTextControl() && m_renderer->isTextControl()) { 1779 if (isNativeTextControl() && m_renderer->isTextControl()) {
1788 HTMLTextFormControlElement* textControl = toRenderTextControl(m_renderer )->textFormControlElement(); 1780 HTMLTextFormControlElement* textControl = toRenderTextControl(m_renderer )->textFormControlElement();
1789 return textControl->indexForVisiblePosition(pos); 1781 return textControl->indexForVisiblePosition(pos);
1790 } 1782 }
1791 1783
1792 if (!isTextControl()) 1784 if (!isTextControl())
1793 return 0; 1785 return 0;
1794 1786
1795 Node* node = m_renderer->node(); 1787 Node* node = m_renderer->node();
1796 if (!node) 1788 if (!node)
1797 return 0; 1789 return 0;
1798 1790
1799 Position indexPosition = pos.deepEquivalent(); 1791 Position indexPosition = pos.deepEquivalent();
1800 if (indexPosition.isNull() || highestEditableRoot(indexPosition, HasEditable AXRole) != node) 1792 if (indexPosition.isNull() || highestEditableRoot(indexPosition, HasEditable AXRole) != node)
1801 return 0; 1793 return 0;
1802 1794
1803 RefPtr<Range> range = Range::create(m_renderer->document()); 1795 RefPtr<Range> range = Range::create(&m_renderer->document());
1804 range->setStart(node, 0, IGNORE_EXCEPTION); 1796 range->setStart(node, 0, IGNORE_EXCEPTION);
1805 range->setEnd(indexPosition, IGNORE_EXCEPTION); 1797 range->setEnd(indexPosition, IGNORE_EXCEPTION);
1806 1798
1807 return TextIterator::rangeLength(range.get()); 1799 return TextIterator::rangeLength(range.get());
1808 } 1800 }
1809 1801
1810 void AccessibilityRenderObject::lineBreaks(Vector<int>& lineBreaks) const 1802 void AccessibilityRenderObject::lineBreaks(Vector<int>& lineBreaks) const
1811 { 1803 {
1812 if (!isTextControl()) 1804 if (!isTextControl())
1813 return; 1805 return;
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
1961 if (!isHTMLAnchorElement(element)) 1953 if (!isHTMLAnchorElement(element))
1962 return 0; 1954 return 0;
1963 HTMLAnchorElement* anchor = toHTMLAnchorElement(element); 1955 HTMLAnchorElement* anchor = toHTMLAnchorElement(element);
1964 1956
1965 KURL linkURL = anchor->href(); 1957 KURL linkURL = anchor->href();
1966 String fragmentIdentifier = linkURL.fragmentIdentifier(); 1958 String fragmentIdentifier = linkURL.fragmentIdentifier();
1967 if (fragmentIdentifier.isEmpty()) 1959 if (fragmentIdentifier.isEmpty())
1968 return 0; 1960 return 0;
1969 1961
1970 // check if URL is the same as current URL 1962 // check if URL is the same as current URL
1971 KURL documentURL = m_renderer->document()->url(); 1963 KURL documentURL = m_renderer->document().url();
1972 if (!equalIgnoringFragmentIdentifier(documentURL, linkURL)) 1964 if (!equalIgnoringFragmentIdentifier(documentURL, linkURL))
1973 return 0; 1965 return 0;
1974 1966
1975 Node* linkedNode = m_renderer->document()->findAnchor(fragmentIdentifier); 1967 Node* linkedNode = m_renderer->document().findAnchor(fragmentIdentifier);
1976 if (!linkedNode) 1968 if (!linkedNode)
1977 return 0; 1969 return 0;
1978 1970
1979 // The element we find may not be accessible, so find the first accessible o bject. 1971 // The element we find may not be accessible, so find the first accessible o bject.
1980 return firstAccessibleObjectFromNode(linkedNode); 1972 return firstAccessibleObjectFromNode(linkedNode);
1981 } 1973 }
1982 1974
1983 AccessibilityObject* AccessibilityRenderObject::accessibilityImageMapHitTest(HTM LAreaElement* area, const IntPoint& point) const 1975 AccessibilityObject* AccessibilityRenderObject::accessibilityImageMapHitTest(HTM LAreaElement* area, const IntPoint& point) const
1984 { 1976 {
1985 if (!area) 1977 if (!area)
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
2386 if (label && label->renderer()) { 2378 if (label && label->renderer()) {
2387 LayoutRect labelRect = axObjectCache()->getOrCreate(label)->elementR ect(); 2379 LayoutRect labelRect = axObjectCache()->getOrCreate(label)->elementR ect();
2388 result.unite(labelRect); 2380 result.unite(labelRect);
2389 } 2381 }
2390 } 2382 }
2391 2383
2392 return result; 2384 return result;
2393 } 2385 }
2394 2386
2395 } // namespace WebCore 2387 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/accessibility/AccessibilityObject.cpp ('k') | Source/core/accessibility/AccessibilitySlider.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698