c-v: Distinguish the type of forced updates.

This patch ensures that we can force an update for style without
forcing layout, etc. This is useful since we need to determine whether
we have a lock that blocks, for e.g. layout, and if we force a lock
it's unclear whether layout would be updated without this patch.

With the patch, functions like UpdateStyleAndLayoutTree only force
style updates.

R=chrishtr@chromium.org, jarhar@chromium.org

Fixed: 1250742
Change-Id: I9856acbcabedfb0b232518b438ca43a16a0cfd09
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3168328
Commit-Queue: vmpstr <vmpstr@chromium.org>
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Cr-Commit-Position: refs/heads/main@{#923524}
diff --git a/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility.html b/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus.html
similarity index 100%
rename from html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility.html
rename to html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-focus.html
diff --git a/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr.html b/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr.html
new file mode 100644
index 0000000..074e63b
--- /dev/null
+++ b/html/semantics/embedded-content/the-embed-element/embed-document-under-content-visibility-gbcr.html
@@ -0,0 +1,24 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>HTML Test: The embed element represents a document</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<meta name="assert" content="Ensure document finishes load when getBoundingClientRect is attempted before the embed is finished loading">
+
+<style>
+.hidden { content-visibility: hidden; }
+</style>
+<body>
+  <script>
+  async_test(t => {
+    window.onload = () => t.done();
+  }, "ensure onload happens");
+  </script>
+  <div class=hidden>
+    <embed id=target src="embed-iframe.html">
+  </div>
+  <script>
+    // Ensure we process style and layout in the hidden object.
+    target.getBoundingClientRect();
+  </script>
+</body>