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

Side by Side Diff: third_party/WebKit/Source/core/dom/Element.cpp

Issue 1896793002: Rename (updateLayout/updateStyle).*.() to updateStyleAndLayout.*.() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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
OLDNEW
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 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 return nullAtom; 431 return nullAtom;
432 } 432 }
433 433
434 bool Element::shouldIgnoreAttributeCase() const 434 bool Element::shouldIgnoreAttributeCase() const
435 { 435 {
436 return isHTMLElement() && document().isHTMLDocument(); 436 return isHTMLElement() && document().isHTMLDocument();
437 } 437 }
438 438
439 void Element::scrollIntoView(bool alignToTop) 439 void Element::scrollIntoView(bool alignToTop)
440 { 440 {
441 document().updateLayoutIgnorePendingStylesheetsForNode(this); 441 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
442 442
443 if (!layoutObject()) 443 if (!layoutObject())
444 return; 444 return;
445 445
446 bool makeVisibleInVisualViewport = !document().page()->settings().inertVisua lViewport(); 446 bool makeVisibleInVisualViewport = !document().page()->settings().inertVisua lViewport();
447 447
448 LayoutRect bounds = boundingBox(); 448 LayoutRect bounds = boundingBox();
449 // Align to the top / bottom and to the closest edge. 449 // Align to the top / bottom and to the closest edge.
450 if (alignToTop) 450 if (alignToTop)
451 layoutObject()->scrollRectToVisible(bounds, ScrollAlignment::alignToEdge IfNeeded, ScrollAlignment::alignTopAlways, ProgrammaticScroll, makeVisibleInVisu alViewport); 451 layoutObject()->scrollRectToVisible(bounds, ScrollAlignment::alignToEdge IfNeeded, ScrollAlignment::alignTopAlways, ProgrammaticScroll, makeVisibleInVisu alViewport);
452 else 452 else
453 layoutObject()->scrollRectToVisible(bounds, ScrollAlignment::alignToEdge IfNeeded, ScrollAlignment::alignBottomAlways, ProgrammaticScroll, makeVisibleInV isualViewport); 453 layoutObject()->scrollRectToVisible(bounds, ScrollAlignment::alignToEdge IfNeeded, ScrollAlignment::alignBottomAlways, ProgrammaticScroll, makeVisibleInV isualViewport);
454 454
455 document().setSequentialFocusNavigationStartingPoint(this); 455 document().setSequentialFocusNavigationStartingPoint(this);
456 } 456 }
457 457
458 void Element::scrollIntoViewIfNeeded(bool centerIfNeeded) 458 void Element::scrollIntoViewIfNeeded(bool centerIfNeeded)
459 { 459 {
460 document().updateLayoutIgnorePendingStylesheetsForNode(this); 460 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
461 461
462 if (!layoutObject()) 462 if (!layoutObject())
463 return; 463 return;
464 464
465 bool makeVisibleInVisualViewport = !document().page()->settings().inertVisua lViewport(); 465 bool makeVisibleInVisualViewport = !document().page()->settings().inertVisua lViewport();
466 466
467 LayoutRect bounds = boundingBox(); 467 LayoutRect bounds = boundingBox();
468 if (centerIfNeeded) 468 if (centerIfNeeded)
469 layoutObject()->scrollRectToVisible(bounds, ScrollAlignment::alignCenter IfNeeded, ScrollAlignment::alignCenterIfNeeded, ProgrammaticScroll, makeVisibleI nVisualViewport); 469 layoutObject()->scrollRectToVisible(bounds, ScrollAlignment::alignCenter IfNeeded, ScrollAlignment::alignCenterIfNeeded, ProgrammaticScroll, makeVisibleI nVisualViewport);
470 else 470 else
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 DCHECK(!layoutObject() || layoutObject()->isBox()); 541 DCHECK(!layoutObject() || layoutObject()->isBox());
542 542
543 if (scrollState.fullyConsumed()) 543 if (scrollState.fullyConsumed())
544 return; 544 return;
545 545
546 FloatSize delta(scrollState.deltaX(), scrollState.deltaY()); 546 FloatSize delta(scrollState.deltaX(), scrollState.deltaY());
547 547
548 if (delta.isZero()) 548 if (delta.isZero())
549 return; 549 return;
550 550
551 // TODO(esprehn): This should use updateLayoutIgnorePendingStylesheetsForNod e. 551 // TODO(esprehn): This should use updateStyleAndLayoutIgnorePendingStyleshee tsForNode.
552 document().updateLayoutIgnorePendingStylesheets(); 552 document().updateStyleAndLayoutIgnorePendingStylesheets();
553 553
554 LayoutBox* boxToScroll = nullptr; 554 LayoutBox* boxToScroll = nullptr;
555 555
556 // Handle the scrollingElement separately, as it should scroll the viewport. 556 // Handle the scrollingElement separately, as it should scroll the viewport.
557 if (this == document().scrollingElement()) 557 if (this == document().scrollingElement())
558 boxToScroll = document().layoutView(); 558 boxToScroll = document().layoutView();
559 else if (layoutObject()) 559 else if (layoutObject())
560 boxToScroll = toLayoutBox(layoutObject()); 560 boxToScroll = toLayoutBox(layoutObject());
561 561
562 if (!boxToScroll) 562 if (!boxToScroll)
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 if (callback->nativeScrollBehavior() != WebNativeScrollBehavior::PerformAfte rNativeScroll) 595 if (callback->nativeScrollBehavior() != WebNativeScrollBehavior::PerformAfte rNativeScroll)
596 callback->handleEvent(&scrollState); 596 callback->handleEvent(&scrollState);
597 if (callback->nativeScrollBehavior() != WebNativeScrollBehavior::DisableNati veScroll) 597 if (callback->nativeScrollBehavior() != WebNativeScrollBehavior::DisableNati veScroll)
598 nativeApplyScroll(scrollState); 598 nativeApplyScroll(scrollState);
599 if (callback->nativeScrollBehavior() == WebNativeScrollBehavior::PerformAfte rNativeScroll) 599 if (callback->nativeScrollBehavior() == WebNativeScrollBehavior::PerformAfte rNativeScroll)
600 callback->handleEvent(&scrollState); 600 callback->handleEvent(&scrollState);
601 }; 601 };
602 602
603 int Element::offsetLeft() 603 int Element::offsetLeft()
604 { 604 {
605 document().updateLayoutIgnorePendingStylesheetsForNode(this); 605 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
606 if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject()) 606 if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject())
607 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSna ppedOffsetLeft()), layoutObject->styleRef()).round(); 607 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSna ppedOffsetLeft()), layoutObject->styleRef()).round();
608 return 0; 608 return 0;
609 } 609 }
610 610
611 int Element::offsetTop() 611 int Element::offsetTop()
612 { 612 {
613 document().updateLayoutIgnorePendingStylesheetsForNode(this); 613 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
614 if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject()) 614 if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject())
615 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSna ppedOffsetTop()), layoutObject->styleRef()).round(); 615 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSna ppedOffsetTop()), layoutObject->styleRef()).round();
616 return 0; 616 return 0;
617 } 617 }
618 618
619 int Element::offsetWidth() 619 int Element::offsetWidth()
620 { 620 {
621 document().updateLayoutIgnorePendingStylesheetsForNode(this); 621 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
622 if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject()) 622 if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject())
623 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSna ppedOffsetWidth()), layoutObject->styleRef()).round(); 623 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSna ppedOffsetWidth()), layoutObject->styleRef()).round();
624 return 0; 624 return 0;
625 } 625 }
626 626
627 int Element::offsetHeight() 627 int Element::offsetHeight()
628 { 628 {
629 document().updateLayoutIgnorePendingStylesheetsForNode(this); 629 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
630 if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject()) 630 if (LayoutBoxModelObject* layoutObject = layoutBoxModelObject())
631 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSna ppedOffsetHeight()), layoutObject->styleRef()).round(); 631 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSna ppedOffsetHeight()), layoutObject->styleRef()).round();
632 return 0; 632 return 0;
633 } 633 }
634 634
635 Element* Element::offsetParent() 635 Element* Element::offsetParent()
636 { 636 {
637 document().updateLayoutIgnorePendingStylesheetsForNode(this); 637 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
638 638
639 LayoutObject* layoutObject = this->layoutObject(); 639 LayoutObject* layoutObject = this->layoutObject();
640 if (!layoutObject) 640 if (!layoutObject)
641 return nullptr; 641 return nullptr;
642 642
643 Element* element = layoutObject->offsetParent(); 643 Element* element = layoutObject->offsetParent();
644 if (!element) 644 if (!element)
645 return nullptr; 645 return nullptr;
646 646
647 if (element->isInShadowTree() && !element->containingShadowRoot()->isOpenOrV 0()) 647 if (element->isInShadowTree() && !element->containingShadowRoot()->isOpenOrV 0())
648 return nullptr; 648 return nullptr;
649 649
650 return element; 650 return element;
651 } 651 }
652 652
653 int Element::clientLeft() 653 int Element::clientLeft()
654 { 654 {
655 document().updateLayoutIgnorePendingStylesheetsForNode(this); 655 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
656 656
657 if (LayoutBox* layoutObject = layoutBox()) 657 if (LayoutBox* layoutObject = layoutBox())
658 return adjustLayoutUnitForAbsoluteZoom(layoutObject->clientLeft(), layou tObject->styleRef()).round(); 658 return adjustLayoutUnitForAbsoluteZoom(layoutObject->clientLeft(), layou tObject->styleRef()).round();
659 return 0; 659 return 0;
660 } 660 }
661 661
662 int Element::clientTop() 662 int Element::clientTop()
663 { 663 {
664 document().updateLayoutIgnorePendingStylesheetsForNode(this); 664 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
665 665
666 if (LayoutBox* layoutObject = layoutBox()) 666 if (LayoutBox* layoutObject = layoutBox())
667 return adjustLayoutUnitForAbsoluteZoom(layoutObject->clientTop(), layout Object->styleRef()).round(); 667 return adjustLayoutUnitForAbsoluteZoom(layoutObject->clientTop(), layout Object->styleRef()).round();
668 return 0; 668 return 0;
669 } 669 }
670 670
671 int Element::clientWidth() 671 int Element::clientWidth()
672 { 672 {
673 // When in strict mode, clientWidth for the document element should return t he width of the containing frame. 673 // When in strict mode, clientWidth for the document element should return t he width of the containing frame.
674 // When in quirks mode, clientWidth for the body element should return the w idth of the containing frame. 674 // When in quirks mode, clientWidth for the body element should return the w idth of the containing frame.
675 bool inQuirksMode = document().inQuirksMode(); 675 bool inQuirksMode = document().inQuirksMode();
676 if ((!inQuirksMode && document().documentElement() == this) 676 if ((!inQuirksMode && document().documentElement() == this)
677 || (inQuirksMode && isHTMLElement() && document().body() == this)) { 677 || (inQuirksMode && isHTMLElement() && document().body() == this)) {
678 if (LayoutViewItem layoutView = LayoutViewItem(document().layoutView())) { 678 if (LayoutViewItem layoutView = LayoutViewItem(document().layoutView())) {
679 if (!RuntimeEnabledFeatures::overlayScrollbarsEnabled() || !document ().frame()->isLocalRoot()) 679 if (!RuntimeEnabledFeatures::overlayScrollbarsEnabled() || !document ().frame()->isLocalRoot())
680 document().updateLayoutIgnorePendingStylesheetsForNode(this); 680 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(t his);
681 if (document().page()->settings().forceZeroLayoutHeight()) 681 if (document().page()->settings().forceZeroLayoutHeight())
682 return adjustLayoutUnitForAbsoluteZoom(layoutView.overflowClipRe ct(LayoutPoint()).width(), layoutView.styleRef()).round(); 682 return adjustLayoutUnitForAbsoluteZoom(layoutView.overflowClipRe ct(LayoutPoint()).width(), layoutView.styleRef()).round();
683 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutView.layoutS ize().width()), layoutView.styleRef()).round(); 683 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutView.layoutS ize().width()), layoutView.styleRef()).round();
684 } 684 }
685 } 685 }
686 686
687 document().updateLayoutIgnorePendingStylesheetsForNode(this); 687 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
688 688
689 if (LayoutBox* layoutObject = layoutBox()) 689 if (LayoutBox* layoutObject = layoutBox())
690 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSna ppedClientWidth()), layoutObject->styleRef()).round(); 690 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSna ppedClientWidth()), layoutObject->styleRef()).round();
691 return 0; 691 return 0;
692 } 692 }
693 693
694 int Element::clientHeight() 694 int Element::clientHeight()
695 { 695 {
696 // When in strict mode, clientHeight for the document element should return the height of the containing frame. 696 // When in strict mode, clientHeight for the document element should return the height of the containing frame.
697 // When in quirks mode, clientHeight for the body element should return the height of the containing frame. 697 // When in quirks mode, clientHeight for the body element should return the height of the containing frame.
698 bool inQuirksMode = document().inQuirksMode(); 698 bool inQuirksMode = document().inQuirksMode();
699 699
700 if ((!inQuirksMode && document().documentElement() == this) 700 if ((!inQuirksMode && document().documentElement() == this)
701 || (inQuirksMode && isHTMLElement() && document().body() == this)) { 701 || (inQuirksMode && isHTMLElement() && document().body() == this)) {
702 if (LayoutViewItem layoutView = LayoutViewItem(document().layoutView())) { 702 if (LayoutViewItem layoutView = LayoutViewItem(document().layoutView())) {
703 if (!RuntimeEnabledFeatures::overlayScrollbarsEnabled() || !document ().frame()->isLocalRoot()) 703 if (!RuntimeEnabledFeatures::overlayScrollbarsEnabled() || !document ().frame()->isLocalRoot())
704 document().updateLayoutIgnorePendingStylesheetsForNode(this); 704 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(t his);
705 if (document().page()->settings().forceZeroLayoutHeight()) 705 if (document().page()->settings().forceZeroLayoutHeight())
706 return adjustLayoutUnitForAbsoluteZoom(layoutView.overflowClipRe ct(LayoutPoint()).height(), layoutView.styleRef()).round(); 706 return adjustLayoutUnitForAbsoluteZoom(layoutView.overflowClipRe ct(LayoutPoint()).height(), layoutView.styleRef()).round();
707 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutView.layoutS ize().height()), layoutView.styleRef()).round(); 707 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutView.layoutS ize().height()), layoutView.styleRef()).round();
708 } 708 }
709 } 709 }
710 710
711 document().updateLayoutIgnorePendingStylesheetsForNode(this); 711 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
712 712
713 if (LayoutBox* layoutObject = layoutBox()) 713 if (LayoutBox* layoutObject = layoutBox())
714 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSna ppedClientHeight()), layoutObject->styleRef()).round(); 714 return adjustLayoutUnitForAbsoluteZoom(LayoutUnit(layoutObject->pixelSna ppedClientHeight()), layoutObject->styleRef()).round();
715 return 0; 715 return 0;
716 } 716 }
717 717
718 double Element::scrollLeft() 718 double Element::scrollLeft()
719 { 719 {
720 document().updateLayoutIgnorePendingStylesheetsForNode(this); 720 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
721 721
722 if (document().scrollingElement() == this) { 722 if (document().scrollingElement() == this) {
723 if (document().domWindow()) 723 if (document().domWindow())
724 return document().domWindow()->scrollX(); 724 return document().domWindow()->scrollX();
725 return 0; 725 return 0;
726 } 726 }
727 727
728 if (LayoutBox* box = layoutBox()) 728 if (LayoutBox* box = layoutBox())
729 return adjustScrollForAbsoluteZoom(box->scrollLeft(), *box); 729 return adjustScrollForAbsoluteZoom(box->scrollLeft(), *box);
730 730
731 return 0; 731 return 0;
732 } 732 }
733 733
734 double Element::scrollTop() 734 double Element::scrollTop()
735 { 735 {
736 document().updateLayoutIgnorePendingStylesheetsForNode(this); 736 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
737 737
738 if (document().scrollingElement() == this) { 738 if (document().scrollingElement() == this) {
739 if (document().domWindow()) 739 if (document().domWindow())
740 return document().domWindow()->scrollY(); 740 return document().domWindow()->scrollY();
741 return 0; 741 return 0;
742 } 742 }
743 743
744 if (LayoutBox* box = layoutBox()) 744 if (LayoutBox* box = layoutBox())
745 return adjustScrollForAbsoluteZoom(box->scrollTop(), *box); 745 return adjustScrollForAbsoluteZoom(box->scrollTop(), *box);
746 746
747 return 0; 747 return 0;
748 } 748 }
749 749
750 void Element::setScrollLeft(double newLeft) 750 void Element::setScrollLeft(double newLeft)
751 { 751 {
752 document().updateLayoutIgnorePendingStylesheetsForNode(this); 752 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
753 753
754 newLeft = ScrollableArea::normalizeNonFiniteScroll(newLeft); 754 newLeft = ScrollableArea::normalizeNonFiniteScroll(newLeft);
755 755
756 if (document().scrollingElement() == this) { 756 if (document().scrollingElement() == this) {
757 if (LocalDOMWindow* window = document().domWindow()) 757 if (LocalDOMWindow* window = document().domWindow())
758 window->scrollTo(newLeft, window->scrollY()); 758 window->scrollTo(newLeft, window->scrollY());
759 } else { 759 } else {
760 LayoutBox* box = layoutBox(); 760 LayoutBox* box = layoutBox();
761 if (box) 761 if (box)
762 box->setScrollLeft(LayoutUnit::fromFloatRound(newLeft * box->style() ->effectiveZoom())); 762 box->setScrollLeft(LayoutUnit::fromFloatRound(newLeft * box->style() ->effectiveZoom()));
763 } 763 }
764 } 764 }
765 765
766 void Element::setScrollTop(double newTop) 766 void Element::setScrollTop(double newTop)
767 { 767 {
768 document().updateLayoutIgnorePendingStylesheetsForNode(this); 768 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
769 769
770 newTop = ScrollableArea::normalizeNonFiniteScroll(newTop); 770 newTop = ScrollableArea::normalizeNonFiniteScroll(newTop);
771 771
772 if (document().scrollingElement() == this) { 772 if (document().scrollingElement() == this) {
773 if (LocalDOMWindow* window = document().domWindow()) 773 if (LocalDOMWindow* window = document().domWindow())
774 window->scrollTo(window->scrollX(), newTop); 774 window->scrollTo(window->scrollX(), newTop);
775 } else { 775 } else {
776 LayoutBox* box = layoutBox(); 776 LayoutBox* box = layoutBox();
777 if (box) 777 if (box)
778 box->setScrollTop(LayoutUnit::fromFloatRound(newTop * box->style()-> effectiveZoom())); 778 box->setScrollTop(LayoutUnit::fromFloatRound(newTop * box->style()-> effectiveZoom()));
779 } 779 }
780 } 780 }
781 781
782 int Element::scrollWidth() 782 int Element::scrollWidth()
783 { 783 {
784 document().updateLayoutIgnorePendingStylesheetsForNode(this); 784 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
785 785
786 if (document().scrollingElement() == this) { 786 if (document().scrollingElement() == this) {
787 if (document().view()) 787 if (document().view())
788 return adjustForAbsoluteZoom(document().view()->contentsWidth(), doc ument().frame()->pageZoomFactor()); 788 return adjustForAbsoluteZoom(document().view()->contentsWidth(), doc ument().frame()->pageZoomFactor());
789 return 0; 789 return 0;
790 } 790 }
791 791
792 if (LayoutBox* box = layoutBox()) 792 if (LayoutBox* box = layoutBox())
793 return adjustForAbsoluteZoom(box->pixelSnappedScrollWidth(), box); 793 return adjustForAbsoluteZoom(box->pixelSnappedScrollWidth(), box);
794 return 0; 794 return 0;
795 } 795 }
796 796
797 int Element::scrollHeight() 797 int Element::scrollHeight()
798 { 798 {
799 document().updateLayoutIgnorePendingStylesheetsForNode(this); 799 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
800 800
801 if (document().scrollingElement() == this) { 801 if (document().scrollingElement() == this) {
802 if (document().view()) 802 if (document().view())
803 return adjustForAbsoluteZoom(document().view()->contentsHeight(), do cument().frame()->pageZoomFactor()); 803 return adjustForAbsoluteZoom(document().view()->contentsHeight(), do cument().frame()->pageZoomFactor());
804 return 0; 804 return 0;
805 } 805 }
806 806
807 if (LayoutBox* box = layoutBox()) 807 if (LayoutBox* box = layoutBox())
808 return adjustForAbsoluteZoom(box->pixelSnappedScrollHeight(), box); 808 return adjustForAbsoluteZoom(box->pixelSnappedScrollHeight(), box);
809 return 0; 809 return 0;
810 } 810 }
811 811
812 void Element::scrollBy(double x, double y) 812 void Element::scrollBy(double x, double y)
813 { 813 {
814 ScrollToOptions scrollToOptions; 814 ScrollToOptions scrollToOptions;
815 scrollToOptions.setLeft(x); 815 scrollToOptions.setLeft(x);
816 scrollToOptions.setTop(y); 816 scrollToOptions.setTop(y);
817 scrollBy(scrollToOptions); 817 scrollBy(scrollToOptions);
818 } 818 }
819 819
820 void Element::scrollBy(const ScrollToOptions& scrollToOptions) 820 void Element::scrollBy(const ScrollToOptions& scrollToOptions)
821 { 821 {
822 // FIXME: This should be removed once scroll updates are processed only afte r 822 // FIXME: This should be removed once scroll updates are processed only afte r
823 // the compositing update. See http://crbug.com/420741. 823 // the compositing update. See http://crbug.com/420741.
824 document().updateLayoutIgnorePendingStylesheetsForNode(this); 824 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
825 825
826 if (document().scrollingElement() == this) { 826 if (document().scrollingElement() == this) {
827 scrollFrameBy(scrollToOptions); 827 scrollFrameBy(scrollToOptions);
828 } else { 828 } else {
829 scrollLayoutBoxBy(scrollToOptions); 829 scrollLayoutBoxBy(scrollToOptions);
830 } 830 }
831 } 831 }
832 832
833 void Element::scrollTo(double x, double y) 833 void Element::scrollTo(double x, double y)
834 { 834 {
835 ScrollToOptions scrollToOptions; 835 ScrollToOptions scrollToOptions;
836 scrollToOptions.setLeft(x); 836 scrollToOptions.setLeft(x);
837 scrollToOptions.setTop(y); 837 scrollToOptions.setTop(y);
838 scrollTo(scrollToOptions); 838 scrollTo(scrollToOptions);
839 } 839 }
840 840
841 void Element::scrollTo(const ScrollToOptions& scrollToOptions) 841 void Element::scrollTo(const ScrollToOptions& scrollToOptions)
842 { 842 {
843 // FIXME: This should be removed once scroll updates are processed only afte r 843 // FIXME: This should be removed once scroll updates are processed only afte r
844 // the compositing update. See http://crbug.com/420741. 844 // the compositing update. See http://crbug.com/420741.
845 document().updateLayoutIgnorePendingStylesheetsForNode(this); 845 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
846 846
847 if (document().scrollingElement() == this) { 847 if (document().scrollingElement() == this) {
848 scrollFrameTo(scrollToOptions); 848 scrollFrameTo(scrollToOptions);
849 } else { 849 } else {
850 scrollLayoutBoxTo(scrollToOptions); 850 scrollLayoutBoxTo(scrollToOptions);
851 } 851 }
852 } 852 }
853 853
854 void Element::scrollLayoutBoxBy(const ScrollToOptions& scrollToOptions) 854 void Element::scrollLayoutBoxBy(const ScrollToOptions& scrollToOptions)
855 { 855 {
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 { 956 {
957 if (!hasRareData()) 957 if (!hasRareData())
958 return CompositorMutableProperty::kNone; 958 return CompositorMutableProperty::kNone;
959 if (CompositorProxiedPropertySet* set = elementRareData()->proxiedPropertyCo unts()) 959 if (CompositorProxiedPropertySet* set = elementRareData()->proxiedPropertyCo unts())
960 return set->proxiedProperties(); 960 return set->proxiedProperties();
961 return CompositorMutableProperty::kNone; 961 return CompositorMutableProperty::kNone;
962 } 962 }
963 963
964 bool Element::hasNonEmptyLayoutSize() const 964 bool Element::hasNonEmptyLayoutSize() const
965 { 965 {
966 document().updateLayoutIgnorePendingStylesheets(); 966 document().updateStyleAndLayoutIgnorePendingStylesheets();
967 967
968 if (LayoutBoxModelObject* box = layoutBoxModelObject()) 968 if (LayoutBoxModelObject* box = layoutBoxModelObject())
969 return box->hasNonEmptyLayoutSize(); 969 return box->hasNonEmptyLayoutSize();
970 return false; 970 return false;
971 } 971 }
972 972
973 IntRect Element::boundsInViewport() const 973 IntRect Element::boundsInViewport() const
974 { 974 {
975 document().updateLayoutIgnorePendingStylesheets(); 975 document().updateStyleAndLayoutIgnorePendingStylesheets();
976 976
977 FrameView* view = document().view(); 977 FrameView* view = document().view();
978 if (!view) 978 if (!view)
979 return IntRect(); 979 return IntRect();
980 980
981 Vector<FloatQuad> quads; 981 Vector<FloatQuad> quads;
982 if (isSVGElement() && layoutObject()) { 982 if (isSVGElement() && layoutObject()) {
983 // Get the bounding rectangle from the SVG model. 983 // Get the bounding rectangle from the SVG model.
984 if (toSVGElement(this)->isSVGGraphicsElement()) 984 if (toSVGElement(this)->isSVGGraphicsElement())
985 quads.append(layoutObject()->localToAbsoluteQuad(layoutObject()->obj ectBoundingBox())); 985 quads.append(layoutObject()->localToAbsoluteQuad(layoutObject()->obj ectBoundingBox()));
986 } else { 986 } else {
987 // Get the bounding rectangle from the box model. 987 // Get the bounding rectangle from the box model.
988 if (layoutBoxModelObject()) 988 if (layoutBoxModelObject())
989 layoutBoxModelObject()->absoluteQuads(quads); 989 layoutBoxModelObject()->absoluteQuads(quads);
990 } 990 }
991 991
992 if (quads.isEmpty()) 992 if (quads.isEmpty())
993 return IntRect(); 993 return IntRect();
994 994
995 IntRect result = quads[0].enclosingBoundingBox(); 995 IntRect result = quads[0].enclosingBoundingBox();
996 for (size_t i = 1; i < quads.size(); ++i) 996 for (size_t i = 1; i < quads.size(); ++i)
997 result.unite(quads[i].enclosingBoundingBox()); 997 result.unite(quads[i].enclosingBoundingBox());
998 998
999 return view->contentsToViewport(result); 999 return view->contentsToViewport(result);
1000 } 1000 }
1001 1001
1002 ClientRectList* Element::getClientRects() 1002 ClientRectList* Element::getClientRects()
1003 { 1003 {
1004 document().updateLayoutIgnorePendingStylesheetsForNode(this); 1004 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
1005 1005
1006 LayoutObject* elementLayoutObject = layoutObject(); 1006 LayoutObject* elementLayoutObject = layoutObject();
1007 if (!elementLayoutObject || (!elementLayoutObject->isBoxModelObject() && !el ementLayoutObject->isBR())) 1007 if (!elementLayoutObject || (!elementLayoutObject->isBoxModelObject() && !el ementLayoutObject->isBR()))
1008 return ClientRectList::create(); 1008 return ClientRectList::create();
1009 1009
1010 // FIXME: Handle SVG elements. 1010 // FIXME: Handle SVG elements.
1011 // FIXME: Handle table/inline-table with a caption. 1011 // FIXME: Handle table/inline-table with a caption.
1012 1012
1013 Vector<FloatQuad> quads; 1013 Vector<FloatQuad> quads;
1014 elementLayoutObject->absoluteQuads(quads); 1014 elementLayoutObject->absoluteQuads(quads);
1015 document().adjustFloatQuadsForScrollAndAbsoluteZoom(quads, *elementLayoutObj ect); 1015 document().adjustFloatQuadsForScrollAndAbsoluteZoom(quads, *elementLayoutObj ect);
1016 return ClientRectList::create(quads); 1016 return ClientRectList::create(quads);
1017 } 1017 }
1018 1018
1019 ClientRect* Element::getBoundingClientRect() 1019 ClientRect* Element::getBoundingClientRect()
1020 { 1020 {
1021 document().updateLayoutIgnorePendingStylesheetsForNode(this); 1021 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
1022 1022
1023 Vector<FloatQuad> quads; 1023 Vector<FloatQuad> quads;
1024 LayoutObject* elementLayoutObject = layoutObject(); 1024 LayoutObject* elementLayoutObject = layoutObject();
1025 if (elementLayoutObject) { 1025 if (elementLayoutObject) {
1026 if (isSVGElement() && !elementLayoutObject->isSVGRoot()) { 1026 if (isSVGElement() && !elementLayoutObject->isSVGRoot()) {
1027 // Get the bounding rectangle from the SVG model. 1027 // Get the bounding rectangle from the SVG model.
1028 if (toSVGElement(this)->isSVGGraphicsElement()) 1028 if (toSVGElement(this)->isSVGGraphicsElement())
1029 quads.append(elementLayoutObject->localToAbsoluteQuad(elementLay outObject->objectBoundingBox())); 1029 quads.append(elementLayoutObject->localToAbsoluteQuad(elementLay outObject->objectBoundingBox()));
1030 } else if (elementLayoutObject->isBoxModelObject() || elementLayoutObjec t->isBR()) { 1030 } else if (elementLayoutObject->isBoxModelObject() || elementLayoutObjec t->isBR()) {
1031 elementLayoutObject->absoluteQuads(quads); 1031 elementLayoutObject->absoluteQuads(quads);
1032 } 1032 }
1033 } 1033 }
1034 1034
1035 if (quads.isEmpty()) 1035 if (quads.isEmpty())
1036 return ClientRect::create(); 1036 return ClientRect::create();
1037 1037
1038 FloatRect result = quads[0].boundingBox(); 1038 FloatRect result = quads[0].boundingBox();
1039 for (size_t i = 1; i < quads.size(); ++i) 1039 for (size_t i = 1; i < quads.size(); ++i)
1040 result.unite(quads[i].boundingBox()); 1040 result.unite(quads[i].boundingBox());
1041 1041
1042 DCHECK(elementLayoutObject); 1042 DCHECK(elementLayoutObject);
1043 document().adjustFloatRectForScrollAndAbsoluteZoom(result, *elementLayoutObj ect); 1043 document().adjustFloatRectForScrollAndAbsoluteZoom(result, *elementLayoutObj ect);
1044 return ClientRect::create(result); 1044 return ClientRect::create(result);
1045 } 1045 }
1046 1046
1047 const AtomicString& Element::computedRole() 1047 const AtomicString& Element::computedRole()
1048 { 1048 {
1049 document().updateLayoutIgnorePendingStylesheetsForNode(this); 1049 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
1050 OwnPtr<ScopedAXObjectCache> cache = ScopedAXObjectCache::create(document()); 1050 OwnPtr<ScopedAXObjectCache> cache = ScopedAXObjectCache::create(document());
1051 return cache->get()->computedRoleForNode(this); 1051 return cache->get()->computedRoleForNode(this);
1052 } 1052 }
1053 1053
1054 String Element::computedName() 1054 String Element::computedName()
1055 { 1055 {
1056 document().updateLayoutIgnorePendingStylesheetsForNode(this); 1056 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
1057 OwnPtr<ScopedAXObjectCache> cache = ScopedAXObjectCache::create(document()); 1057 OwnPtr<ScopedAXObjectCache> cache = ScopedAXObjectCache::create(document());
1058 return cache->get()->computedNameForNode(this); 1058 return cache->get()->computedNameForNode(this);
1059 } 1059 }
1060 1060
1061 const AtomicString& Element::getAttribute(const AtomicString& localName) const 1061 const AtomicString& Element::getAttribute(const AtomicString& localName) const
1062 { 1062 {
1063 if (!elementData()) 1063 if (!elementData())
1064 return nullAtom; 1064 return nullAtom;
1065 synchronizeAttribute(localName); 1065 synchronizeAttribute(localName);
1066 if (const Attribute* attribute = elementData()->attributes().find(localName, shouldIgnoreAttributeCase())) 1066 if (const Attribute* attribute = elementData()->attributes().find(localName, shouldIgnoreAttributeCase()))
(...skipping 1303 matching lines...) Expand 10 before | Expand all | Expand 10 after
2370 { 2370 {
2371 if (!inShadowIncludingDocument()) 2371 if (!inShadowIncludingDocument())
2372 return; 2372 return;
2373 2373
2374 if (document().focusedElement() == this) 2374 if (document().focusedElement() == this)
2375 return; 2375 return;
2376 2376
2377 if (!document().isActive()) 2377 if (!document().isActive())
2378 return; 2378 return;
2379 2379
2380 document().updateLayoutIgnorePendingStylesheetsForNode(this); 2380 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
2381 if (!isFocusable()) 2381 if (!isFocusable())
2382 return; 2382 return;
2383 2383
2384 if (authorShadowRoot() && authorShadowRoot()->delegatesFocus()) { 2384 if (authorShadowRoot() && authorShadowRoot()->delegatesFocus()) {
2385 if (isShadowIncludingInclusiveAncestorOf(document().focusedElement())) 2385 if (isShadowIncludingInclusiveAncestorOf(document().focusedElement()))
2386 return; 2386 return;
2387 2387
2388 // Slide the focus to its inner node. 2388 // Slide the focus to its inner node.
2389 Element* found = document().page()->focusController().findFocusableEleme ntInShadowHost(*this); 2389 Element* found = document().page()->focusController().findFocusableEleme ntInShadowHost(*this);
2390 if (found && isShadowIncludingInclusiveAncestorOf(found)) { 2390 if (found && isShadowIncludingInclusiveAncestorOf(found)) {
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
2689 else if (document().frame()->eventHandler().getPointerEventType(pointerI d) == WebPointerProperties::PointerType::Touch) 2689 else if (document().frame()->eventHandler().getPointerEventType(pointerI d) == WebPointerProperties::PointerType::Touch)
2690 exceptionState.throwDOMException(InvalidPointerId, "InvalidPointerId "); 2690 exceptionState.throwDOMException(InvalidPointerId, "InvalidPointerId ");
2691 else 2691 else
2692 document().frame()->eventHandler().releasePointerCapture(pointerId, this); 2692 document().frame()->eventHandler().releasePointerCapture(pointerId, this);
2693 } 2693 }
2694 } 2694 }
2695 2695
2696 String Element::innerText() 2696 String Element::innerText()
2697 { 2697 {
2698 // We need to update layout, since plainText uses line boxes in the layout t ree. 2698 // We need to update layout, since plainText uses line boxes in the layout t ree.
2699 document().updateLayoutIgnorePendingStylesheetsForNode(this); 2699 document().updateStyleAndLayoutIgnorePendingStylesheetsForNode(this);
2700 2700
2701 if (!layoutObject()) 2701 if (!layoutObject())
2702 return textContent(true); 2702 return textContent(true);
2703 2703
2704 return plainText(EphemeralRange::rangeOfContents(*this), TextIteratorForInne rText); 2704 return plainText(EphemeralRange::rangeOfContents(*this), TextIteratorForInne rText);
2705 } 2705 }
2706 2706
2707 String Element::outerText() 2707 String Element::outerText()
2708 { 2708 {
2709 // Getting outerText is the same as getting innerText, only 2709 // Getting outerText is the same as getting innerText, only
(...skipping 997 matching lines...) Expand 10 before | Expand all | Expand 10 after
3707 3707
3708 DEFINE_TRACE_WRAPPERS(Element) 3708 DEFINE_TRACE_WRAPPERS(Element)
3709 { 3709 {
3710 if (hasRareData()) { 3710 if (hasRareData()) {
3711 visitor->traceWrappers(elementRareData()); 3711 visitor->traceWrappers(elementRareData());
3712 } 3712 }
3713 ContainerNode::traceWrappers(visitor); 3713 ContainerNode::traceWrappers(visitor);
3714 } 3714 }
3715 3715
3716 } // namespace blink 3716 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/DocumentStatisticsCollector.cpp ('k') | third_party/WebKit/Source/core/dom/Fullscreen.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698