WebKit Bugzilla
Attachment 370122 Details for
Bug 197975
: REGRESSION (r245170): gmail.com header flickers when hovering over the animating buttons
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-197975-20190517092047.patch (text/plain), 8.57 KB, created by
Simon Fraser (smfr)
on 2019-05-17 09:20:48 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Simon Fraser (smfr)
Created:
2019-05-17 09:20:48 PDT
Size:
8.57 KB
patch
obsolete
>Subversion Revision: 245375 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 3804d09e151934d569cf080116623570870763ba..19700035942eb2a2e1b712c353a9b36bd45cf946 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,21 @@ >+2019-05-17 Simon Fraser <simon.fraser@apple.com> >+ >+ REGRESSION (r245170): gmail.com header flickers when hovering over the animating buttons >+ https://bugs.webkit.org/show_bug.cgi?id=197975 >+ <rdar://problem/50865946> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ When computeCompositingRequirements() determined that a layer could paint into shared backing, it >+ pushed an overlap container. If that layer then converted to normal composting, we'd push a second >+ overlap container, which left the overlap map in a bad state for the rest of the compositing >+ traversal, causing layers to not get composited when necessary. >+ >+ Test: compositing/shared-backing/overlap-after-shared-to-composited.html >+ >+ * rendering/RenderLayerCompositor.cpp: >+ (WebCore::RenderLayerCompositor::computeCompositingRequirements): >+ > 2019-05-15 Simon Fraser <simon.fraser@apple.com> > > Avoid a recursive descendants layer walk sometimes >diff --git a/Source/WebCore/rendering/RenderLayerCompositor.cpp b/Source/WebCore/rendering/RenderLayerCompositor.cpp >index b5b8046423b9eaf8051476fb69bfb427cc32727d..5897baad1fa25ef22212dd7da1c38abb5a5115da 100644 >--- a/Source/WebCore/rendering/RenderLayerCompositor.cpp >+++ b/Source/WebCore/rendering/RenderLayerCompositor.cpp >@@ -910,8 +910,10 @@ void RenderLayerCompositor::computeCompositingRequirements(RenderLayer* ancestor > layer.setIndirectCompositingReason(compositingReason); > > // Check if the computed indirect reason will force the layer to become composited. >- if (!willBeComposited && layer.mustCompositeForIndirectReasons() && canBeComposited(layer)) >+ if (!willBeComposited && layer.mustCompositeForIndirectReasons() && canBeComposited(layer)) { > willBeComposited = true; >+ layerPaintsIntoProvidedBacking = false; >+ } > > // The children of this layer don't need to composite, unless there is > // a compositing layer among them, so start by inheriting the compositing >@@ -924,8 +926,11 @@ void RenderLayerCompositor::computeCompositingRequirements(RenderLayer* ancestor > currentState.testingOverlap = true; > // This layer now acts as the ancestor for kids. > currentState.compositingAncestor = &layer; >- overlapMap.pushCompositingContainer(); >- LOG_WITH_STREAM(CompositingOverlap, stream << "layer " << &layer << " will composite, pushed container " << overlapMap); >+ >+ if (!layerPaintsIntoProvidedBacking) { >+ overlapMap.pushCompositingContainer(); >+ LOG_WITH_STREAM(CompositingOverlap, stream << "layer " << &layer << " will composite, pushed container " << overlapMap); >+ } > > willBeComposited = true; > layerPaintsIntoProvidedBacking = false; >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index ab3bd9dff0367a73064510faf0b2e7410da2ed31..e18882f500ed527bfb563fe9c32e854938972b8c 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,14 @@ >+2019-05-17 Simon Fraser <simon.fraser@apple.com> >+ >+ REGRESSION (r245170): gmail.com header flickers when hovering over the animating buttons >+ https://bugs.webkit.org/show_bug.cgi?id=197975 >+ <rdar://problem/50865946> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * compositing/shared-backing/overlap-after-shared-to-composited-expected.html: Added. >+ * compositing/shared-backing/overlap-after-shared-to-composited.html: Added. >+ > 2019-05-15 Devin Rousso <drousso@apple.com> > > Web Inspector: user gesture toggle should also force user interaction flag >diff --git a/LayoutTests/compositing/shared-backing/overlap-after-shared-to-composited-expected.html b/LayoutTests/compositing/shared-backing/overlap-after-shared-to-composited-expected.html >new file mode 100644 >index 0000000000000000000000000000000000000000..1415d4e1436e2398d96eb73d0a3ddb9fddbde7df >--- /dev/null >+++ b/LayoutTests/compositing/shared-backing/overlap-after-shared-to-composited-expected.html >@@ -0,0 +1,73 @@ >+<!DOCTYPE html> >+<html> >+<head> >+ <title>Tests that overlap testing continues to work after a layer converts from shared to composited</title> >+ <style> >+ .trigger { >+ position: absolute; >+ transform: translateZ(0); >+ background-color: silver; >+ width: 20px; >+ height: 400px; >+ } >+ >+ .provider { >+ position: absolute; >+ left: 20px; >+ top: 20px; >+ width: 400px; >+ height: 100px; >+ background-color: gray; >+ } >+ >+ .box { >+ width: 100px; >+ height: 100px; >+ background-color: gray; >+ } >+ >+ .absolute { >+ position: absolute; >+ top: 200px; >+ left: 0px; >+ background-color: lightblue; >+ } >+ >+ .overlapper { >+ position: absolute; >+ top: 70px; >+ left: 150px; >+ width: 200px; >+ height: 100px; >+ padding: 10px; >+ background-color: green; >+ } >+ >+ .stacking { >+ position: relative; >+ z-index: 0; >+ padding: 10px; >+ height: 120px; >+ border: 1px solid black; >+ transform: translateZ(0); >+ } >+ >+ .negative { >+ position: relative; >+ z-index: -1; >+ background-color: orange; >+ transform: translateZ(0); >+ } >+ </style> >+</head> >+<body> >+ <div class="trigger"></div> >+ <div class="provider"> >+ <div class="absolute box"></div> >+ <div class="stacking box"> >+ <div class="negative box"></div> >+ </div> >+ </div> >+ <div class="overlapper"></div> >+</body> >+</html> >diff --git a/LayoutTests/compositing/shared-backing/overlap-after-shared-to-composited.html b/LayoutTests/compositing/shared-backing/overlap-after-shared-to-composited.html >new file mode 100644 >index 0000000000000000000000000000000000000000..8e99d63b570eecb66cac7cbef4e92f6feb0f57d3 >--- /dev/null >+++ b/LayoutTests/compositing/shared-backing/overlap-after-shared-to-composited.html >@@ -0,0 +1,88 @@ >+<!DOCTYPE html> >+<html> >+<head> >+ <title>Tests that overlap testing continues to work after a layer converts from shared to composited</title> >+ <style> >+ .trigger { >+ position: absolute; >+ transform: translateZ(0); >+ background-color: silver; >+ width: 20px; >+ height: 400px; >+ } >+ >+ .provider { >+ position: absolute; >+ left: 20px; >+ top: 20px; >+ width: 400px; >+ height: 100px; >+ background-color: gray; >+ } >+ >+ .box { >+ width: 100px; >+ height: 100px; >+ background-color: gray; >+ } >+ >+ .absolute { >+ position: absolute; >+ top: 200px; >+ left: 0px; >+ background-color: lightblue; >+ } >+ >+ .overlapper { >+ position: absolute; >+ top: 70px; >+ left: 150px; >+ width: 200px; >+ height: 100px; >+ padding: 10px; >+ background-color: green; >+ } >+ >+ .stacking { >+ position: relative; >+ z-index: 0; >+ padding: 10px; >+ height: 120px; >+ border: 1px solid black; >+ } >+ >+ .negative { >+ position: relative; >+ z-index: -1; >+ background-color: orange; >+ } >+ >+ .negative.changed { >+ transform: translateZ(0); >+ } >+ >+ </style> >+ <script> >+ if (window.testRunner) >+ testRunner.waitUntilDone(); >+ >+ window.addEventListener('load', () => { >+ setTimeout(() => { >+ document.querySelector('.negative').classList.add('changed'); >+ if (window.testRunner) >+ testRunner.notifyDone(); >+ }, 0); >+ }, false); >+ </script> >+</head> >+<body> >+ <div class="trigger"></div> >+ <div class="provider"> >+ <div class="absolute box"></div> >+ <div class="stacking box"> >+ <div class="negative box"></div> >+ </div> >+ </div> >+ <div class="overlapper"></div> >+</body> >+</html>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
koivisto
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 197975
:
370101
|
370102
|
370103
|
370104
|
370105
|
370106
| 370122