DeferredShaping: Disable the feature for auto-sizing frames

* If auto-sizing is enabled, |LocalFrameView::
  UpdateStyleAndLayoutInternal()| is called multiple times before
  PerformPostLayoutTasks(), which locks deferred IFCs. It can change the
  state of elements in LocalFrameView::deferred_to_be_locked_.

* Auto-sizing frames need precise box sizes.

Bug: 1259085
Change-Id: I402b74999dc9d9ae99cb19bb3e193f4d71592590
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3750662
Reviewed-by: Koji Ishii <kojii@chromium.org>
Auto-Submit: Kent Tamura <tkent@chromium.org>
Commit-Queue: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1022045}
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc
index 4c887ca..fe56c51 100644
--- a/third_party/blink/renderer/core/frame/local_frame_view.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -857,11 +857,7 @@
       default_allow_deferred_shaping_ =
           default_allow_deferred_shaping_ &&
           RuntimeEnabledFeatures::DeferredShapingEnabled() &&
-          !frame_->PagePopupOwner() &&
-          // Avoid a DCEHCK failure in |NavigatingExtensionPopupInteractiveTest.
-          // PageInOtherExtension_Get| on linux-lacros-rel.
-          // TODO(tkent): Investigate the failure.
-          !document->Url().Protocol().StartsWith("chrome-error") &&
+          !frame_->PagePopupOwner() && !auto_size_info_ &&
           !FirstMeaningfulPaintDetector::From(*frame_->GetDocument())
                .SeenFirstMeaningfulPaint();
       base::AutoReset<bool> deferred_shaping(
diff --git a/third_party/blink/renderer/core/layout/deferred_shaping_test.cc b/third_party/blink/renderer/core/layout/deferred_shaping_test.cc
index 6ee13518..b22bf59 100644
--- a/third_party/blink/renderer/core/layout/deferred_shaping_test.cc
+++ b/third_party/blink/renderer/core/layout/deferred_shaping_test.cc
@@ -797,4 +797,20 @@
   EXPECT_FALSE(IsLocked("target"));
 }
 
+TEST_F(DeferredShapingTest, NoDeferForAutoSizing) {
+  GetDocument().body()->setInnerHTML(R"HTML(
+    <style>
+    @media (max-height: 200px) {
+      #target { display: inline; }
+    }
+    </style>
+    <div style="height:1800px"></div>
+    <div id="target">IFC</div>)HTML",
+                                     ASSERT_NO_EXCEPTION);
+
+  GetFrame().View()->EnableAutoSizeMode({100, 100}, {1920, 4000});
+  UpdateAllLifecyclePhasesForTest();
+  // Pass if no DCHECK failures.
+}
+
 }  // namespace blink