| Index: third_party/WebKit/Source/core/layout/LayoutGrid.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
|
| index 1ac1d2d35d3cc99dcec4971c84193397ebd0a8ea..b2639b5b290a57e5da50a4a3b4af85bb01eb72f4 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
|
| @@ -32,7 +32,9 @@
|
| #include "core/style/ComputedStyle.h"
|
| #include "core/style/GridArea.h"
|
| #include "platform/LengthFunctions.h"
|
| +#include "wtf/PtrUtil.h"
|
| #include <algorithm>
|
| +#include <memory>
|
|
|
| namespace blink {
|
|
|
| @@ -199,7 +201,7 @@ public:
|
| return true;
|
| }
|
|
|
| - PassOwnPtr<GridArea> nextEmptyGridArea(size_t fixedTrackSpan, size_t varyingTrackSpan)
|
| + std::unique_ptr<GridArea> nextEmptyGridArea(size_t fixedTrackSpan, size_t varyingTrackSpan)
|
| {
|
| DCHECK(!m_grid.isEmpty());
|
| DCHECK(!m_grid[0].isEmpty());
|
| @@ -212,7 +214,7 @@ public:
|
| const size_t endOfVaryingTrackIndex = (m_direction == ForColumns) ? m_grid.size() : m_grid[0].size();
|
| for (; varyingTrackIndex < endOfVaryingTrackIndex; ++varyingTrackIndex) {
|
| if (checkEmptyCells(rowSpan, columnSpan)) {
|
| - OwnPtr<GridArea> result = adoptPtr(new GridArea(GridSpan::translatedDefiniteGridSpan(m_rowIndex, m_rowIndex + rowSpan), GridSpan::translatedDefiniteGridSpan(m_columnIndex, m_columnIndex + columnSpan)));
|
| + std::unique_ptr<GridArea> result = wrapUnique(new GridArea(GridSpan::translatedDefiniteGridSpan(m_rowIndex, m_rowIndex + rowSpan), GridSpan::translatedDefiniteGridSpan(m_columnIndex, m_columnIndex + columnSpan)));
|
| // Advance the iterator to avoid an infinite loop where we would return the same grid area over and over.
|
| ++varyingTrackIndex;
|
| return result;
|
| @@ -634,13 +636,13 @@ LayoutUnit LayoutGrid::computeUsedBreadthOfMaxLength(const GridLength& gridLengt
|
| return LayoutUnit(infinity);
|
| }
|
|
|
| -double LayoutGrid::computeFlexFactorUnitSize(const Vector<GridTrack>& tracks, GridTrackSizingDirection direction, double flexFactorSum, LayoutUnit& leftOverSpace, const Vector<size_t, 8>& flexibleTracksIndexes, PassOwnPtr<TrackIndexSet> tracksToTreatAsInflexible) const
|
| +double LayoutGrid::computeFlexFactorUnitSize(const Vector<GridTrack>& tracks, GridTrackSizingDirection direction, double flexFactorSum, LayoutUnit& leftOverSpace, const Vector<size_t, 8>& flexibleTracksIndexes, std::unique_ptr<TrackIndexSet> tracksToTreatAsInflexible) const
|
| {
|
| // We want to avoid the effect of flex factors sum below 1 making the factor unit size to grow exponentially.
|
| double hypotheticalFactorUnitSize = leftOverSpace / std::max<double>(1, flexFactorSum);
|
|
|
| // product of the hypothetical "flex factor unit" and any flexible track's "flex factor" must be grater than such track's "base size".
|
| - OwnPtr<TrackIndexSet> additionalTracksToTreatAsInflexible = std::move(tracksToTreatAsInflexible);
|
| + std::unique_ptr<TrackIndexSet> additionalTracksToTreatAsInflexible = std::move(tracksToTreatAsInflexible);
|
| bool validFlexFactorUnit = true;
|
| for (auto index : flexibleTracksIndexes) {
|
| if (additionalTracksToTreatAsInflexible && additionalTracksToTreatAsInflexible->contains(index))
|
| @@ -652,7 +654,7 @@ double LayoutGrid::computeFlexFactorUnitSize(const Vector<GridTrack>& tracks, Gr
|
| leftOverSpace -= baseSize;
|
| flexFactorSum -= flexFactor;
|
| if (!additionalTracksToTreatAsInflexible)
|
| - additionalTracksToTreatAsInflexible = adoptPtr(new TrackIndexSet());
|
| + additionalTracksToTreatAsInflexible = wrapUnique(new TrackIndexSet());
|
| additionalTracksToTreatAsInflexible->add(index);
|
| validFlexFactorUnit = false;
|
| }
|
| @@ -1413,13 +1415,13 @@ void LayoutGrid::populateExplicitGridAndOrderIterator()
|
| column.grow(maximumColumnIndex + abs(m_smallestColumnStart));
|
| }
|
|
|
| -PassOwnPtr<GridArea> LayoutGrid::createEmptyGridAreaAtSpecifiedPositionsOutsideGrid(const LayoutBox& gridItem, GridTrackSizingDirection specifiedDirection, const GridSpan& specifiedPositions) const
|
| +std::unique_ptr<GridArea> LayoutGrid::createEmptyGridAreaAtSpecifiedPositionsOutsideGrid(const LayoutBox& gridItem, GridTrackSizingDirection specifiedDirection, const GridSpan& specifiedPositions) const
|
| {
|
| GridTrackSizingDirection crossDirection = specifiedDirection == ForColumns ? ForRows : ForColumns;
|
| const size_t endOfCrossDirection = crossDirection == ForColumns ? gridColumnCount() : gridRowCount();
|
| size_t crossDirectionSpanSize = GridPositionsResolver::spanSizeForAutoPlacedItem(*style(), gridItem, crossDirection);
|
| GridSpan crossDirectionPositions = GridSpan::translatedDefiniteGridSpan(endOfCrossDirection, endOfCrossDirection + crossDirectionSpanSize);
|
| - return adoptPtr(new GridArea(specifiedDirection == ForColumns ? crossDirectionPositions : specifiedPositions, specifiedDirection == ForColumns ? specifiedPositions : crossDirectionPositions));
|
| + return wrapUnique(new GridArea(specifiedDirection == ForColumns ? crossDirectionPositions : specifiedPositions, specifiedDirection == ForColumns ? specifiedPositions : crossDirectionPositions));
|
| }
|
|
|
| void LayoutGrid::placeSpecifiedMajorAxisItemsOnGrid(const Vector<LayoutBox*>& autoGridItems)
|
| @@ -1440,7 +1442,7 @@ void LayoutGrid::placeSpecifiedMajorAxisItemsOnGrid(const Vector<LayoutBox*>& au
|
| unsigned majorAxisInitialPosition = majorAxisPositions.startLine();
|
|
|
| GridIterator iterator(m_grid, autoPlacementMajorAxisDirection(), majorAxisPositions.startLine(), isGridAutoFlowDense ? 0 : minorAxisCursors.get(majorAxisInitialPosition));
|
| - OwnPtr<GridArea> emptyGridArea = iterator.nextEmptyGridArea(majorAxisPositions.integerSpan(), minorAxisSpanSize);
|
| + std::unique_ptr<GridArea> emptyGridArea = iterator.nextEmptyGridArea(majorAxisPositions.integerSpan(), minorAxisSpanSize);
|
| if (!emptyGridArea)
|
| emptyGridArea = createEmptyGridAreaAtSpecifiedPositionsOutsideGrid(*autoGridItem, autoPlacementMajorAxisDirection(), majorAxisPositions);
|
|
|
| @@ -1478,7 +1480,7 @@ void LayoutGrid::placeAutoMajorAxisItemOnGrid(LayoutBox& gridItem, std::pair<siz
|
| size_t majorAxisAutoPlacementCursor = autoPlacementMajorAxisDirection() == ForColumns ? autoPlacementCursor.second : autoPlacementCursor.first;
|
| size_t minorAxisAutoPlacementCursor = autoPlacementMajorAxisDirection() == ForColumns ? autoPlacementCursor.first : autoPlacementCursor.second;
|
|
|
| - OwnPtr<GridArea> emptyGridArea;
|
| + std::unique_ptr<GridArea> emptyGridArea;
|
| if (minorAxisPositions.isTranslatedDefinite()) {
|
| // Move to the next track in major axis if initial position in minor axis is before auto-placement cursor.
|
| if (minorAxisPositions.startLine() < minorAxisAutoPlacementCursor)
|
|
|