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) |