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

Side by Side Diff: Source/core/layout/LayoutGrid.cpp

Issue 1079563002: [CSS Grid Layout] Replace the usage of pointers to functions (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 436
437 // 3. Grow all Grid tracks in GridTracks from their baseSize up to their gro wthLimit value until freeSpace is exhausted. 437 // 3. Grow all Grid tracks in GridTracks from their baseSize up to their gro wthLimit value until freeSpace is exhausted.
438 const size_t tracksSize = tracks.size(); 438 const size_t tracksSize = tracks.size();
439 if (!hasUndefinedRemainingSpace) { 439 if (!hasUndefinedRemainingSpace) {
440 Vector<GridTrack*> tracksForDistribution(tracksSize); 440 Vector<GridTrack*> tracksForDistribution(tracksSize);
441 for (size_t i = 0; i < tracksSize; ++i) { 441 for (size_t i = 0; i < tracksSize; ++i) {
442 tracksForDistribution[i] = tracks.data() + i; 442 tracksForDistribution[i] = tracks.data() + i;
443 tracksForDistribution[i]->m_plannedIncrease = 0; 443 tracksForDistribution[i]->m_plannedIncrease = 0;
444 } 444 }
445 445
446 distributeSpaceToTracks(tracksForDistribution, nullptr, &GridTrack::base Size, sizingData, freeSpace); 446 distributeSpaceToTracks<MaximizeTracks>(tracksForDistribution, nullptr, sizingData, freeSpace);
447 447
448 for (auto* track : tracksForDistribution) 448 for (auto* track : tracksForDistribution)
449 track->growBaseSize(track->m_plannedIncrease); 449 track->growBaseSize(track->m_plannedIncrease);
450 } else { 450 } else {
451 for (auto& track : tracks) 451 for (auto& track : tracks)
452 track.setBaseSize(track.growthLimit()); 452 track.setBaseSize(track.growthLimit());
453 } 453 }
454 454
455 if (flexibleSizedTracksIndex.isEmpty()) 455 if (flexibleSizedTracksIndex.isEmpty())
456 return; 456 return;
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 } 736 }
737 } 737 }
738 } 738 }
739 } 739 }
740 std::sort(sizingData.itemsSortedByIncreasingSpan.begin(), sizingData.itemsSo rtedByIncreasingSpan.end()); 740 std::sort(sizingData.itemsSortedByIncreasingSpan.begin(), sizingData.itemsSo rtedByIncreasingSpan.end());
741 741
742 auto it = sizingData.itemsSortedByIncreasingSpan.begin(); 742 auto it = sizingData.itemsSortedByIncreasingSpan.begin();
743 auto end = sizingData.itemsSortedByIncreasingSpan.end(); 743 auto end = sizingData.itemsSortedByIncreasingSpan.end();
744 while (it != end) { 744 while (it != end) {
745 GridItemsSpanGroupRange spanGroupRange = { it, std::upper_bound(it, end, *it) }; 745 GridItemsSpanGroupRange spanGroupRange = { it, std::upper_bound(it, end, *it) };
746 resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, s panGroupRange, &GridTrackSize::hasMinOrMaxContentMinTrackBreadth, &LayoutGrid::m inContentForChild, &GridTrack::baseSize, &GridTrack::growBaseSize, &GridTrackSiz e::hasMinContentMinTrackBreadthAndMinOrMaxContentMaxTrackBreadth); 746 resolveContentBasedTrackSizingFunctionsForItems<ResolveIntrinsicMinimums >(direction, sizingData, spanGroupRange);
747 resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, s panGroupRange, &GridTrackSize::hasMaxContentMinTrackBreadth, &LayoutGrid::maxCon tentForChild, &GridTrack::baseSize, &GridTrack::growBaseSize, &GridTrackSize::ha sMaxContentMinTrackBreadthAndMaxContentMaxTrackBreadth); 747 resolveContentBasedTrackSizingFunctionsForItems<ResolveMaxContentMinimum s>(direction, sizingData, spanGroupRange);
748 resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, s panGroupRange, &GridTrackSize::hasMinOrMaxContentMaxTrackBreadth, &LayoutGrid::m inContentForChild, &GridTrack::growthLimitIfNotInfinite, &GridTrack::growGrowthL imit); 748 resolveContentBasedTrackSizingFunctionsForItems<ResolveIntrinsicMaximums >(direction, sizingData, spanGroupRange);
749 resolveContentBasedTrackSizingFunctionsForItems(direction, sizingData, s panGroupRange, &GridTrackSize::hasMaxContentMaxTrackBreadth, &LayoutGrid::maxCon tentForChild, &GridTrack::growthLimitIfNotInfinite, &GridTrack::growGrowthLimit) ; 749 resolveContentBasedTrackSizingFunctionsForItems<ResolveMaxContentMaximum s>(direction, sizingData, spanGroupRange);
750 it = spanGroupRange.rangeEnd; 750 it = spanGroupRange.rangeEnd;
751 } 751 }
752 752
753 for (const auto& trackIndex : sizingData.contentSizedTracksIndex) { 753 for (const auto& trackIndex : sizingData.contentSizedTracksIndex) {
754 GridTrack& track = (direction == ForColumns) ? sizingData.columnTracks[t rackIndex] : sizingData.rowTracks[trackIndex]; 754 GridTrack& track = (direction == ForColumns) ? sizingData.columnTracks[t rackIndex] : sizingData.rowTracks[trackIndex];
755 if (track.growthLimitIsInfinite()) 755 if (track.growthLimitIsInfinite())
756 track.setGrowthLimit(track.baseSize()); 756 track.setGrowthLimit(track.baseSize());
757 } 757 }
758 } 758 }
759 759
760 void LayoutGrid::resolveContentBasedTrackSizingFunctionsForNonSpanningItems(Grid TrackSizingDirection direction, const GridCoordinate& coordinate, LayoutBox& gri dItem, GridTrack& track, Vector<GridTrack>& columnTracks) 760 void LayoutGrid::resolveContentBasedTrackSizingFunctionsForNonSpanningItems(Grid TrackSizingDirection direction, const GridCoordinate& coordinate, LayoutBox& gri dItem, GridTrack& track, Vector<GridTrack>& columnTracks)
761 { 761 {
762 const GridResolvedPosition trackPosition = (direction == ForColumns) ? coord inate.columns.resolvedInitialPosition : coordinate.rows.resolvedInitialPosition; 762 const GridResolvedPosition trackPosition = (direction == ForColumns) ? coord inate.columns.resolvedInitialPosition : coordinate.rows.resolvedInitialPosition;
763 GridTrackSize trackSize = gridTrackSize(direction, trackPosition.toInt()); 763 GridTrackSize trackSize = gridTrackSize(direction, trackPosition.toInt());
764 764
765 if (trackSize.hasMinContentMinTrackBreadth()) 765 if (trackSize.hasMinContentMinTrackBreadth())
766 track.setBaseSize(std::max(track.baseSize(), minContentForChild(gridItem , direction, columnTracks))); 766 track.setBaseSize(std::max(track.baseSize(), minContentForChild(gridItem , direction, columnTracks)));
767 else if (trackSize.hasMaxContentMinTrackBreadth()) 767 else if (trackSize.hasMaxContentMinTrackBreadth())
768 track.setBaseSize(std::max(track.baseSize(), maxContentForChild(gridItem , direction, columnTracks))); 768 track.setBaseSize(std::max(track.baseSize(), maxContentForChild(gridItem , direction, columnTracks)));
769 769
770 if (trackSize.hasMinContentMaxTrackBreadth()) 770 if (trackSize.hasMinContentMaxTrackBreadth())
771 track.setGrowthLimit(std::max(track.growthLimit(), minContentForChild(gr idItem, direction, columnTracks))); 771 track.setGrowthLimit(std::max(track.growthLimit(), minContentForChild(gr idItem, direction, columnTracks)));
772 else if (trackSize.hasMaxContentMaxTrackBreadth()) 772 else if (trackSize.hasMaxContentMaxTrackBreadth())
773 track.setGrowthLimit(std::max(track.growthLimit(), maxContentForChild(gr idItem, direction, columnTracks))); 773 track.setGrowthLimit(std::max(track.growthLimit(), maxContentForChild(gr idItem, direction, columnTracks)));
774 } 774 }
775 775
776 void LayoutGrid::resolveContentBasedTrackSizingFunctionsForItems(GridTrackSizing Direction direction, GridSizingData& sizingData, const GridItemsSpanGroupRange& gridItemsWithSpan, FilterFunction filterFunction, SizingFunction sizingFunction, AccumulatorGetter trackGetter, AccumulatorGrowFunction trackGrowthFunction, Fil terFunction growAboveMaxBreadthFilterFunction) 776 const LayoutUnit& LayoutGrid::trackSizeForTrackSizeComputationPhase(TrackSizeCom putationPhase phase, GridTrack& track, TrackSizeRestriction restriction)
777 {
778 switch (phase) {
779 case ResolveIntrinsicMinimums:
780 case ResolveMaxContentMinimums:
781 case MaximizeTracks:
782 return track.baseSize();
783 break;
784 case ResolveIntrinsicMaximums:
785 case ResolveMaxContentMaximums:
786 return restriction == AllowInfinity ? track.growthLimit() : track.growth LimitIfNotInfinite();
787 break;
788 }
789
790 ASSERT_NOT_REACHED();
791 return track.baseSize();
792 }
793
794 bool LayoutGrid::shouldProcessTrackForTrackSizeComputationPhase(TrackSizeComputa tionPhase phase, const GridTrackSize& trackSize)
795 {
796 switch (phase) {
797 case ResolveIntrinsicMinimums:
798 return trackSize.hasMinOrMaxContentMinTrackBreadth();
799 case ResolveMaxContentMinimums:
800 return trackSize.hasMaxContentMinTrackBreadth();
801 case ResolveIntrinsicMaximums:
802 return trackSize.hasMinOrMaxContentMaxTrackBreadth();
803 case ResolveMaxContentMaximums:
804 return trackSize.hasMaxContentMaxTrackBreadth();
805 case MaximizeTracks:
806 ASSERT_NOT_REACHED();
807 return false;
808 }
809
810 ASSERT_NOT_REACHED();
811 return false;
812 }
813
814 bool LayoutGrid::trackShouldGrowBeyondGrowthLimitsForTrackSizeComputationPhase(T rackSizeComputationPhase phase, const GridTrackSize& trackSize)
815 {
816 switch (phase) {
817 case ResolveIntrinsicMinimums:
818 return trackSize.hasMinContentMinTrackBreadthAndMinOrMaxContentMaxTrackB readth();
819 case ResolveMaxContentMinimums:
820 return trackSize.hasMaxContentMinTrackBreadthAndMaxContentMaxTrackBreadt h();
821 case ResolveIntrinsicMaximums:
822 case ResolveMaxContentMaximums:
823 return true;
824 case MaximizeTracks:
825 ASSERT_NOT_REACHED();
826 return false;
827 }
828
829 ASSERT_NOT_REACHED();
830 return false;
831 }
832
833 void LayoutGrid::updateTrackSizeForTrackSizeComputationPhase(TrackSizeComputatio nPhase phase, GridTrack& track)
834 {
835 switch (phase) {
836 case ResolveIntrinsicMinimums:
837 case ResolveMaxContentMinimums:
838 track.growBaseSize(track.m_plannedIncrease);
839 return;
840 case ResolveIntrinsicMaximums:
841 case ResolveMaxContentMaximums:
842 track.growGrowthLimit(track.m_plannedIncrease);
843 return;
844 case MaximizeTracks:
845 ASSERT_NOT_REACHED();
846 return;
847 }
848
849 ASSERT_NOT_REACHED();
850 }
851
852 LayoutUnit LayoutGrid::currentItemSizeForTrackSizeComputationPhase(TrackSizeComp utationPhase phase, LayoutBox& gridItem, GridTrackSizingDirection direction, Vec tor<GridTrack>& columnTracks)
853 {
854 switch (phase) {
855 case ResolveIntrinsicMinimums:
856 case ResolveIntrinsicMaximums:
857 return minContentForChild(gridItem, direction, columnTracks);
858 case ResolveMaxContentMinimums:
859 case ResolveMaxContentMaximums:
860 return maxContentForChild(gridItem, direction, columnTracks);
861 case MaximizeTracks:
862 ASSERT_NOT_REACHED();
863 return 0;
864 }
865
866 ASSERT_NOT_REACHED();
867 return 0;
868 }
869
870 template <LayoutGrid::TrackSizeComputationPhase phase>
871 void LayoutGrid::resolveContentBasedTrackSizingFunctionsForItems(GridTrackSizing Direction direction, GridSizingData& sizingData, const GridItemsSpanGroupRange& gridItemsWithSpan)
777 { 872 {
778 Vector<GridTrack>& tracks = (direction == ForColumns) ? sizingData.columnTra cks : sizingData.rowTracks; 873 Vector<GridTrack>& tracks = (direction == ForColumns) ? sizingData.columnTra cks : sizingData.rowTracks;
779 for (const auto& trackIndex : sizingData.contentSizedTracksIndex) 874 for (const auto& trackIndex : sizingData.contentSizedTracksIndex)
780 tracks[trackIndex].m_plannedIncrease = 0; 875 tracks[trackIndex].m_plannedIncrease = 0;
781 876
782 for (auto it = gridItemsWithSpan.rangeStart; it != gridItemsWithSpan.rangeEn d; ++it) { 877 for (auto it = gridItemsWithSpan.rangeStart; it != gridItemsWithSpan.rangeEn d; ++it) {
783 GridItemWithSpan& gridItemWithSpan = *it; 878 GridItemWithSpan& gridItemWithSpan = *it;
784 ASSERT(gridItemWithSpan.span() > 1); 879 ASSERT(gridItemWithSpan.span() > 1);
785 const GridCoordinate coordinate = gridItemWithSpan.coordinate(); 880 const GridCoordinate coordinate = gridItemWithSpan.coordinate();
786 const GridSpan& itemSpan = (direction == ForColumns) ? coordinate.column s : coordinate.rows; 881 const GridSpan& itemSpan = (direction == ForColumns) ? coordinate.column s : coordinate.rows;
787 882
788 sizingData.growBeyondGrowthLimitsTracks.shrink(0); 883 sizingData.growBeyondGrowthLimitsTracks.shrink(0);
789 sizingData.filteredTracks.shrink(0); 884 sizingData.filteredTracks.shrink(0);
790 LayoutUnit spanningTracksSize; 885 LayoutUnit spanningTracksSize;
791 for (const auto& trackPosition : itemSpan) { 886 for (const auto& trackPosition : itemSpan) {
792 GridTrackSize trackSize = gridTrackSize(direction, trackPosition.toI nt()); 887 GridTrackSize trackSize = gridTrackSize(direction, trackPosition.toI nt());
793 GridTrack& track = (direction == ForColumns) ? sizingData.columnTrac ks[trackPosition.toInt()] : sizingData.rowTracks[trackPosition.toInt()]; 888 GridTrack& track = (direction == ForColumns) ? sizingData.columnTrac ks[trackPosition.toInt()] : sizingData.rowTracks[trackPosition.toInt()];
794 spanningTracksSize += (track.*trackGetter)(); 889 spanningTracksSize += trackSizeForTrackSizeComputationPhase(phase, t rack, ForbidInfinity);
795 if (!(trackSize.*filterFunction)()) 890 if (!shouldProcessTrackForTrackSizeComputationPhase(phase, trackSize ))
796 continue; 891 continue;
797 892
798 sizingData.filteredTracks.append(&track); 893 sizingData.filteredTracks.append(&track);
799 894
800 if (!growAboveMaxBreadthFilterFunction || (trackSize.*growAboveMaxBr eadthFilterFunction)()) 895 if (trackShouldGrowBeyondGrowthLimitsForTrackSizeComputationPhase(ph ase, trackSize))
801 sizingData.growBeyondGrowthLimitsTracks.append(&track); 896 sizingData.growBeyondGrowthLimitsTracks.append(&track);
802 } 897 }
803 898
804 if (sizingData.filteredTracks.isEmpty()) 899 if (sizingData.filteredTracks.isEmpty())
805 continue; 900 continue;
806 901
807 // Specs mandate to floor extraSpace to 0. Instead we directly avoid the function call in those cases as it will be 902 // Specs mandate to floor extraSpace to 0. Instead we directly avoid the function call in those cases as it will be
808 // a noop in terms of track sizing. 903 // a noop in terms of track sizing.
809 LayoutUnit extraSpace = (this->*sizingFunction)(gridItemWithSpan.gridIte m(), direction, sizingData.columnTracks) - spanningTracksSize; 904 LayoutUnit extraSpace = currentItemSizeForTrackSizeComputationPhase(phas e, gridItemWithSpan.gridItem(), direction, sizingData.columnTracks) - spanningTr acksSize;
810 if (extraSpace > 0) { 905 if (extraSpace > 0) {
811 Vector<GridTrack*>* tracksToGrowBeyondGrowthLimits = sizingData.grow BeyondGrowthLimitsTracks.isEmpty() ? &sizingData.filteredTracks : &sizingData.gr owBeyondGrowthLimitsTracks; 906 Vector<GridTrack*>* tracksToGrowBeyondGrowthLimits = sizingData.grow BeyondGrowthLimitsTracks.isEmpty() ? &sizingData.filteredTracks : &sizingData.gr owBeyondGrowthLimitsTracks;
812 distributeSpaceToTracks(sizingData.filteredTracks, tracksToGrowBeyon dGrowthLimits, trackGetter, sizingData, extraSpace); 907 distributeSpaceToTracks<phase>(sizingData.filteredTracks, tracksToGr owBeyondGrowthLimits, sizingData, extraSpace);
813 } 908 }
814 } 909 }
815 910
816 for (const auto& trackIndex : sizingData.contentSizedTracksIndex) { 911 for (const auto& trackIndex : sizingData.contentSizedTracksIndex) {
817 GridTrack& track = tracks[trackIndex]; 912 GridTrack& track = tracks[trackIndex];
818 if (track.m_plannedIncrease) 913 if (track.m_plannedIncrease)
819 (track.*trackGrowthFunction)(track.m_plannedIncrease); 914 updateTrackSizeForTrackSizeComputationPhase(phase, track);
820 } 915 }
821 } 916 }
822 917
823 static bool sortByGridTrackGrowthPotential(const GridTrack* track1, const GridTr ack* track2) 918 static bool sortByGridTrackGrowthPotential(const GridTrack* track1, const GridTr ack* track2)
824 { 919 {
825 // This check ensures that we respect the irreflexivity property of the stri ct weak ordering required by std::sort 920 // This check ensures that we respect the irreflexivity property of the stri ct weak ordering required by std::sort
826 // (forall x: NOT x < x). 921 // (forall x: NOT x < x).
827 if (track1->growthLimitIsInfinite() && track2->growthLimitIsInfinite()) 922 if (track1->growthLimitIsInfinite() && track2->growthLimitIsInfinite())
828 return false; 923 return false;
829 924
830 if (track1->growthLimitIsInfinite() || track2->growthLimitIsInfinite()) 925 if (track1->growthLimitIsInfinite() || track2->growthLimitIsInfinite())
831 return track2->growthLimitIsInfinite(); 926 return track2->growthLimitIsInfinite();
832 927
833 return (track1->growthLimit() - track1->baseSize()) < (track2->growthLimit() - track2->baseSize()); 928 return (track1->growthLimit() - track1->baseSize()) < (track2->growthLimit() - track2->baseSize());
834 } 929 }
835 930
836 void LayoutGrid::distributeSpaceToTracks(Vector<GridTrack*>& tracks, const Vecto r<GridTrack*>* growBeyondGrowthLimitsTracks, AccumulatorGetter trackGetter, Grid SizingData& sizingData, LayoutUnit& availableLogicalSpace) 931 template <LayoutGrid::TrackSizeComputationPhase phase>
932 void LayoutGrid::distributeSpaceToTracks(Vector<GridTrack*>& tracks, const Vecto r<GridTrack*>* growBeyondGrowthLimitsTracks, GridSizingData& sizingData, LayoutU nit& availableLogicalSpace)
837 { 933 {
838 ASSERT(availableLogicalSpace > 0); 934 ASSERT(availableLogicalSpace > 0);
839 std::sort(tracks.begin(), tracks.end(), sortByGridTrackGrowthPotential); 935 std::sort(tracks.begin(), tracks.end(), sortByGridTrackGrowthPotential);
840 936
841 size_t tracksSize = tracks.size(); 937 size_t tracksSize = tracks.size();
842 for (size_t i = 0; i < tracksSize; ++i) { 938 for (size_t i = 0; i < tracksSize; ++i) {
843 GridTrack& track = *tracks[i]; 939 GridTrack& track = *tracks[i];
844 LayoutUnit availableLogicalSpaceShare = availableLogicalSpace / (tracksS ize - i); 940 LayoutUnit availableLogicalSpaceShare = availableLogicalSpace / (tracksS ize - i);
845 const LayoutUnit& trackBreadth = (track.*trackGetter)(); 941 const LayoutUnit& trackBreadth = trackSizeForTrackSizeComputationPhase(p hase, track, ForbidInfinity);
846 LayoutUnit growthShare = track.growthLimitIsInfinite() ? availableLogica lSpaceShare : std::min(availableLogicalSpaceShare, track.growthLimit() - trackBr eadth); 942 LayoutUnit growthShare = track.growthLimitIsInfinite() ? availableLogica lSpaceShare : std::min(availableLogicalSpaceShare, track.growthLimit() - trackBr eadth);
847 ASSERT_WITH_MESSAGE(growthShare >= 0, "We must never shrink any grid tra ck or else we can't guarantee we abide by our min-sizing function."); 943 ASSERT_WITH_MESSAGE(growthShare >= 0, "We must never shrink any grid tra ck or else we can't guarantee we abide by our min-sizing function.");
848 track.m_increaseDuringDistribution = growthShare; 944 track.m_increaseDuringDistribution = growthShare;
849 availableLogicalSpace -= growthShare; 945 availableLogicalSpace -= growthShare;
850 } 946 }
851 947
852 if (availableLogicalSpace > 0 && growBeyondGrowthLimitsTracks) { 948 if (availableLogicalSpace > 0 && growBeyondGrowthLimitsTracks) {
853 size_t tracksGrowingAboveMaxBreadthSize = growBeyondGrowthLimitsTracks-> size(); 949 size_t tracksGrowingAboveMaxBreadthSize = growBeyondGrowthLimitsTracks-> size();
854 for (size_t i = 0; i < tracksGrowingAboveMaxBreadthSize; ++i) { 950 for (size_t i = 0; i < tracksGrowingAboveMaxBreadthSize; ++i) {
855 GridTrack* track = growBeyondGrowthLimitsTracks->at(i); 951 GridTrack* track = growBeyondGrowthLimitsTracks->at(i);
(...skipping 911 matching lines...) Expand 10 before | Expand all | Expand 10 after
1767 if (isFloating()) 1863 if (isFloating())
1768 return "LayoutGrid (floating)"; 1864 return "LayoutGrid (floating)";
1769 if (isAnonymous()) 1865 if (isAnonymous())
1770 return "LayoutGrid (anonymous)"; 1866 return "LayoutGrid (anonymous)";
1771 if (isRelPositioned()) 1867 if (isRelPositioned())
1772 return "LayoutGrid (relative positioned)"; 1868 return "LayoutGrid (relative positioned)";
1773 return "LayoutGrid"; 1869 return "LayoutGrid";
1774 } 1870 }
1775 1871
1776 } // namespace blink 1872 } // namespace blink
OLDNEW
« Source/core/layout/LayoutGrid.h ('K') | « Source/core/layout/LayoutGrid.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698