content-visibility: Ensure to propagate positioned movement layout dirty bit.

This patch ensures that we propagate the positioned movement layout dirty
bit since it affects "self layout" in the sense that it is the object
itself that could be positioned differently, not necessarily its child.

The early out right now protects us from propagating child only dirty
bits, since those updates would be blocked anyway.

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

Change-Id: I1ed4850317ff0248fc74a9ad09fedba2d5fa2041
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2542305
Reviewed-by: Ian Kilpatrick <ikilpatrick@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#828928}
diff --git a/css/css-contain/content-visibility/content-visibility-078-ref.html b/css/css-contain/content-visibility/content-visibility-078-ref.html
new file mode 100644
index 0000000..64629ca
--- /dev/null
+++ b/css/css-contain/content-visibility/content-visibility-078-ref.html
@@ -0,0 +1,19 @@
+<!doctype HTML>
+<html>
+<meta charset="utf8">
+<title>CSS Content Visibility: positioned movement update moves hidden container (reference)</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-contain/#content-visibility">
+
+<style>
+#target {
+  top: 0;
+  left: 100px;
+  position: absolute;
+  width: 100px;
+  height: 100px;
+  background: blue;
+}
+</style>
+
+<div id=target></div>
diff --git a/css/css-contain/content-visibility/content-visibility-078.html b/css/css-contain/content-visibility/content-visibility-078.html
new file mode 100644
index 0000000..51382bc
--- /dev/null
+++ b/css/css-contain/content-visibility/content-visibility-078.html
@@ -0,0 +1,33 @@
+<!doctype HTML>
+<html class="reftest-wait">
+<meta charset="utf8">
+<title>CSS Content Visibility: positioned movement update moves hidden container</title>
+<link rel="author" title="Vladimir Levin" href="mailto:vmpstr@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-contain/#content-visibility">
+<link rel="match" href="content-visibility-078-ref.html">
+<meta name="assert" content="when locked, position updates still apply">
+
+<script src="/common/reftest-wait.js"></script>
+
+<style>
+.hidden { content-visibility: hidden; }
+#target {
+  top: 0;
+  left: 0;
+  position: absolute;
+  width: 100px;
+  height: 100px;
+  background: blue;
+}
+</style>
+
+<div id=target class=hidden>Content</div>
+
+<script>
+function runTest() {
+  target.style = "left: 100px;";
+  takeScreenshot();
+}
+
+window.onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
+</script>