diff --git a/ios/chrome/browser/ui/settings/privacy_collection_view_controller_unittest.mm b/ios/chrome/browser/ui/settings/privacy_collection_view_controller_unittest.mm
index b54ad4e..2575519 100644
--- a/ios/chrome/browser/ui/settings/privacy_collection_view_controller_unittest.mm
+++ b/ios/chrome/browser/ui/settings/privacy_collection_view_controller_unittest.mm
@@ -84,7 +84,8 @@
 
 // Tests PrivacyCollectionViewController is set up with all appropriate items
 // and sections.
-TEST_F(PrivacyCollectionViewControllerTest, TestModel) {
+// TODO(http://crbug.com/677121): reenable this test.
+TEST_F(PrivacyCollectionViewControllerTest, DISABLED_TestModel) {
   CheckController();
   EXPECT_EQ(4, NumberOfSections());
 
diff --git a/ios/chrome/browser/web/navigation_egtest.mm b/ios/chrome/browser/web/navigation_egtest.mm
index dc1eb71..702193e4 100644
--- a/ios/chrome/browser/web/navigation_egtest.mm
+++ b/ios/chrome/browser/web/navigation_egtest.mm
@@ -378,6 +378,11 @@
 
 // Tests going back via back button then forward via history.forward().
 - (void)testHistoryForwardNavigation {
+// TODO(crbug.com/677129): Reenable this test.
+#if TARGET_OS_IPHONE
+  EARL_GREY_TEST_SKIPPED(@"flaky on devices");
+#endif  // TARGET_OS_IPHONE
+
   SetupBackAndForwardResponseProvider();
 
   // Navigate to an HTML page with a forward button.
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations
index 9f38f8e..9726cded 100644
--- a/third_party/WebKit/LayoutTests/TestExpectations
+++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -1913,10 +1913,6 @@
 crbug.com/659610 fast/css-grid-layout/grid-baseline-margins.html [ Failure ]
 
 
-# Due to a temporal revert these tests are failing:
-crbug.com/666688 fast/css-grid-layout/grid-change-intrinsic-size-with-auto-repeat-tracks.html [ Failure ]
-crbug.com/666688 fast/css-grid-layout/mozilla/grid-repeat-auto-fill-fit-001.html [ Failure ]
-
 # TODO(chrishall): this is a temporary mediation step as part of the P0 issue crbug.com/657646
 # this is not meant to be here for more than a few days (from 2016-11-03 SYD)
 crbug.com/657646 [ Win ] fast/text/font-weight.html [ Failure Pass ]
diff --git a/third_party/WebKit/LayoutTests/fast/css-grid-layout/grid-change-intrinsic-size-with-auto-repeat-tracks.html b/third_party/WebKit/LayoutTests/fast/css-grid-layout/grid-change-intrinsic-size-with-auto-repeat-tracks.html
index fadfc0b9..6563756 100644
--- a/third_party/WebKit/LayoutTests/fast/css-grid-layout/grid-change-intrinsic-size-with-auto-repeat-tracks.html
+++ b/third_party/WebKit/LayoutTests/fast/css-grid-layout/grid-change-intrinsic-size-with-auto-repeat-tracks.html
@@ -13,8 +13,6 @@
     margin-bottom: 10px;
 }
 
-.gridAutoFillAndMinContentFixed { grid-template-columns: repeat(auto-fill, 20px) minmax(min-content, 40px); }
-
 .abs { height: 5px; position: absolute; width: 100%; }
 
 </style>
diff --git a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
index ac08e77..eef54fb 100644
--- a/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
+++ b/third_party/WebKit/Source/core/layout/LayoutGrid.cpp
@@ -640,14 +640,6 @@
 
     TextAutosizer::LayoutScope textAutosizerLayoutScope(this, &layoutScope);
 
-    // TODO(svillar): we won't need to do this once the intrinsic width
-    // computation is isolated from the LayoutGrid object state (it should not
-    // touch any attribute) (see crbug.com/627812)
-    size_t autoRepeatColumns = m_grid.autoRepeatTracks(ForColumns);
-    if (autoRepeatColumns &&
-        autoRepeatColumns !=
-            computeAutoRepeatTracksCount(ForColumns, TrackSizing))
-      dirtyGrid();
     placeItemsOnGrid(m_grid, TrackSizing);
 
     GridSizingData sizingData(numTracks(ForColumns, m_grid),
@@ -808,12 +800,12 @@
 void LayoutGrid::computeIntrinsicLogicalWidths(
     LayoutUnit& minLogicalWidth,
     LayoutUnit& maxLogicalWidth) const {
-  const_cast<LayoutGrid*>(this)->placeItemsOnGrid(const_cast<Grid&>(m_grid),
-                                                  IntrinsicSizeComputation);
+  Grid grid(this);
+  placeItemsOnGrid(grid, IntrinsicSizeComputation);
 
-  GridSizingData sizingData(numTracks(ForColumns, m_grid),
-                            numTracks(ForRows, m_grid),
-                            const_cast<Grid&>(m_grid));
+  GridSizingData sizingData(numTracks(ForColumns, grid),
+                            numTracks(ForRows, grid), grid);
+
   computeTrackSizesForIndefiniteSize(ForColumns, sizingData, minLogicalWidth,
                                      maxLogicalWidth);
 
@@ -2069,7 +2061,7 @@
   size_t lastAutoRepeatTrack =
       firstAutoRepeatTrack + grid.autoRepeatTracks(direction);
 
-  if (!m_grid.hasGridItems()) {
+  if (!grid.hasGridItems()) {
     emptyTrackIndexes = WTF::wrapUnique(new OrderedTrackIndexSet);
     for (size_t trackIndex = firstAutoRepeatTrack;
          trackIndex < lastAutoRepeatTrack; ++trackIndex)
@@ -2089,23 +2081,21 @@
 }
 
 void LayoutGrid::placeItemsOnGrid(LayoutGrid::Grid& grid,
-                                  SizingOperation sizingOperation) {
+                                  SizingOperation sizingOperation) const {
+  size_t autoRepeatRows =
+      computeAutoRepeatTracksCount(ForRows, sizingOperation);
+  size_t autoRepeatColumns =
+      computeAutoRepeatTracksCount(ForColumns, sizingOperation);
+  if (autoRepeatRows != grid.autoRepeatTracks(ForRows) ||
+      autoRepeatColumns != grid.autoRepeatTracks(ForColumns)) {
+    grid.setNeedsItemsPlacement(true);
+    grid.setAutoRepeatTracks(autoRepeatRows, autoRepeatColumns);
+  }
+
   if (!grid.needsItemsPlacement())
     return;
 
   DCHECK(!grid.hasGridItems());
-
-  size_t autoRepeatColumns;
-  size_t autoRepeatRows =
-      computeAutoRepeatTracksCount(ForRows, sizingOperation);
-  if (sizingOperation == IntrinsicSizeComputation) {
-    autoRepeatColumns = styleRef().gridAutoRepeatColumns().size();
-  } else {
-    autoRepeatColumns =
-        computeAutoRepeatTracksCount(ForColumns, sizingOperation);
-  }
-  m_grid.setAutoRepeatTracks(autoRepeatRows, autoRepeatColumns);
-
   populateExplicitGridAndOrderIterator(grid);
 
   Vector<LayoutBox*> autoMajorAxisAutoGridItems;
diff --git a/third_party/WebKit/Source/core/layout/LayoutGrid.h b/third_party/WebKit/Source/core/layout/LayoutGrid.h
index d9840871..d491a58 100644
--- a/third_party/WebKit/Source/core/layout/LayoutGrid.h
+++ b/third_party/WebKit/Source/core/layout/LayoutGrid.h
@@ -149,7 +149,7 @@
       Grid&,
       GridTrackSizingDirection) const;
 
-  void placeItemsOnGrid(Grid&, SizingOperation);
+  void placeItemsOnGrid(Grid&, SizingOperation) const;
   void populateExplicitGridAndOrderIterator(Grid&) const;
   std::unique_ptr<GridArea> createEmptyGridAreaAtSpecifiedPositionsOutsideGrid(
       const Grid&,
@@ -351,7 +351,7 @@
   typedef Vector<Vector<GridCell>> GridAsMatrix;
   class Grid final {
    public:
-    Grid(LayoutGrid* grid) : m_orderIterator(grid) {}
+    Grid(const LayoutGrid* grid) : m_orderIterator(grid) {}
 
     size_t numTracks(GridTrackSizingDirection) const;