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

Side by Side Diff: third_party/WebKit/Source/core/style/ComputedStyle.cpp

Issue 2813563005: Remove fast path checks that look into the Groups in ComputedStyle (Closed)
Patch Set: Reintroduce comparison of objects Created 3 years, 8 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
« no previous file with comments | « third_party/WebKit/Source/core/dom/Node.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) 2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights
4 * reserved. 4 * reserved.
5 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. 5 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 other.OriginalDisplay() && // Not generated in ComputedStyleBase 482 other.OriginalDisplay() && // Not generated in ComputedStyleBase
483 VerticalAlign() == 483 VerticalAlign() ==
484 other.VerticalAlign() && // Not generated in ComputedStyleBase 484 other.VerticalAlign() && // Not generated in ComputedStyleBase
485 box_ == other.box_ && 485 box_ == other.box_ &&
486 visual_ == other.visual_ && background_ == other.background_ && 486 visual_ == other.visual_ && background_ == other.background_ &&
487 surround_ == other.surround_ && 487 surround_ == other.surround_ &&
488 rare_non_inherited_data_ == other.rare_non_inherited_data_ && 488 rare_non_inherited_data_ == other.rare_non_inherited_data_ &&
489 svg_style_->NonInheritedEqual(*other.svg_style_); 489 svg_style_->NonInheritedEqual(*other.svg_style_);
490 } 490 }
491 491
492 // TODO(nainar): This fast path still remains.
492 bool ComputedStyle::InheritedDataShared(const ComputedStyle& other) const { 493 bool ComputedStyle::InheritedDataShared(const ComputedStyle& other) const {
493 // This is a fast check that only looks if the data structures are shared. 494 // This is a fast check that only looks if the data structures are shared.
494 // TODO(sashab): Should ComputedStyleBase have an inheritedDataShared method? 495 // TODO(sashab): Should ComputedStyleBase have an inheritedDataShared method?
495 return ComputedStyleBase::InheritedEqual(other) && 496 return ComputedStyleBase::InheritedEqual(other) &&
496 style_inherited_data_.Get() == other.style_inherited_data_.Get() && 497 style_inherited_data_.Get() == other.style_inherited_data_.Get() &&
497 svg_style_.Get() == other.svg_style_.Get() && 498 svg_style_.Get() == other.svg_style_.Get() &&
498 rare_inherited_data_.Get() == other.rare_inherited_data_.Get(); 499 rare_inherited_data_.Get() == other.rare_inherited_data_.Get();
499 } 500 }
500 501
501 static bool DependenceOnContentHeightHasChanged(const ComputedStyle& a, 502 static bool DependenceOnContentHeightHasChanged(const ComputedStyle& a,
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 573
573 return diff; 574 return diff;
574 } 575 }
575 576
576 bool ComputedStyle::ScrollAnchorDisablingPropertyChanged( 577 bool ComputedStyle::ScrollAnchorDisablingPropertyChanged(
577 const ComputedStyle& other, 578 const ComputedStyle& other,
578 const StyleDifference& diff) const { 579 const StyleDifference& diff) const {
579 if (GetPosition() != other.GetPosition()) 580 if (GetPosition() != other.GetPosition())
580 return true; 581 return true;
581 582
582 if (box_.Get() != other.box_.Get()) { 583 if (box_->Width() != other.box_->Width() ||
583 if (box_->Width() != other.box_->Width() || 584 box_->MinWidth() != other.box_->MinWidth() ||
584 box_->MinWidth() != other.box_->MinWidth() || 585 box_->MaxWidth() != other.box_->MaxWidth() ||
585 box_->MaxWidth() != other.box_->MaxWidth() || 586 box_->Height() != other.box_->Height() ||
586 box_->Height() != other.box_->Height() || 587 box_->MinHeight() != other.box_->MinHeight() ||
587 box_->MinHeight() != other.box_->MinHeight() || 588 box_->MaxHeight() != other.box_->MaxHeight())
588 box_->MaxHeight() != other.box_->MaxHeight()) 589 return true;
589 return true;
590 }
591 590
592 if (surround_.Get() != other.surround_.Get()) { 591 if (surround_->margin_ != other.surround_->margin_ || !OffsetEqual(other) ||
593 if (surround_->margin_ != other.surround_->margin_ || !OffsetEqual(other) || 592 surround_->padding_ != other.surround_->padding_)
594 surround_->padding_ != other.surround_->padding_) 593 return true;
595 return true;
596 }
597 594
598 if (diff.TransformChanged()) 595 if (diff.TransformChanged())
599 return true; 596 return true;
600 597
601 return false; 598 return false;
602 } 599 }
603 600
604 bool ComputedStyle::DiffNeedsFullLayoutAndPaintInvalidation( 601 bool ComputedStyle::DiffNeedsFullLayoutAndPaintInvalidation(
605 const ComputedStyle& other) const { 602 const ComputedStyle& other) const {
606 // FIXME: Not all cases in this method need both full layout and paint 603 // FIXME: Not all cases in this method need both full layout and paint
607 // invalidation. 604 // invalidation.
608 // Should move cases into diffNeedsFullLayout() if 605 // Should move cases into diffNeedsFullLayout() if
609 // - don't need paint invalidation at all; 606 // - don't need paint invalidation at all;
610 // - or the layoutObject knows how to exactly invalidate paints caused by the 607 // - or the layoutObject knows how to exactly invalidate paints caused by the
611 // layout change instead of forced full paint invalidation. 608 // layout change instead of forced full paint invalidation.
612 609
613 if (surround_.Get() != other.surround_.Get()) { 610 // If our border widths change, then we need to layout. Other changes to
614 // If our border widths change, then we need to layout. Other changes to 611 // borders only necessitate a paint invalidation.
615 // borders only necessitate a paint invalidation. 612 if (BorderLeftWidth() != other.BorderLeftWidth() ||
616 if (BorderLeftWidth() != other.BorderLeftWidth() || 613 BorderTopWidth() != other.BorderTopWidth() ||
617 BorderTopWidth() != other.BorderTopWidth() || 614 BorderBottomWidth() != other.BorderBottomWidth() ||
618 BorderBottomWidth() != other.BorderBottomWidth() || 615 BorderRightWidth() != other.BorderRightWidth())
619 BorderRightWidth() != other.BorderRightWidth()) 616 return true;
620 return true;
621 617
622 if (surround_->padding_ != other.surround_->padding_) 618 if (surround_->padding_ != other.surround_->padding_)
623 return true; 619 return true;
620
621 if (rare_non_inherited_data_->appearance_ !=
622 other.rare_non_inherited_data_->appearance_ ||
623 rare_non_inherited_data_->margin_before_collapse !=
624 other.rare_non_inherited_data_->margin_before_collapse ||
625 rare_non_inherited_data_->margin_after_collapse !=
626 other.rare_non_inherited_data_->margin_after_collapse ||
627 rare_non_inherited_data_->line_clamp !=
628 other.rare_non_inherited_data_->line_clamp ||
629 rare_non_inherited_data_->text_overflow !=
630 other.rare_non_inherited_data_->text_overflow ||
631 rare_non_inherited_data_->shape_margin_ !=
632 other.rare_non_inherited_data_->shape_margin_ ||
633 rare_non_inherited_data_->order_ !=
634 other.rare_non_inherited_data_->order_ ||
635 rare_non_inherited_data_->HasFilters() !=
636 other.rare_non_inherited_data_->HasFilters())
637 return true;
638
639 if (rare_non_inherited_data_->grid_.Get() !=
640 other.rare_non_inherited_data_->grid_.Get() &&
641 *rare_non_inherited_data_->grid_.Get() !=
642 *other.rare_non_inherited_data_->grid_.Get())
643 return true;
644
645 if (rare_non_inherited_data_->grid_item_.Get() !=
646 other.rare_non_inherited_data_->grid_item_.Get() &&
647 *rare_non_inherited_data_->grid_item_.Get() !=
648 *other.rare_non_inherited_data_->grid_item_.Get())
649 return true;
650
651 if (rare_non_inherited_data_->deprecated_flexible_box_.Get() !=
652 other.rare_non_inherited_data_->deprecated_flexible_box_.Get() &&
653 *rare_non_inherited_data_->deprecated_flexible_box_.Get() !=
654 *other.rare_non_inherited_data_->deprecated_flexible_box_.Get())
655 return true;
656
657 if (rare_non_inherited_data_->flexible_box_.Get() !=
658 other.rare_non_inherited_data_->flexible_box_.Get() &&
659 *rare_non_inherited_data_->flexible_box_.Get() !=
660 *other.rare_non_inherited_data_->flexible_box_.Get())
661 return true;
662
663 if (rare_non_inherited_data_->multi_col_.Get() !=
664 other.rare_non_inherited_data_->multi_col_.Get() &&
665 *rare_non_inherited_data_->multi_col_.Get() !=
666 *other.rare_non_inherited_data_->multi_col_.Get())
667 return true;
668
669 // If the counter directives change, trigger a relayout to re-calculate
670 // counter values and rebuild the counter node tree.
671 const CounterDirectiveMap* map_a =
672 rare_non_inherited_data_->counter_directives_.get();
673 const CounterDirectiveMap* map_b =
674 other.rare_non_inherited_data_->counter_directives_.get();
675 if (!(map_a == map_b || (map_a && map_b && *map_a == *map_b)))
676 return true;
677
678 // We only need do layout for opacity changes if adding or losing opacity
679 // could trigger a change
680 // in us being a stacking context.
681 if (IsStackingContext() != other.IsStackingContext() &&
682 rare_non_inherited_data_->HasOpacity() !=
683 other.rare_non_inherited_data_->HasOpacity()) {
684 // FIXME: We would like to use SimplifiedLayout here, but we can't quite
685 // do that yet. We need to make sure SimplifiedLayout can operate
686 // correctly on LayoutInlines (we will need to add a
687 // selfNeedsSimplifiedLayout bit in order to not get confused and taint
688 // every line). In addition we need to solve the floating object issue
689 // when layers come and go. Right now a full layout is necessary to keep
690 // floating object lists sane.
691 return true;
624 } 692 }
625 693
626 if (rare_non_inherited_data_.Get() != other.rare_non_inherited_data_.Get()) { 694 if (rare_inherited_data_->highlight !=
627 if (rare_non_inherited_data_->appearance_ != 695 other.rare_inherited_data_->highlight ||
628 other.rare_non_inherited_data_->appearance_ || 696 rare_inherited_data_->indent != other.rare_inherited_data_->indent ||
629 rare_non_inherited_data_->margin_before_collapse != 697 rare_inherited_data_->text_align_last_ !=
630 other.rare_non_inherited_data_->margin_before_collapse || 698 other.rare_inherited_data_->text_align_last_ ||
631 rare_non_inherited_data_->margin_after_collapse != 699 rare_inherited_data_->text_indent_line_ !=
632 other.rare_non_inherited_data_->margin_after_collapse || 700 other.rare_inherited_data_->text_indent_line_ ||
633 rare_non_inherited_data_->line_clamp != 701 rare_inherited_data_->effective_zoom_ !=
634 other.rare_non_inherited_data_->line_clamp || 702 other.rare_inherited_data_->effective_zoom_ ||
635 rare_non_inherited_data_->text_overflow != 703 rare_inherited_data_->word_break !=
636 other.rare_non_inherited_data_->text_overflow || 704 other.rare_inherited_data_->word_break ||
637 rare_non_inherited_data_->shape_margin_ != 705 rare_inherited_data_->overflow_wrap !=
638 other.rare_non_inherited_data_->shape_margin_ || 706 other.rare_inherited_data_->overflow_wrap ||
639 rare_non_inherited_data_->order_ != 707 rare_inherited_data_->line_break !=
640 other.rare_non_inherited_data_->order_ || 708 other.rare_inherited_data_->line_break ||
641 rare_non_inherited_data_->HasFilters() != 709 rare_inherited_data_->text_security !=
642 other.rare_non_inherited_data_->HasFilters()) 710 other.rare_inherited_data_->text_security ||
643 return true; 711 rare_inherited_data_->hyphens != other.rare_inherited_data_->hyphens ||
712 rare_inherited_data_->hyphenation_limit_before !=
713 other.rare_inherited_data_->hyphenation_limit_before ||
714 rare_inherited_data_->hyphenation_limit_after !=
715 other.rare_inherited_data_->hyphenation_limit_after ||
716 rare_inherited_data_->hyphenation_string !=
717 other.rare_inherited_data_->hyphenation_string ||
718 rare_inherited_data_->respect_image_orientation_ !=
719 other.rare_inherited_data_->respect_image_orientation_ ||
720 rare_inherited_data_->ruby_position_ !=
721 other.rare_inherited_data_->ruby_position_ ||
722 rare_inherited_data_->text_emphasis_mark !=
723 other.rare_inherited_data_->text_emphasis_mark ||
724 rare_inherited_data_->text_emphasis_position !=
725 other.rare_inherited_data_->text_emphasis_position ||
726 rare_inherited_data_->text_emphasis_custom_mark !=
727 other.rare_inherited_data_->text_emphasis_custom_mark ||
728 rare_inherited_data_->text_justify_ !=
729 other.rare_inherited_data_->text_justify_ ||
730 rare_inherited_data_->text_orientation_ !=
731 other.rare_inherited_data_->text_orientation_ ||
732 rare_inherited_data_->text_combine_ !=
733 other.rare_inherited_data_->text_combine_ ||
734 rare_inherited_data_->tab_size_ !=
735 other.rare_inherited_data_->tab_size_ ||
736 rare_inherited_data_->text_size_adjust_ !=
737 other.rare_inherited_data_->text_size_adjust_ ||
738 rare_inherited_data_->list_style_image !=
739 other.rare_inherited_data_->list_style_image ||
740 rare_inherited_data_->line_height_step_ !=
741 other.rare_inherited_data_->line_height_step_ ||
742 rare_inherited_data_->text_stroke_width !=
743 other.rare_inherited_data_->text_stroke_width)
744 return true;
644 745
645 if (rare_non_inherited_data_->grid_.Get() != 746 if (!rare_inherited_data_->ShadowDataEquivalent(
646 other.rare_non_inherited_data_->grid_.Get() && 747 *other.rare_inherited_data_.Get()))
647 *rare_non_inherited_data_->grid_.Get() != 748 return true;
648 *other.rare_non_inherited_data_->grid_.Get())
649 return true;
650 749
651 if (rare_non_inherited_data_->grid_item_.Get() != 750 if (!rare_inherited_data_->QuotesDataEquivalent(
652 other.rare_non_inherited_data_->grid_item_.Get() && 751 *other.rare_inherited_data_.Get()))
653 *rare_non_inherited_data_->grid_item_.Get() != 752 return true;
654 *other.rare_non_inherited_data_->grid_item_.Get())
655 return true;
656
657 if (rare_non_inherited_data_->deprecated_flexible_box_.Get() !=
658 other.rare_non_inherited_data_->deprecated_flexible_box_.Get() &&
659 *rare_non_inherited_data_->deprecated_flexible_box_.Get() !=
660 *other.rare_non_inherited_data_->deprecated_flexible_box_.Get())
661 return true;
662
663 if (rare_non_inherited_data_->flexible_box_.Get() !=
664 other.rare_non_inherited_data_->flexible_box_.Get() &&
665 *rare_non_inherited_data_->flexible_box_.Get() !=
666 *other.rare_non_inherited_data_->flexible_box_.Get())
667 return true;
668
669 if (rare_non_inherited_data_->multi_col_.Get() !=
670 other.rare_non_inherited_data_->multi_col_.Get() &&
671 *rare_non_inherited_data_->multi_col_.Get() !=
672 *other.rare_non_inherited_data_->multi_col_.Get())
673 return true;
674
675 // If the counter directives change, trigger a relayout to re-calculate
676 // counter values and rebuild the counter node tree.
677 const CounterDirectiveMap* map_a =
678 rare_non_inherited_data_->counter_directives_.get();
679 const CounterDirectiveMap* map_b =
680 other.rare_non_inherited_data_->counter_directives_.get();
681 if (!(map_a == map_b || (map_a && map_b && *map_a == *map_b)))
682 return true;
683
684 // We only need do layout for opacity changes if adding or losing opacity
685 // could trigger a change
686 // in us being a stacking context.
687 if (IsStackingContext() != other.IsStackingContext() &&
688 rare_non_inherited_data_->HasOpacity() !=
689 other.rare_non_inherited_data_->HasOpacity()) {
690 // FIXME: We would like to use SimplifiedLayout here, but we can't quite
691 // do that yet. We need to make sure SimplifiedLayout can operate
692 // correctly on LayoutInlines (we will need to add a
693 // selfNeedsSimplifiedLayout bit in order to not get confused and taint
694 // every line). In addition we need to solve the floating object issue
695 // when layers come and go. Right now a full layout is necessary to keep
696 // floating object lists sane.
697 return true;
698 }
699 }
700
701 if (rare_inherited_data_.Get() != other.rare_inherited_data_.Get()) {
702 if (rare_inherited_data_->highlight !=
703 other.rare_inherited_data_->highlight ||
704 rare_inherited_data_->indent != other.rare_inherited_data_->indent ||
705 rare_inherited_data_->text_align_last_ !=
706 other.rare_inherited_data_->text_align_last_ ||
707 rare_inherited_data_->text_indent_line_ !=
708 other.rare_inherited_data_->text_indent_line_ ||
709 rare_inherited_data_->effective_zoom_ !=
710 other.rare_inherited_data_->effective_zoom_ ||
711 rare_inherited_data_->word_break !=
712 other.rare_inherited_data_->word_break ||
713 rare_inherited_data_->overflow_wrap !=
714 other.rare_inherited_data_->overflow_wrap ||
715 rare_inherited_data_->line_break !=
716 other.rare_inherited_data_->line_break ||
717 rare_inherited_data_->text_security !=
718 other.rare_inherited_data_->text_security ||
719 rare_inherited_data_->hyphens != other.rare_inherited_data_->hyphens ||
720 rare_inherited_data_->hyphenation_limit_before !=
721 other.rare_inherited_data_->hyphenation_limit_before ||
722 rare_inherited_data_->hyphenation_limit_after !=
723 other.rare_inherited_data_->hyphenation_limit_after ||
724 rare_inherited_data_->hyphenation_string !=
725 other.rare_inherited_data_->hyphenation_string ||
726 rare_inherited_data_->respect_image_orientation_ !=
727 other.rare_inherited_data_->respect_image_orientation_ ||
728 rare_inherited_data_->ruby_position_ !=
729 other.rare_inherited_data_->ruby_position_ ||
730 rare_inherited_data_->text_emphasis_mark !=
731 other.rare_inherited_data_->text_emphasis_mark ||
732 rare_inherited_data_->text_emphasis_position !=
733 other.rare_inherited_data_->text_emphasis_position ||
734 rare_inherited_data_->text_emphasis_custom_mark !=
735 other.rare_inherited_data_->text_emphasis_custom_mark ||
736 rare_inherited_data_->text_justify_ !=
737 other.rare_inherited_data_->text_justify_ ||
738 rare_inherited_data_->text_orientation_ !=
739 other.rare_inherited_data_->text_orientation_ ||
740 rare_inherited_data_->text_combine_ !=
741 other.rare_inherited_data_->text_combine_ ||
742 rare_inherited_data_->tab_size_ !=
743 other.rare_inherited_data_->tab_size_ ||
744 rare_inherited_data_->text_size_adjust_ !=
745 other.rare_inherited_data_->text_size_adjust_ ||
746 rare_inherited_data_->list_style_image !=
747 other.rare_inherited_data_->list_style_image ||
748 rare_inherited_data_->line_height_step_ !=
749 other.rare_inherited_data_->line_height_step_ ||
750 rare_inherited_data_->text_stroke_width !=
751 other.rare_inherited_data_->text_stroke_width)
752 return true;
753
754 if (!rare_inherited_data_->ShadowDataEquivalent(
755 *other.rare_inherited_data_.Get()))
756 return true;
757
758 if (!rare_inherited_data_->QuotesDataEquivalent(
759 *other.rare_inherited_data_.Get()))
760 return true;
761 }
762 753
763 if (style_inherited_data_->text_autosizing_multiplier != 754 if (style_inherited_data_->text_autosizing_multiplier !=
764 other.style_inherited_data_->text_autosizing_multiplier) 755 other.style_inherited_data_->text_autosizing_multiplier)
765 return true; 756 return true;
766 757
767 if (style_inherited_data_->font.LoadingCustomFonts() != 758 if (style_inherited_data_->font.LoadingCustomFonts() !=
768 other.style_inherited_data_->font.LoadingCustomFonts()) 759 other.style_inherited_data_->font.LoadingCustomFonts())
769 return true; 760 return true;
770 761
771 if (style_inherited_data_.Get() != other.style_inherited_data_.Get()) { 762 if (style_inherited_data_->line_height !=
772 if (style_inherited_data_->line_height != 763 other.style_inherited_data_->line_height ||
773 other.style_inherited_data_->line_height || 764 style_inherited_data_->font != other.style_inherited_data_->font ||
774 style_inherited_data_->font != other.style_inherited_data_->font || 765 style_inherited_data_->horizontal_border_spacing !=
775 style_inherited_data_->horizontal_border_spacing != 766 other.style_inherited_data_->horizontal_border_spacing ||
776 other.style_inherited_data_->horizontal_border_spacing || 767 style_inherited_data_->vertical_border_spacing !=
777 style_inherited_data_->vertical_border_spacing != 768 other.style_inherited_data_->vertical_border_spacing)
778 other.style_inherited_data_->vertical_border_spacing) 769 return true;
779 return true;
780 }
781 770
782 if (BoxDirection() != other.BoxDirection() || 771 if (BoxDirection() != other.BoxDirection() ||
783 RtlOrdering() != other.RtlOrdering() || 772 RtlOrdering() != other.RtlOrdering() ||
784 GetTextAlign() != other.GetTextAlign() || 773 GetTextAlign() != other.GetTextAlign() ||
785 TextTransform() != other.TextTransform() || 774 TextTransform() != other.TextTransform() ||
786 Direction() != other.Direction() || WhiteSpace() != other.WhiteSpace() || 775 Direction() != other.Direction() || WhiteSpace() != other.WhiteSpace() ||
787 GetWritingMode() != other.GetWritingMode()) 776 GetWritingMode() != other.GetWritingMode())
788 return true; 777 return true;
789 778
790 if (OverflowX() != other.OverflowX() || OverflowY() != other.OverflowY() || 779 if (OverflowX() != other.OverflowX() || OverflowY() != other.OverflowY() ||
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
834 other.HasPseudoStyle(kPseudoIdScrollbar)) 823 other.HasPseudoStyle(kPseudoIdScrollbar))
835 return true; 824 return true;
836 825
837 // Movement of non-static-positioned object is special cased in 826 // Movement of non-static-positioned object is special cased in
838 // ComputedStyle::visualInvalidationDiff(). 827 // ComputedStyle::visualInvalidationDiff().
839 828
840 return false; 829 return false;
841 } 830 }
842 831
843 bool ComputedStyle::DiffNeedsFullLayout(const ComputedStyle& other) const { 832 bool ComputedStyle::DiffNeedsFullLayout(const ComputedStyle& other) const {
844 if (box_.Get() != other.box_.Get()) { 833 if (box_->Width() != other.box_->Width() ||
845 if (box_->Width() != other.box_->Width() || 834 box_->MinWidth() != other.box_->MinWidth() ||
846 box_->MinWidth() != other.box_->MinWidth() || 835 box_->MaxWidth() != other.box_->MaxWidth() ||
847 box_->MaxWidth() != other.box_->MaxWidth() || 836 box_->Height() != other.box_->Height() ||
848 box_->Height() != other.box_->Height() || 837 box_->MinHeight() != other.box_->MinHeight() ||
849 box_->MinHeight() != other.box_->MinHeight() || 838 box_->MaxHeight() != other.box_->MaxHeight())
850 box_->MaxHeight() != other.box_->MaxHeight()) 839 return true;
851 return true;
852 840
853 if (box_->VerticalAlign() != other.box_->VerticalAlign()) 841 if (box_->VerticalAlign() != other.box_->VerticalAlign())
854 return true; 842 return true;
855 843
856 if (box_->BoxSizing() != other.box_->BoxSizing()) 844 if (box_->BoxSizing() != other.box_->BoxSizing())
857 return true; 845 return true;
858 }
859 846
860 if (VerticalAlign() != other.VerticalAlign() || 847 if (VerticalAlign() != other.VerticalAlign() ||
861 GetPosition() != other.GetPosition()) 848 GetPosition() != other.GetPosition())
862 return true; 849 return true;
863 850
864 if (rare_non_inherited_data_.Get() != other.rare_non_inherited_data_.Get()) { 851 if (rare_non_inherited_data_->align_content_ !=
865 if (rare_non_inherited_data_->align_content_ != 852 other.rare_non_inherited_data_->align_content_ ||
866 other.rare_non_inherited_data_->align_content_ || 853 rare_non_inherited_data_->align_items_ !=
867 rare_non_inherited_data_->align_items_ != 854 other.rare_non_inherited_data_->align_items_ ||
868 other.rare_non_inherited_data_->align_items_ || 855 rare_non_inherited_data_->align_self_ !=
869 rare_non_inherited_data_->align_self_ != 856 other.rare_non_inherited_data_->align_self_ ||
870 other.rare_non_inherited_data_->align_self_ || 857 rare_non_inherited_data_->justify_content_ !=
871 rare_non_inherited_data_->justify_content_ != 858 other.rare_non_inherited_data_->justify_content_ ||
872 other.rare_non_inherited_data_->justify_content_ || 859 rare_non_inherited_data_->justify_items_ !=
873 rare_non_inherited_data_->justify_items_ != 860 other.rare_non_inherited_data_->justify_items_ ||
874 other.rare_non_inherited_data_->justify_items_ || 861 rare_non_inherited_data_->justify_self_ !=
875 rare_non_inherited_data_->justify_self_ != 862 other.rare_non_inherited_data_->justify_self_ ||
876 other.rare_non_inherited_data_->justify_self_ || 863 rare_non_inherited_data_->contain_ !=
877 rare_non_inherited_data_->contain_ != 864 other.rare_non_inherited_data_->contain_)
878 other.rare_non_inherited_data_->contain_) 865 return true;
879 return true;
880 }
881 866
882 return false; 867 return false;
883 } 868 }
884 869
885 bool ComputedStyle::DiffNeedsPaintInvalidationSubtree( 870 bool ComputedStyle::DiffNeedsPaintInvalidationSubtree(
886 const ComputedStyle& other) const { 871 const ComputedStyle& other) const {
887 if (rare_non_inherited_data_.Get() != other.rare_non_inherited_data_.Get()) { 872 if (rare_non_inherited_data_->effective_blend_mode_ !=
888 if (rare_non_inherited_data_->effective_blend_mode_ != 873 other.rare_non_inherited_data_->effective_blend_mode_ ||
889 other.rare_non_inherited_data_->effective_blend_mode_ || 874 rare_non_inherited_data_->isolation_ !=
890 rare_non_inherited_data_->isolation_ != 875 other.rare_non_inherited_data_->isolation_)
891 other.rare_non_inherited_data_->isolation_) 876 return true;
892 return true;
893 877
894 if (rare_non_inherited_data_->mask_ != 878 if (rare_non_inherited_data_->mask_ !=
895 other.rare_non_inherited_data_->mask_ || 879 other.rare_non_inherited_data_->mask_ ||
896 rare_non_inherited_data_->mask_box_image_ != 880 rare_non_inherited_data_->mask_box_image_ !=
897 other.rare_non_inherited_data_->mask_box_image_) 881 other.rare_non_inherited_data_->mask_box_image_)
898 return true; 882 return true;
899 }
900 883
901 return false; 884 return false;
902 } 885 }
903 886
904 bool ComputedStyle::DiffNeedsPaintInvalidationObject( 887 bool ComputedStyle::DiffNeedsPaintInvalidationObject(
905 const ComputedStyle& other) const { 888 const ComputedStyle& other) const {
906 if (Visibility() != other.Visibility() || 889 if (Visibility() != other.Visibility() ||
907 PrintColorAdjust() != other.PrintColorAdjust() || 890 PrintColorAdjust() != other.PrintColorAdjust() ||
908 InsideLink() != other.InsideLink() || 891 InsideLink() != other.InsideLink() ||
909 !surround_->border_.VisuallyEqual(other.surround_->border_) || 892 !surround_->border_.VisuallyEqual(other.surround_->border_) ||
910 *background_ != *other.background_) 893 *background_ != *other.background_)
911 return true; 894 return true;
912 895
913 if (rare_inherited_data_.Get() != other.rare_inherited_data_.Get()) { 896 if (rare_inherited_data_->user_modify !=
914 if (rare_inherited_data_->user_modify != 897 other.rare_inherited_data_->user_modify ||
915 other.rare_inherited_data_->user_modify || 898 rare_inherited_data_->user_select !=
916 rare_inherited_data_->user_select != 899 other.rare_inherited_data_->user_select ||
917 other.rare_inherited_data_->user_select || 900 rare_inherited_data_->image_rendering_ !=
918 rare_inherited_data_->image_rendering_ != 901 other.rare_inherited_data_->image_rendering_)
919 other.rare_inherited_data_->image_rendering_) 902 return true;
920 return true;
921 }
922 903
923 if (rare_non_inherited_data_.Get() != other.rare_non_inherited_data_.Get()) { 904 if (rare_non_inherited_data_->user_drag !=
924 if (rare_non_inherited_data_->user_drag != 905 other.rare_non_inherited_data_->user_drag ||
925 other.rare_non_inherited_data_->user_drag || 906 rare_non_inherited_data_->object_fit_ !=
926 rare_non_inherited_data_->object_fit_ != 907 other.rare_non_inherited_data_->object_fit_ ||
927 other.rare_non_inherited_data_->object_fit_ || 908 rare_non_inherited_data_->object_position_ !=
928 rare_non_inherited_data_->object_position_ != 909 other.rare_non_inherited_data_->object_position_ ||
929 other.rare_non_inherited_data_->object_position_ || 910 !rare_non_inherited_data_->ShadowDataEquivalent(
930 !rare_non_inherited_data_->ShadowDataEquivalent( 911 *other.rare_non_inherited_data_.Get()) ||
931 *other.rare_non_inherited_data_.Get()) || 912 !rare_non_inherited_data_->ShapeOutsideDataEquivalent(
932 !rare_non_inherited_data_->ShapeOutsideDataEquivalent( 913 *other.rare_non_inherited_data_.Get()) ||
933 *other.rare_non_inherited_data_.Get()) || 914 !rare_non_inherited_data_->ClipPathDataEquivalent(
934 !rare_non_inherited_data_->ClipPathDataEquivalent( 915 *other.rare_non_inherited_data_.Get()) ||
935 *other.rare_non_inherited_data_.Get()) || 916 !rare_non_inherited_data_->outline_.VisuallyEqual(
936 !rare_non_inherited_data_->outline_.VisuallyEqual( 917 other.rare_non_inherited_data_->outline_) ||
937 other.rare_non_inherited_data_->outline_) || 918 (VisitedLinkBorderLeftColor() != other.VisitedLinkBorderLeftColor() &&
938 (VisitedLinkBorderLeftColor() != other.VisitedLinkBorderLeftColor() && 919 BorderLeftWidth()) ||
939 BorderLeftWidth()) || 920 (VisitedLinkBorderRightColor() != other.VisitedLinkBorderRightColor() &&
940 (VisitedLinkBorderRightColor() != other.VisitedLinkBorderRightColor() && 921 BorderRightWidth()) ||
941 BorderRightWidth()) || 922 (VisitedLinkBorderBottomColor() != other.VisitedLinkBorderBottomColor() &&
942 (VisitedLinkBorderBottomColor() != 923 BorderBottomWidth()) ||
943 other.VisitedLinkBorderBottomColor() && 924 (VisitedLinkBorderTopColor() != other.VisitedLinkBorderTopColor() &&
944 BorderBottomWidth()) || 925 BorderTopWidth()) ||
945 (VisitedLinkBorderTopColor() != other.VisitedLinkBorderTopColor() && 926 (VisitedLinkOutlineColor() != other.VisitedLinkOutlineColor() &&
946 BorderTopWidth()) || 927 OutlineWidth()) ||
947 (VisitedLinkOutlineColor() != other.VisitedLinkOutlineColor() && 928 (VisitedLinkBackgroundColor() != other.VisitedLinkBackgroundColor()))
948 OutlineWidth()) || 929 return true;
949 (VisitedLinkBackgroundColor() != other.VisitedLinkBackgroundColor()))
950 return true;
951 }
952 930
953 if (Resize() != other.Resize()) 931 if (Resize() != other.Resize())
954 return true; 932 return true;
955 933
956 if (rare_non_inherited_data_->paint_images_) { 934 if (rare_non_inherited_data_->paint_images_) {
957 for (const auto& image : *rare_non_inherited_data_->paint_images_) { 935 for (const auto& image : *rare_non_inherited_data_->paint_images_) {
958 if (DiffNeedsPaintInvalidationObjectForPaintImage(image, other)) 936 if (DiffNeedsPaintInvalidationObjectForPaintImage(image, other))
959 return true; 937 return true;
960 } 938 }
961 } 939 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1010 return false; 988 return false;
1011 } 989 }
1012 990
1013 void ComputedStyle::UpdatePropertySpecificDifferences( 991 void ComputedStyle::UpdatePropertySpecificDifferences(
1014 const ComputedStyle& other, 992 const ComputedStyle& other,
1015 StyleDifference& diff) const { 993 StyleDifference& diff) const {
1016 if (box_->ZIndex() != other.box_->ZIndex() || 994 if (box_->ZIndex() != other.box_->ZIndex() ||
1017 IsStackingContext() != other.IsStackingContext()) 995 IsStackingContext() != other.IsStackingContext())
1018 diff.SetZIndexChanged(); 996 diff.SetZIndexChanged();
1019 997
1020 if (rare_non_inherited_data_.Get() != other.rare_non_inherited_data_.Get()) { 998 // It's possible for the old and new style transform data to be equivalent
1021 // It's possible for the old and new style transform data to be equivalent 999 // while hasTransform() differs, as it checks a number of conditions aside
1022 // while hasTransform() differs, as it checks a number of conditions aside 1000 // from just the matrix, including but not limited to animation state.
1023 // from just the matrix, including but not limited to animation state. 1001 if (HasTransform() != other.HasTransform() ||
1024 if (HasTransform() != other.HasTransform() || 1002 !TransformDataEquivalent(other) ||
1025 !TransformDataEquivalent(other) || 1003 rare_non_inherited_data_->perspective_ !=
1026 rare_non_inherited_data_->perspective_ != 1004 other.rare_non_inherited_data_->perspective_ ||
1027 other.rare_non_inherited_data_->perspective_ || 1005 rare_non_inherited_data_->perspective_origin_ !=
1028 rare_non_inherited_data_->perspective_origin_ != 1006 other.rare_non_inherited_data_->perspective_origin_)
1029 other.rare_non_inherited_data_->perspective_origin_) 1007 diff.SetTransformChanged();
1030 diff.SetTransformChanged();
1031 1008
1032 if (rare_non_inherited_data_->opacity != 1009 if (rare_non_inherited_data_->opacity !=
1033 other.rare_non_inherited_data_->opacity) 1010 other.rare_non_inherited_data_->opacity)
1034 diff.SetOpacityChanged(); 1011 diff.SetOpacityChanged();
1035 1012
1036 if (rare_non_inherited_data_->filter_ != 1013 if (rare_non_inherited_data_->filter_ !=
1037 other.rare_non_inherited_data_->filter_) 1014 other.rare_non_inherited_data_->filter_)
1038 diff.SetFilterChanged(); 1015 diff.SetFilterChanged();
1039 1016
1040 if (!rare_non_inherited_data_->ShadowDataEquivalent( 1017 if (!rare_non_inherited_data_->ShadowDataEquivalent(
1041 *other.rare_non_inherited_data_.Get())) 1018 *other.rare_non_inherited_data_.Get()))
1042 diff.SetNeedsRecomputeOverflow(); 1019 diff.SetNeedsRecomputeOverflow();
1043 1020
1044 if (rare_non_inherited_data_->backdrop_filter_ != 1021 if (rare_non_inherited_data_->backdrop_filter_ !=
1045 other.rare_non_inherited_data_->backdrop_filter_) 1022 other.rare_non_inherited_data_->backdrop_filter_)
1046 diff.SetBackdropFilterChanged(); 1023 diff.SetBackdropFilterChanged();
1047 1024
1048 if (!rare_non_inherited_data_->ReflectionDataEquivalent( 1025 if (!rare_non_inherited_data_->ReflectionDataEquivalent(
1049 *other.rare_non_inherited_data_.Get())) 1026 *other.rare_non_inherited_data_.Get()))
1050 diff.SetFilterChanged(); 1027 diff.SetFilterChanged();
1051 1028
1052 if (!rare_non_inherited_data_->outline_.VisuallyEqual( 1029 if (!rare_non_inherited_data_->outline_.VisuallyEqual(
1053 other.rare_non_inherited_data_->outline_)) 1030 other.rare_non_inherited_data_->outline_))
1054 diff.SetNeedsRecomputeOverflow(); 1031 diff.SetNeedsRecomputeOverflow();
1055 }
1056 1032
1057 if (!surround_->border_.VisualOverflowEqual(other.surround_->border_)) 1033 if (!surround_->border_.VisualOverflowEqual(other.surround_->border_))
1058 diff.SetNeedsRecomputeOverflow(); 1034 diff.SetNeedsRecomputeOverflow();
1059 1035
1060 if (!diff.NeedsFullPaintInvalidation()) { 1036 if (!diff.NeedsFullPaintInvalidation()) {
1061 if (style_inherited_data_->color != other.style_inherited_data_->color || 1037 if (style_inherited_data_->color != other.style_inherited_data_->color ||
1062 style_inherited_data_->visited_link_color != 1038 style_inherited_data_->visited_link_color !=
1063 other.style_inherited_data_->visited_link_color || 1039 other.style_inherited_data_->visited_link_color ||
1064 has_simple_underline_ != other.has_simple_underline_ || 1040 has_simple_underline_ != other.has_simple_underline_ ||
1065 visual_->text_decoration != other.visual_->text_decoration) { 1041 visual_->text_decoration != other.visual_->text_decoration) {
1066 diff.SetTextDecorationOrColorChanged(); 1042 diff.SetTextDecorationOrColorChanged();
1067 } else if (rare_non_inherited_data_.Get() != 1043 } else if ((rare_non_inherited_data_->text_decoration_style_ !=
1068 other.rare_non_inherited_data_.Get() &&
1069 (rare_non_inherited_data_->text_decoration_style_ !=
1070 other.rare_non_inherited_data_->text_decoration_style_ || 1044 other.rare_non_inherited_data_->text_decoration_style_ ||
1071 rare_non_inherited_data_->text_decoration_color_ != 1045 rare_non_inherited_data_->text_decoration_color_ !=
1072 other.rare_non_inherited_data_->text_decoration_color_ || 1046 other.rare_non_inherited_data_->text_decoration_color_ ||
1073 rare_non_inherited_data_->visited_link_text_decoration_color_ != 1047 rare_non_inherited_data_->visited_link_text_decoration_color_ !=
1074 other.rare_non_inherited_data_ 1048 other.rare_non_inherited_data_
1075 ->visited_link_text_decoration_color_)) { 1049 ->visited_link_text_decoration_color_)) {
1076 diff.SetTextDecorationOrColorChanged(); 1050 diff.SetTextDecorationOrColorChanged();
1077 } else if (rare_inherited_data_.Get() != other.rare_inherited_data_.Get() && 1051 } else if ((rare_inherited_data_->TextFillColor() !=
1078 (rare_inherited_data_->TextFillColor() !=
1079 other.rare_inherited_data_->TextFillColor() || 1052 other.rare_inherited_data_->TextFillColor() ||
1080 rare_inherited_data_->TextStrokeColor() != 1053 rare_inherited_data_->TextStrokeColor() !=
1081 other.rare_inherited_data_->TextStrokeColor() || 1054 other.rare_inherited_data_->TextStrokeColor() ||
1082 rare_inherited_data_->TextEmphasisColor() != 1055 rare_inherited_data_->TextEmphasisColor() !=
1083 other.rare_inherited_data_->TextEmphasisColor() || 1056 other.rare_inherited_data_->TextEmphasisColor() ||
1084 rare_inherited_data_->VisitedLinkTextFillColor() != 1057 rare_inherited_data_->VisitedLinkTextFillColor() !=
1085 other.rare_inherited_data_->VisitedLinkTextFillColor() || 1058 other.rare_inherited_data_->VisitedLinkTextFillColor() ||
1086 rare_inherited_data_->VisitedLinkTextStrokeColor() != 1059 rare_inherited_data_->VisitedLinkTextStrokeColor() !=
1087 other.rare_inherited_data_->VisitedLinkTextStrokeColor() || 1060 other.rare_inherited_data_->VisitedLinkTextStrokeColor() ||
1088 rare_inherited_data_->VisitedLinkTextEmphasisColor() != 1061 rare_inherited_data_->VisitedLinkTextEmphasisColor() !=
(...skipping 1415 matching lines...) Expand 10 before | Expand all | Expand 10 after
2504 if (value < 0) 2477 if (value < 0)
2505 fvalue -= 0.5f; 2478 fvalue -= 0.5f;
2506 else 2479 else
2507 fvalue += 0.5f; 2480 fvalue += 0.5f;
2508 } 2481 }
2509 2482
2510 return RoundForImpreciseConversion<int>(fvalue / zoom_factor); 2483 return RoundForImpreciseConversion<int>(fvalue / zoom_factor);
2511 } 2484 }
2512 2485
2513 } // namespace blink 2486 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/Node.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698