Check child_change instead of change for explicit inherit.

Additionally, re-ordered checks in ComputedStyle::ComputeDifference()
and removed the full ComputedStyle comparison which did extra
comparisons of inherited data.

Bug: 958393
Change-Id: Ib798a688cc27719417326d6b3a6e75ce3595fa50
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1594575
Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
Commit-Queue: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/master@{#657180}
diff --git a/css/css-transitions/inherit-height-transition.html b/css/css-transitions/inherit-height-transition.html
new file mode 100644
index 0000000..e411da3
--- /dev/null
+++ b/css/css-transitions/inherit-height-transition.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-transitions/#starting">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+  div { height: inherit; }
+  #outer { height: 50px; }
+  #outer.collapsed {
+    height: 0px;
+    transition: height 0.01s;
+  }
+</style>
+<div id="outer">
+  <div>
+    <div id="inner">You should only see a flash of red.</div>
+  </div>
+</div>
+<script>
+  promise_test(t => {
+    outer.offsetTop;
+    outer.className = "collapsed";
+    return (new Promise((resolve) => outer.addEventListener("transitionend", resolve))).then(() => {
+      assert_equals(getComputedStyle(inner).height, "0px");
+    });
+  }, "Transitioned height, explicitly inherited down two DOM levels, should inherit correctly");
+</script>