OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |