| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Peter Kelly (pmk@post.com) | 4 * (C) 2001 Peter Kelly (pmk@post.com) |
| 5 * (C) 2001 Dirk Mueller (mueller@kde.org) | 5 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 6 * (C) 2007 David Smith (catfish.man@gmail.com) | 6 * (C) 2007 David Smith (catfish.man@gmail.com) |
| 7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc.
All rights reserved. | 7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc.
All rights reserved. |
| 8 * (C) 2007 Eric Seidel (eric@webkit.org) | 8 * (C) 2007 Eric Seidel (eric@webkit.org) |
| 9 * | 9 * |
| 10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
| (...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 557 document().updateLayoutIgnorePendingStylesheets(); | 557 document().updateLayoutIgnorePendingStylesheets(); |
| 558 if (LayoutObject* renderer = this->renderer()) | 558 if (LayoutObject* renderer = this->renderer()) |
| 559 return renderer->offsetParent(); | 559 return renderer->offsetParent(); |
| 560 return nullptr; | 560 return nullptr; |
| 561 } | 561 } |
| 562 | 562 |
| 563 int Element::clientLeft() | 563 int Element::clientLeft() |
| 564 { | 564 { |
| 565 document().updateLayoutIgnorePendingStylesheets(); | 565 document().updateLayoutIgnorePendingStylesheets(); |
| 566 | 566 |
| 567 if (RenderBox* renderer = renderBox()) | 567 if (LayoutBox* renderer = layoutBox()) |
| 568 return adjustLayoutUnitForAbsoluteZoom(roundToInt(renderer->clientLeft()
), *renderer); | 568 return adjustLayoutUnitForAbsoluteZoom(roundToInt(renderer->clientLeft()
), *renderer); |
| 569 return 0; | 569 return 0; |
| 570 } | 570 } |
| 571 | 571 |
| 572 int Element::clientTop() | 572 int Element::clientTop() |
| 573 { | 573 { |
| 574 document().updateLayoutIgnorePendingStylesheets(); | 574 document().updateLayoutIgnorePendingStylesheets(); |
| 575 | 575 |
| 576 if (RenderBox* renderer = renderBox()) | 576 if (LayoutBox* renderer = layoutBox()) |
| 577 return adjustLayoutUnitForAbsoluteZoom(roundToInt(renderer->clientTop())
, *renderer); | 577 return adjustLayoutUnitForAbsoluteZoom(roundToInt(renderer->clientTop())
, *renderer); |
| 578 return 0; | 578 return 0; |
| 579 } | 579 } |
| 580 | 580 |
| 581 int Element::clientWidth() | 581 int Element::clientWidth() |
| 582 { | 582 { |
| 583 document().updateLayoutIgnorePendingStylesheets(); | 583 document().updateLayoutIgnorePendingStylesheets(); |
| 584 | 584 |
| 585 // When in strict mode, clientWidth for the document element should return t
he width of the containing frame. | 585 // When in strict mode, clientWidth for the document element should return t
he width of the containing frame. |
| 586 // When in quirks mode, clientWidth for the body element should return the w
idth of the containing frame. | 586 // When in quirks mode, clientWidth for the body element should return the w
idth of the containing frame. |
| 587 bool inQuirksMode = document().inQuirksMode(); | 587 bool inQuirksMode = document().inQuirksMode(); |
| 588 if ((!inQuirksMode && document().documentElement() == this) | 588 if ((!inQuirksMode && document().documentElement() == this) |
| 589 || (inQuirksMode && isHTMLElement() && document().body() == this)) { | 589 || (inQuirksMode && isHTMLElement() && document().body() == this)) { |
| 590 if (FrameView* view = document().view()) { | 590 if (FrameView* view = document().view()) { |
| 591 if (RenderView* renderView = document().renderView()) | 591 if (RenderView* renderView = document().renderView()) |
| 592 return adjustLayoutUnitForAbsoluteZoom(view->layoutSize().width(
), *renderView); | 592 return adjustLayoutUnitForAbsoluteZoom(view->layoutSize().width(
), *renderView); |
| 593 } | 593 } |
| 594 } | 594 } |
| 595 | 595 |
| 596 if (RenderBox* renderer = renderBox()) | 596 if (LayoutBox* renderer = layoutBox()) |
| 597 return adjustLayoutUnitForAbsoluteZoom(renderer->pixelSnappedClientWidth
(), *renderer).round(); | 597 return adjustLayoutUnitForAbsoluteZoom(renderer->pixelSnappedClientWidth
(), *renderer).round(); |
| 598 return 0; | 598 return 0; |
| 599 } | 599 } |
| 600 | 600 |
| 601 int Element::clientHeight() | 601 int Element::clientHeight() |
| 602 { | 602 { |
| 603 document().updateLayoutIgnorePendingStylesheets(); | 603 document().updateLayoutIgnorePendingStylesheets(); |
| 604 | 604 |
| 605 // When in strict mode, clientHeight for the document element should return
the height of the containing frame. | 605 // When in strict mode, clientHeight for the document element should return
the height of the containing frame. |
| 606 // When in quirks mode, clientHeight for the body element should return the
height of the containing frame. | 606 // When in quirks mode, clientHeight for the body element should return the
height of the containing frame. |
| 607 bool inQuirksMode = document().inQuirksMode(); | 607 bool inQuirksMode = document().inQuirksMode(); |
| 608 | 608 |
| 609 if ((!inQuirksMode && document().documentElement() == this) | 609 if ((!inQuirksMode && document().documentElement() == this) |
| 610 || (inQuirksMode && isHTMLElement() && document().body() == this)) { | 610 || (inQuirksMode && isHTMLElement() && document().body() == this)) { |
| 611 if (FrameView* view = document().view()) { | 611 if (FrameView* view = document().view()) { |
| 612 if (RenderView* renderView = document().renderView()) | 612 if (RenderView* renderView = document().renderView()) |
| 613 return adjustLayoutUnitForAbsoluteZoom(view->layoutSize().height
(), *renderView); | 613 return adjustLayoutUnitForAbsoluteZoom(view->layoutSize().height
(), *renderView); |
| 614 } | 614 } |
| 615 } | 615 } |
| 616 | 616 |
| 617 if (RenderBox* renderer = renderBox()) | 617 if (LayoutBox* renderer = layoutBox()) |
| 618 return adjustLayoutUnitForAbsoluteZoom(renderer->pixelSnappedClientHeigh
t(), *renderer).round(); | 618 return adjustLayoutUnitForAbsoluteZoom(renderer->pixelSnappedClientHeigh
t(), *renderer).round(); |
| 619 return 0; | 619 return 0; |
| 620 } | 620 } |
| 621 | 621 |
| 622 double Element::scrollLeft() | 622 double Element::scrollLeft() |
| 623 { | 623 { |
| 624 document().updateLayoutIgnorePendingStylesheets(); | 624 document().updateLayoutIgnorePendingStylesheets(); |
| 625 | 625 |
| 626 if (document().documentElement() != this) { | 626 if (document().documentElement() != this) { |
| 627 if (RenderBox* rend = renderBox()) | 627 if (LayoutBox* box = layoutBox()) |
| 628 return adjustScrollForAbsoluteZoom(rend->scrollLeft(), *rend); | 628 return adjustScrollForAbsoluteZoom(box->scrollLeft(), *box); |
| 629 return 0; | 629 return 0; |
| 630 } | 630 } |
| 631 | 631 |
| 632 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 632 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { |
| 633 if (document().inQuirksMode()) | 633 if (document().inQuirksMode()) |
| 634 return 0; | 634 return 0; |
| 635 | 635 |
| 636 if (LocalDOMWindow* window = document().domWindow()) | 636 if (LocalDOMWindow* window = document().domWindow()) |
| 637 return window->scrollX(); | 637 return window->scrollX(); |
| 638 } | 638 } |
| 639 | 639 |
| 640 return 0; | 640 return 0; |
| 641 } | 641 } |
| 642 | 642 |
| 643 double Element::scrollTop() | 643 double Element::scrollTop() |
| 644 { | 644 { |
| 645 document().updateLayoutIgnorePendingStylesheets(); | 645 document().updateLayoutIgnorePendingStylesheets(); |
| 646 | 646 |
| 647 if (document().documentElement() != this) { | 647 if (document().documentElement() != this) { |
| 648 if (RenderBox* rend = renderBox()) | 648 if (LayoutBox* box = layoutBox()) |
| 649 return adjustScrollForAbsoluteZoom(rend->scrollTop(), *rend); | 649 return adjustScrollForAbsoluteZoom(box->scrollTop(), *box); |
| 650 return 0; | 650 return 0; |
| 651 } | 651 } |
| 652 | 652 |
| 653 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 653 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { |
| 654 if (document().inQuirksMode()) | 654 if (document().inQuirksMode()) |
| 655 return 0; | 655 return 0; |
| 656 | 656 |
| 657 if (LocalDOMWindow* window = document().domWindow()) | 657 if (LocalDOMWindow* window = document().domWindow()) |
| 658 return window->scrollY(); | 658 return window->scrollY(); |
| 659 } | 659 } |
| 660 | 660 |
| 661 return 0; | 661 return 0; |
| 662 } | 662 } |
| 663 | 663 |
| 664 void Element::setScrollLeft(double newLeft) | 664 void Element::setScrollLeft(double newLeft) |
| 665 { | 665 { |
| 666 document().updateLayoutIgnorePendingStylesheets(); | 666 document().updateLayoutIgnorePendingStylesheets(); |
| 667 | 667 |
| 668 if (std::isnan(newLeft)) | 668 if (std::isnan(newLeft)) |
| 669 return; | 669 return; |
| 670 | 670 |
| 671 if (document().documentElement() != this) { | 671 if (document().documentElement() != this) { |
| 672 RenderBox* rend = renderBox(); | 672 LayoutBox* box = layoutBox(); |
| 673 if (rend) | 673 if (box) |
| 674 rend->setScrollLeft(LayoutUnit::fromFloatRound(newLeft * rend->style
()->effectiveZoom())); | 674 box->setScrollLeft(LayoutUnit::fromFloatRound(newLeft * box->style()
->effectiveZoom())); |
| 675 return; | 675 return; |
| 676 } | 676 } |
| 677 | 677 |
| 678 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 678 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { |
| 679 if (document().inQuirksMode()) | 679 if (document().inQuirksMode()) |
| 680 return; | 680 return; |
| 681 | 681 |
| 682 if (LocalDOMWindow* window = document().domWindow()) | 682 if (LocalDOMWindow* window = document().domWindow()) |
| 683 window->scrollTo(newLeft, window->scrollY()); | 683 window->scrollTo(newLeft, window->scrollY()); |
| 684 } | 684 } |
| 685 } | 685 } |
| 686 | 686 |
| 687 void Element::setScrollTop(double newTop) | 687 void Element::setScrollTop(double newTop) |
| 688 { | 688 { |
| 689 document().updateLayoutIgnorePendingStylesheets(); | 689 document().updateLayoutIgnorePendingStylesheets(); |
| 690 | 690 |
| 691 if (std::isnan(newTop)) | 691 if (std::isnan(newTop)) |
| 692 return; | 692 return; |
| 693 | 693 |
| 694 if (document().documentElement() != this) { | 694 if (document().documentElement() != this) { |
| 695 RenderBox* rend = renderBox(); | 695 LayoutBox* box = layoutBox(); |
| 696 if (rend) | 696 if (box) |
| 697 rend->setScrollTop(LayoutUnit::fromFloatRound(newTop * rend->style()
->effectiveZoom())); | 697 box->setScrollTop(LayoutUnit::fromFloatRound(newTop * box->style()->
effectiveZoom())); |
| 698 return; | 698 return; |
| 699 } | 699 } |
| 700 | 700 |
| 701 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 701 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { |
| 702 if (document().inQuirksMode()) | 702 if (document().inQuirksMode()) |
| 703 return; | 703 return; |
| 704 | 704 |
| 705 if (LocalDOMWindow* window = document().domWindow()) | 705 if (LocalDOMWindow* window = document().domWindow()) |
| 706 window->scrollTo(window->scrollX(), newTop); | 706 window->scrollTo(window->scrollX(), newTop); |
| 707 } | 707 } |
| 708 } | 708 } |
| 709 | 709 |
| 710 int Element::scrollWidth() | 710 int Element::scrollWidth() |
| 711 { | 711 { |
| 712 document().updateLayoutIgnorePendingStylesheets(); | 712 document().updateLayoutIgnorePendingStylesheets(); |
| 713 if (RenderBox* rend = renderBox()) | 713 if (LayoutBox* box = layoutBox()) |
| 714 return adjustLayoutUnitForAbsoluteZoom(rend->scrollWidth(), *rend).toDou
ble(); | 714 return adjustLayoutUnitForAbsoluteZoom(box->scrollWidth(), *box).toDoubl
e(); |
| 715 return 0; | 715 return 0; |
| 716 } | 716 } |
| 717 | 717 |
| 718 int Element::scrollHeight() | 718 int Element::scrollHeight() |
| 719 { | 719 { |
| 720 document().updateLayoutIgnorePendingStylesheets(); | 720 document().updateLayoutIgnorePendingStylesheets(); |
| 721 if (RenderBox* rend = renderBox()) | 721 if (LayoutBox* box = layoutBox()) |
| 722 return adjustLayoutUnitForAbsoluteZoom(rend->scrollHeight(), *rend).toDo
uble(); | 722 return adjustLayoutUnitForAbsoluteZoom(box->scrollHeight(), *box).toDoub
le(); |
| 723 return 0; | 723 return 0; |
| 724 } | 724 } |
| 725 | 725 |
| 726 void Element::scrollBy(double x, double y) | 726 void Element::scrollBy(double x, double y) |
| 727 { | 727 { |
| 728 ScrollToOptions scrollToOptions; | 728 ScrollToOptions scrollToOptions; |
| 729 scrollToOptions.setLeft(x); | 729 scrollToOptions.setLeft(x); |
| 730 scrollToOptions.setTop(y); | 730 scrollToOptions.setTop(y); |
| 731 scrollBy(scrollToOptions); | 731 scrollBy(scrollToOptions); |
| 732 } | 732 } |
| 733 | 733 |
| 734 void Element::scrollBy(const ScrollToOptions& scrollToOptions) | 734 void Element::scrollBy(const ScrollToOptions& scrollToOptions) |
| 735 { | 735 { |
| 736 // FIXME: This should be removed once scroll updates are processed only afte
r | 736 // FIXME: This should be removed once scroll updates are processed only afte
r |
| 737 // the compositing update. See http://crbug.com/420741. | 737 // the compositing update. See http://crbug.com/420741. |
| 738 document().updateLayoutIgnorePendingStylesheets(); | 738 document().updateLayoutIgnorePendingStylesheets(); |
| 739 | 739 |
| 740 if (document().documentElement() != this) { | 740 if (document().documentElement() != this) { |
| 741 scrollRenderBoxBy(scrollToOptions); | 741 scrollLayoutBoxBy(scrollToOptions); |
| 742 return; | 742 return; |
| 743 } | 743 } |
| 744 | 744 |
| 745 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 745 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { |
| 746 if (document().inQuirksMode()) | 746 if (document().inQuirksMode()) |
| 747 return; | 747 return; |
| 748 scrollFrameBy(scrollToOptions); | 748 scrollFrameBy(scrollToOptions); |
| 749 } | 749 } |
| 750 } | 750 } |
| 751 | 751 |
| 752 void Element::scrollTo(double x, double y) | 752 void Element::scrollTo(double x, double y) |
| 753 { | 753 { |
| 754 ScrollToOptions scrollToOptions; | 754 ScrollToOptions scrollToOptions; |
| 755 scrollToOptions.setLeft(x); | 755 scrollToOptions.setLeft(x); |
| 756 scrollToOptions.setTop(y); | 756 scrollToOptions.setTop(y); |
| 757 scrollTo(scrollToOptions); | 757 scrollTo(scrollToOptions); |
| 758 } | 758 } |
| 759 | 759 |
| 760 void Element::scrollTo(const ScrollToOptions& scrollToOptions) | 760 void Element::scrollTo(const ScrollToOptions& scrollToOptions) |
| 761 { | 761 { |
| 762 // FIXME: This should be removed once scroll updates are processed only afte
r | 762 // FIXME: This should be removed once scroll updates are processed only afte
r |
| 763 // the compositing update. See http://crbug.com/420741. | 763 // the compositing update. See http://crbug.com/420741. |
| 764 document().updateLayoutIgnorePendingStylesheets(); | 764 document().updateLayoutIgnorePendingStylesheets(); |
| 765 | 765 |
| 766 if (document().documentElement() != this) { | 766 if (document().documentElement() != this) { |
| 767 scrollRenderBoxTo(scrollToOptions); | 767 scrollLayoutBoxTo(scrollToOptions); |
| 768 return; | 768 return; |
| 769 } | 769 } |
| 770 | 770 |
| 771 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { | 771 if (RuntimeEnabledFeatures::scrollTopLeftInteropEnabled()) { |
| 772 if (document().inQuirksMode()) | 772 if (document().inQuirksMode()) |
| 773 return; | 773 return; |
| 774 scrollFrameTo(scrollToOptions); | 774 scrollFrameTo(scrollToOptions); |
| 775 } | 775 } |
| 776 } | 776 } |
| 777 | 777 |
| 778 void Element::scrollRenderBoxBy(const ScrollToOptions& scrollToOptions) | 778 void Element::scrollLayoutBoxBy(const ScrollToOptions& scrollToOptions) |
| 779 { | 779 { |
| 780 double left = scrollToOptions.hasLeft() ? scrollToOptions.left() : 0.0; | 780 double left = scrollToOptions.hasLeft() ? scrollToOptions.left() : 0.0; |
| 781 double top = scrollToOptions.hasTop() ? scrollToOptions.top() : 0.0; | 781 double top = scrollToOptions.hasTop() ? scrollToOptions.top() : 0.0; |
| 782 if (std::isnan(left) || std::isnan(top)) | 782 if (std::isnan(left) || std::isnan(top)) |
| 783 return; | 783 return; |
| 784 | 784 |
| 785 ScrollBehavior scrollBehavior = ScrollBehaviorAuto; | 785 ScrollBehavior scrollBehavior = ScrollBehaviorAuto; |
| 786 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(), scrollB
ehavior); | 786 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(), scrollB
ehavior); |
| 787 RenderBox* rend = renderBox(); | 787 LayoutBox* box = layoutBox(); |
| 788 if (rend) { | 788 if (box) { |
| 789 double currentScaledLeft = rend->scrollLeft(); | 789 double currentScaledLeft = box->scrollLeft(); |
| 790 double currentScaledTop = rend->scrollTop(); | 790 double currentScaledTop = box->scrollTop(); |
| 791 double newScaledLeft = left * rend->style()->effectiveZoom() + currentSc
aledLeft; | 791 double newScaledLeft = left * box->style()->effectiveZoom() + currentSca
ledLeft; |
| 792 double newScaledTop = top * rend->style()->effectiveZoom() + currentScal
edTop; | 792 double newScaledTop = top * box->style()->effectiveZoom() + currentScale
dTop; |
| 793 rend->scrollToOffset(DoubleSize(newScaledLeft, newScaledTop), scrollBeha
vior); | 793 box->scrollToOffset(DoubleSize(newScaledLeft, newScaledTop), scrollBehav
ior); |
| 794 } | 794 } |
| 795 } | 795 } |
| 796 | 796 |
| 797 void Element::scrollRenderBoxTo(const ScrollToOptions& scrollToOptions) | 797 void Element::scrollLayoutBoxTo(const ScrollToOptions& scrollToOptions) |
| 798 { | 798 { |
| 799 if ((scrollToOptions.hasLeft() && std::isnan(scrollToOptions.left())) | 799 if ((scrollToOptions.hasLeft() && std::isnan(scrollToOptions.left())) |
| 800 || (scrollToOptions.hasTop() && std::isnan(scrollToOptions.top()))) | 800 || (scrollToOptions.hasTop() && std::isnan(scrollToOptions.top()))) |
| 801 return; | 801 return; |
| 802 | 802 |
| 803 ScrollBehavior scrollBehavior = ScrollBehaviorAuto; | 803 ScrollBehavior scrollBehavior = ScrollBehaviorAuto; |
| 804 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(), scrollB
ehavior); | 804 ScrollableArea::scrollBehaviorFromString(scrollToOptions.behavior(), scrollB
ehavior); |
| 805 | 805 |
| 806 RenderBox* rend = renderBox(); | 806 LayoutBox* box = layoutBox(); |
| 807 if (rend) { | 807 if (box) { |
| 808 double scaledLeft = rend->scrollLeft(); | 808 double scaledLeft = box->scrollLeft(); |
| 809 double scaledTop = rend->scrollTop(); | 809 double scaledTop = box->scrollTop(); |
| 810 if (scrollToOptions.hasLeft()) | 810 if (scrollToOptions.hasLeft()) |
| 811 scaledLeft = scrollToOptions.left() * rend->style()->effectiveZoom()
; | 811 scaledLeft = scrollToOptions.left() * box->style()->effectiveZoom(); |
| 812 if (scrollToOptions.hasTop()) | 812 if (scrollToOptions.hasTop()) |
| 813 scaledTop = scrollToOptions.top() * rend->style()->effectiveZoom(); | 813 scaledTop = scrollToOptions.top() * box->style()->effectiveZoom(); |
| 814 rend->scrollToOffset(DoubleSize(scaledLeft, scaledTop), scrollBehavior); | 814 box->scrollToOffset(DoubleSize(scaledLeft, scaledTop), scrollBehavior); |
| 815 } | 815 } |
| 816 } | 816 } |
| 817 | 817 |
| 818 void Element::scrollFrameBy(const ScrollToOptions& scrollToOptions) | 818 void Element::scrollFrameBy(const ScrollToOptions& scrollToOptions) |
| 819 { | 819 { |
| 820 double left = scrollToOptions.hasLeft() ? scrollToOptions.left() : 0.0; | 820 double left = scrollToOptions.hasLeft() ? scrollToOptions.left() : 0.0; |
| 821 double top = scrollToOptions.hasTop() ? scrollToOptions.top() : 0.0; | 821 double top = scrollToOptions.hasTop() ? scrollToOptions.top() : 0.0; |
| 822 if (std::isnan(left) || std::isnan(top)) | 822 if (std::isnan(left) || std::isnan(top)) |
| 823 return; | 823 return; |
| 824 | 824 |
| (...skipping 2556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3381 { | 3381 { |
| 3382 #if ENABLE(OILPAN) | 3382 #if ENABLE(OILPAN) |
| 3383 if (hasRareData()) | 3383 if (hasRareData()) |
| 3384 visitor->trace(elementRareData()); | 3384 visitor->trace(elementRareData()); |
| 3385 visitor->trace(m_elementData); | 3385 visitor->trace(m_elementData); |
| 3386 #endif | 3386 #endif |
| 3387 ContainerNode::trace(visitor); | 3387 ContainerNode::trace(visitor); |
| 3388 } | 3388 } |
| 3389 | 3389 |
| 3390 } // namespace blink | 3390 } // namespace blink |
| OLD | NEW |