Bug 1531578 - don't process nsChangeHint_UpdateSubtreeOverflow for nondisplay frames r=dholbert
authorlongsonr <longsonr@gmail.com>
Sat, 09 Mar 2019 16:01:31 +0000
changeset 521257 e9672ac059b453a1b6e9f5a177b2a10a9eed113f
parent 521256 6b4af1ecd78d9765b9b09eb9bcaf2ff88def7b80
child 521258 6838e7d3960f9888ecdfcd6eda67fa1afae76190
push id10862
push userffxbld-merge
push dateMon, 11 Mar 2019 13:01:11 +0000
treeherdermozilla-beta@a2e7f5c935da [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdholbert
bugs1531578
milestone67.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1531578 - don't process nsChangeHint_UpdateSubtreeOverflow for nondisplay frames r=dholbert
dom/svg/crashtests/1531578-1.html
dom/svg/crashtests/crashtests.list
layout/base/RestyleManager.cpp
new file mode 100644
--- /dev/null
+++ b/dom/svg/crashtests/1531578-1.html
@@ -0,0 +1,17 @@
+<style>
+* {
+  filter: brightness(0.1638);
+  outline: 64px dotted;
+}
+</style>
+<script>
+function go() {
+  a.setAttribute("text-decoration", "line-through")
+}
+</script>
+<body onload=go()>
+<svg>
+<marker>
+<foreignObject id="a">
+<ins>
+
--- a/dom/svg/crashtests/crashtests.list
+++ b/dom/svg/crashtests/crashtests.list
@@ -86,9 +86,10 @@ load 1347617-2.svg
 load 1347617-3.svg
 load 1402798.html
 load 1419250-1.html
 load 1420492.html
 load 1477853.html
 load 1486488.html
 load 1493447.html
 skip-if(Android) load 1507961-1.html  # times out on Android due to the test size
+load 1531578-1.html
 load test_nested_svg.html
--- a/layout/base/RestyleManager.cpp
+++ b/layout/base/RestyleManager.cpp
@@ -1613,17 +1613,18 @@ void RestyleManager::ProcessRestyledFram
       NS_ASSERTION(frame, "This shouldn't happen");
 
       if (!frame->FrameMaintainsOverflow()) {
         // frame does not maintain overflow rects, so avoid calling
         // FinishAndStoreOverflow on it:
         hint &=
             ~(nsChangeHint_UpdateOverflow | nsChangeHint_ChildrenOnlyTransform |
               nsChangeHint_UpdatePostTransformOverflow |
-              nsChangeHint_UpdateParentOverflow);
+              nsChangeHint_UpdateParentOverflow |
+              nsChangeHint_UpdateSubtreeOverflow);
       }
 
       if (primaryFrame &&
           !(primaryFrame->GetStateBits() & NS_FRAME_MAY_BE_TRANSFORMED)) {
         // Frame can not be transformed, and thus a change in transform will
         // have no effect and we should not use the
         // nsChangeHint_UpdatePostTransformOverflow hint.
         hint &= ~nsChangeHint_UpdatePostTransformOverflow;