haikuwebkit/LayoutTests/css3/blending/blend-mode-isolation-flags-...

38 lines
1.2 KiB
HTML
Raw Permalink Normal View History

[CSS Blending] Isolation descendant dependent flags are not updated correctly https://bugs.webkit.org/show_bug.cgi?id=130892 Patch by Ion Rosca <rosca@adobe.com> on 2014-04-17 Reviewed by Dean Jackson. Source/WebCore: The isolation descendant dependent flag (m_hasUnisolatedBlendingDescendants) will help us to determine if a layer should isolate blending descendants or not. The m_hasUnisolatedBlendingDescendants flag should be set for layers that have blending descendant layers not isolated by descendant stacking contexts. An element isolatesBlending() if it has this flag set and creates stacking context. Tests: css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation.html css3/compositing/blend-mode-isolation-flags-turn-off-blending.html css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context.html css3/compositing/blend-mode-isolation-flags-turn-on-blending.html css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context.html * rendering/RenderLayer.cpp: (WebCore::RenderLayer::RenderLayer): (WebCore::RenderLayer::updateBlendMode): (WebCore::RenderLayer::updateAncestorChainHasBlendingDescendants): When a layer has blending and it hasn't had it before, we set the isolation flag for all its ancestors up to the first layer creating stacking context. I removed the isComposited() check here. Isolation flags should be correct regardless of compositing state. Moreover, if this method is called from styleChanged(), the compositing state might not be accurate, it's going to be recalculated afterwards. (WebCore::RenderLayer::dirtyAncestorChainHasBlendingDescendants): When a layer doesn't have blending, but it used to have it before, we mark the isolation flag as dirty for all its ancestors up to the first layer creating stacking context. The isolation flags will be recalculated by RenderLayer::updateDescendantDependentFlags. (WebCore::RenderLayer::updateDescendantDependentFlags): Evaluates if the layer has unisolated blending descendants by traversing the layer subtree. (WebCore::RenderLayer::addChild): When adding a subtree that has blending or has some unisolated descendants, we set the flag for all the ancestors, up to the stacking context layer. (WebCore::RenderLayer::removeChild): When removing a subtree that had blending or had some unisolated descendants, we dirty the flag so that it could be reevaluated. (WebCore::RenderLayer::calculateClipRects): (WebCore::RenderLayer::updateTransform): * rendering/RenderLayer.h: Rename m_hasBlendedElementInChildStackingContext => m_hasUnisolatedBlendingDescendants and m_hasBlendedElementInChildStackingContextStatusDirty => m_hasUnisolatedBlendingDescendantsStatusDirty, * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements): Add an assert to make sure that if m_hasUnisolatedCompositedBlendingDescendants is true, then m_hasUnisolatedBlendingDescendants is true as well. LayoutTests: * css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-on-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context.html: Added. * platform/mac/css3/compositing/blend-mode-background-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-1-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-2-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-3-expected.txt: * platform/mac/css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-on-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-layers-expected.txt: * platform/mac/css3/compositing/blend-mode-reflection-expected.txt: * platform/mac/css3/compositing/blend-mode-simple-composited-expected.txt: * platform/mac/css3/compositing/blend-mode-simple-expected.txt: Canonical link: https://commits.webkit.org/149854@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@167424 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-04-17 08:42:53 +00:00
<!DOCTYPE HTML>
[CSS Blending] Cleanup tests in css3/blending https://bugs.webkit.org/show_bug.cgi?id=132600 Reviewed by Mihnea Ovidenie. Summary of changes: - move common stylesheet classes to blending-style.css. - remove trailing white spaces. - replace tabs with spaces. - remove the 'html' tags for consistency with the most of blending tests. This patch does not change the txt and png test expectations. * css3/blending/background-blend-mode-background-attachement-fixed-expected.html: * css3/blending/background-blend-mode-background-attachement-fixed.html: * css3/blending/background-blend-mode-background-clip-content-box-expected.html: * css3/blending/background-blend-mode-background-clip-content-box.html: * css3/blending/background-blend-mode-background-clip-padding-box-expected.html: * css3/blending/background-blend-mode-background-clip-padding-box.html: * css3/blending/background-blend-mode-background-origin-border-box-expected.html: * css3/blending/background-blend-mode-background-origin-border-box.html: * css3/blending/background-blend-mode-background-position-percentage-expected.html: * css3/blending/background-blend-mode-background-position-percentage.html: * css3/blending/background-blend-mode-background-repeat-no-repeat-expected.html: * css3/blending/background-blend-mode-background-repeat-no-repeat.html: * css3/blending/background-blend-mode-background-size-contain-expected.html: * css3/blending/background-blend-mode-background-size-contain.html: * css3/blending/background-blend-mode-background-size-cover-expected.html: * css3/blending/background-blend-mode-background-size-cover.html: * css3/blending/background-blend-mode-body-image-expected.html: * css3/blending/background-blend-mode-body-image.html: * css3/blending/background-blend-mode-body-transparent-color-and-image-expected.html: * css3/blending/background-blend-mode-body-transparent-color-and-image.html: * css3/blending/background-blend-mode-body-transparent-image-expected.html: * css3/blending/background-blend-mode-body-transparent-image.html: * css3/blending/background-blend-mode-crossfade-image-expected.html: * css3/blending/background-blend-mode-crossfade-image.html: * css3/blending/background-blend-mode-data-uri-svg-image-expected.html: * css3/blending/background-blend-mode-data-uri-svg-image.html: * css3/blending/background-blend-mode-default-value.html: * css3/blending/background-blend-mode-different-image-formats.html: * css3/blending/background-blend-mode-gif-color-2.html: * css3/blending/background-blend-mode-gif-color.html: * css3/blending/background-blend-mode-gradient-color.html: * css3/blending/background-blend-mode-gradient-gradient.html: * css3/blending/background-blend-mode-gradient-image.html: * css3/blending/background-blend-mode-image-color-dynamic-expected.html: * css3/blending/background-blend-mode-image-color-dynamic.html: * css3/blending/background-blend-mode-image-color.html: * css3/blending/background-blend-mode-image-image.html: * css3/blending/background-blend-mode-image-svg.html: * css3/blending/background-blend-mode-multiple-background-layers.html: * css3/blending/background-blend-mode-separate-layer-declaration-expected.html: * css3/blending/background-blend-mode-separate-layer-declaration.html: * css3/blending/background-blend-mode-single-layer-no-blending.html: * css3/blending/background-blend-mode-svg-color.html: * css3/blending/background-blend-mode-svg-expected.html: * css3/blending/background-blend-mode-svg.html: * css3/blending/background-blend-mode-tiled-layers.html: * css3/blending/blend-mode-accelerated-parent-overflow-hidden-expected.html: * css3/blending/blend-mode-accelerated-parent-overflow-hidden.html: * css3/blending/blend-mode-accelerated-with-multiple-stacking-contexts.html: * css3/blending/blend-mode-ancestor-clipping-layer.html: * css3/blending/blend-mode-background.html: * css3/blending/blend-mode-blended-element-overlapping-composited-sibling-should-have-compositing-layer.html: * css3/blending/blend-mode-body-child-background-color-expected.html: * css3/blending/blend-mode-body-child-background-color.html: * css3/blending/blend-mode-body-child-isolate-background-color-expected.html: * css3/blending/blend-mode-body-child-isolate-background-color.html: * css3/blending/blend-mode-body-child-isolate-html-background-color-expected.html: * css3/blending/blend-mode-body-child-isolate-html-background-color.html: * css3/blending/blend-mode-body-child.html: * css3/blending/blend-mode-body-element-expected.html: * css3/blending/blend-mode-body-element.html: * css3/blending/blend-mode-clip-accelerated-blending-canvas.html: * css3/blending/blend-mode-clip-accelerated-blending-child-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-child.html: * css3/blending/blend-mode-clip-accelerated-blending-double-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-double.html: * css3/blending/blend-mode-clip-accelerated-blending-with-siblings-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-with-siblings.html: * css3/blending/blend-mode-clip-accelerated-transformed-blending-expected.html: * css3/blending/blend-mode-clip-accelerated-transformed-blending.html: * css3/blending/blend-mode-clip-rect-accelerated-blending-expected.html: * css3/blending/blend-mode-clip-rect-accelerated-blending.html: * css3/blending/blend-mode-html-element-screen.html: * css3/blending/blend-mode-isolated-group-1.html: * css3/blending/blend-mode-isolated-group-2.html: * css3/blending/blend-mode-isolated-group-3.html: * css3/blending/blend-mode-isolation-accelerated-overflow-hidden.html: * css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-append-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation.html: * css3/blending/blend-mode-isolation-flags-turn-off-blending.html: * css3/blending/blend-mode-isolation-flags-turn-off-stacking-context.html: * css3/blending/blend-mode-isolation-flags-turn-on-blending.html: * css3/blending/blend-mode-isolation-flags-turn-on-stacking-context.html: * css3/blending/blend-mode-isolation-overflow-hidden-expected.html: * css3/blending/blend-mode-isolation-overflow-hidden.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer1.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer2.html: * css3/blending/blend-mode-isolation-turn-on-self-painting-layer.html: * css3/blending/blend-mode-layers.html: * css3/blending/blend-mode-overflow.html: * css3/blending/blend-mode-parent-of-composited-blended-has-layer.html: * css3/blending/blend-mode-reflection.html: * css3/blending/blend-mode-simple-composited.html: * css3/blending/blend-mode-transform-style.html: * css3/blending/blend-mode-with-accelerated-sibling.html: * css3/blending/blend-mode-with-body-expected.html: * css3/blending/blend-mode-with-body.html: * css3/blending/blend-mode-with-composited-descendant-should-have-layer.html: * css3/blending/effect-background-blend-mode-stacking.html: * css3/blending/isolation-isolate-blended-child-expected.html: * css3/blending/isolation-isolate-blended-child.html: * css3/blending/repaint/blend-mode-isolate-stacking-context.html: * css3/blending/repaint/blend-mode-turn-off-isolation-no-effect.html: * css3/blending/repaint/blend-mode-turn-off-isolation.html: * css3/blending/resources/blending-style.css: Added. This file contains classes shared by multiple blending tests. * css3/blending/resources/dump-layer-tree.js: Added. * css3/blending/script-tests/background-blend-mode-property-parsing.js: * css3/blending/script-tests/blend-mode-property-parsing-invalid.js: * css3/blending/script-tests/blend-mode-property-parsing.js: Canonical link: https://commits.webkit.org/153013@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@171295 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-07-21 08:26:37 +00:00
<head>
<!-- This test will check if the isolation flag is on after removing mix-blend-mode from an element if the isolating element has other blending descendants. -->
<link rel="stylesheet" href="resources/blending-style.css">
<style>
div {
/* This forces render layers, avoiding normal flow only issues */
position: relative;
}
</style>
</head>
<body>
<div class="isolating lime box" style="top: 50px;">
<div class="isolating yellow box" style="left: 50px;">
<div class="box">
<div class="fuchsia box difference" style="left:-25px; top: -50px;"></div>
</div>
<div class="box">
<div id="target" class="fuchsia box difference" style="left:-25px; top: -50px;"></div>
[CSS Blending] Isolation descendant dependent flags are not updated correctly https://bugs.webkit.org/show_bug.cgi?id=130892 Patch by Ion Rosca <rosca@adobe.com> on 2014-04-17 Reviewed by Dean Jackson. Source/WebCore: The isolation descendant dependent flag (m_hasUnisolatedBlendingDescendants) will help us to determine if a layer should isolate blending descendants or not. The m_hasUnisolatedBlendingDescendants flag should be set for layers that have blending descendant layers not isolated by descendant stacking contexts. An element isolatesBlending() if it has this flag set and creates stacking context. Tests: css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation.html css3/compositing/blend-mode-isolation-flags-turn-off-blending.html css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context.html css3/compositing/blend-mode-isolation-flags-turn-on-blending.html css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context.html * rendering/RenderLayer.cpp: (WebCore::RenderLayer::RenderLayer): (WebCore::RenderLayer::updateBlendMode): (WebCore::RenderLayer::updateAncestorChainHasBlendingDescendants): When a layer has blending and it hasn't had it before, we set the isolation flag for all its ancestors up to the first layer creating stacking context. I removed the isComposited() check here. Isolation flags should be correct regardless of compositing state. Moreover, if this method is called from styleChanged(), the compositing state might not be accurate, it's going to be recalculated afterwards. (WebCore::RenderLayer::dirtyAncestorChainHasBlendingDescendants): When a layer doesn't have blending, but it used to have it before, we mark the isolation flag as dirty for all its ancestors up to the first layer creating stacking context. The isolation flags will be recalculated by RenderLayer::updateDescendantDependentFlags. (WebCore::RenderLayer::updateDescendantDependentFlags): Evaluates if the layer has unisolated blending descendants by traversing the layer subtree. (WebCore::RenderLayer::addChild): When adding a subtree that has blending or has some unisolated descendants, we set the flag for all the ancestors, up to the stacking context layer. (WebCore::RenderLayer::removeChild): When removing a subtree that had blending or had some unisolated descendants, we dirty the flag so that it could be reevaluated. (WebCore::RenderLayer::calculateClipRects): (WebCore::RenderLayer::updateTransform): * rendering/RenderLayer.h: Rename m_hasBlendedElementInChildStackingContext => m_hasUnisolatedBlendingDescendants and m_hasBlendedElementInChildStackingContextStatusDirty => m_hasUnisolatedBlendingDescendantsStatusDirty, * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements): Add an assert to make sure that if m_hasUnisolatedCompositedBlendingDescendants is true, then m_hasUnisolatedBlendingDescendants is true as well. LayoutTests: * css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-on-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context.html: Added. * platform/mac/css3/compositing/blend-mode-background-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-1-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-2-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-3-expected.txt: * platform/mac/css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-on-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-layers-expected.txt: * platform/mac/css3/compositing/blend-mode-reflection-expected.txt: * platform/mac/css3/compositing/blend-mode-simple-composited-expected.txt: * platform/mac/css3/compositing/blend-mode-simple-expected.txt: Canonical link: https://commits.webkit.org/149854@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@167424 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-04-17 08:42:53 +00:00
</div>
</div>
[CSS Blending] Cleanup tests in css3/blending https://bugs.webkit.org/show_bug.cgi?id=132600 Reviewed by Mihnea Ovidenie. Summary of changes: - move common stylesheet classes to blending-style.css. - remove trailing white spaces. - replace tabs with spaces. - remove the 'html' tags for consistency with the most of blending tests. This patch does not change the txt and png test expectations. * css3/blending/background-blend-mode-background-attachement-fixed-expected.html: * css3/blending/background-blend-mode-background-attachement-fixed.html: * css3/blending/background-blend-mode-background-clip-content-box-expected.html: * css3/blending/background-blend-mode-background-clip-content-box.html: * css3/blending/background-blend-mode-background-clip-padding-box-expected.html: * css3/blending/background-blend-mode-background-clip-padding-box.html: * css3/blending/background-blend-mode-background-origin-border-box-expected.html: * css3/blending/background-blend-mode-background-origin-border-box.html: * css3/blending/background-blend-mode-background-position-percentage-expected.html: * css3/blending/background-blend-mode-background-position-percentage.html: * css3/blending/background-blend-mode-background-repeat-no-repeat-expected.html: * css3/blending/background-blend-mode-background-repeat-no-repeat.html: * css3/blending/background-blend-mode-background-size-contain-expected.html: * css3/blending/background-blend-mode-background-size-contain.html: * css3/blending/background-blend-mode-background-size-cover-expected.html: * css3/blending/background-blend-mode-background-size-cover.html: * css3/blending/background-blend-mode-body-image-expected.html: * css3/blending/background-blend-mode-body-image.html: * css3/blending/background-blend-mode-body-transparent-color-and-image-expected.html: * css3/blending/background-blend-mode-body-transparent-color-and-image.html: * css3/blending/background-blend-mode-body-transparent-image-expected.html: * css3/blending/background-blend-mode-body-transparent-image.html: * css3/blending/background-blend-mode-crossfade-image-expected.html: * css3/blending/background-blend-mode-crossfade-image.html: * css3/blending/background-blend-mode-data-uri-svg-image-expected.html: * css3/blending/background-blend-mode-data-uri-svg-image.html: * css3/blending/background-blend-mode-default-value.html: * css3/blending/background-blend-mode-different-image-formats.html: * css3/blending/background-blend-mode-gif-color-2.html: * css3/blending/background-blend-mode-gif-color.html: * css3/blending/background-blend-mode-gradient-color.html: * css3/blending/background-blend-mode-gradient-gradient.html: * css3/blending/background-blend-mode-gradient-image.html: * css3/blending/background-blend-mode-image-color-dynamic-expected.html: * css3/blending/background-blend-mode-image-color-dynamic.html: * css3/blending/background-blend-mode-image-color.html: * css3/blending/background-blend-mode-image-image.html: * css3/blending/background-blend-mode-image-svg.html: * css3/blending/background-blend-mode-multiple-background-layers.html: * css3/blending/background-blend-mode-separate-layer-declaration-expected.html: * css3/blending/background-blend-mode-separate-layer-declaration.html: * css3/blending/background-blend-mode-single-layer-no-blending.html: * css3/blending/background-blend-mode-svg-color.html: * css3/blending/background-blend-mode-svg-expected.html: * css3/blending/background-blend-mode-svg.html: * css3/blending/background-blend-mode-tiled-layers.html: * css3/blending/blend-mode-accelerated-parent-overflow-hidden-expected.html: * css3/blending/blend-mode-accelerated-parent-overflow-hidden.html: * css3/blending/blend-mode-accelerated-with-multiple-stacking-contexts.html: * css3/blending/blend-mode-ancestor-clipping-layer.html: * css3/blending/blend-mode-background.html: * css3/blending/blend-mode-blended-element-overlapping-composited-sibling-should-have-compositing-layer.html: * css3/blending/blend-mode-body-child-background-color-expected.html: * css3/blending/blend-mode-body-child-background-color.html: * css3/blending/blend-mode-body-child-isolate-background-color-expected.html: * css3/blending/blend-mode-body-child-isolate-background-color.html: * css3/blending/blend-mode-body-child-isolate-html-background-color-expected.html: * css3/blending/blend-mode-body-child-isolate-html-background-color.html: * css3/blending/blend-mode-body-child.html: * css3/blending/blend-mode-body-element-expected.html: * css3/blending/blend-mode-body-element.html: * css3/blending/blend-mode-clip-accelerated-blending-canvas.html: * css3/blending/blend-mode-clip-accelerated-blending-child-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-child.html: * css3/blending/blend-mode-clip-accelerated-blending-double-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-double.html: * css3/blending/blend-mode-clip-accelerated-blending-with-siblings-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-with-siblings.html: * css3/blending/blend-mode-clip-accelerated-transformed-blending-expected.html: * css3/blending/blend-mode-clip-accelerated-transformed-blending.html: * css3/blending/blend-mode-clip-rect-accelerated-blending-expected.html: * css3/blending/blend-mode-clip-rect-accelerated-blending.html: * css3/blending/blend-mode-html-element-screen.html: * css3/blending/blend-mode-isolated-group-1.html: * css3/blending/blend-mode-isolated-group-2.html: * css3/blending/blend-mode-isolated-group-3.html: * css3/blending/blend-mode-isolation-accelerated-overflow-hidden.html: * css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-append-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation.html: * css3/blending/blend-mode-isolation-flags-turn-off-blending.html: * css3/blending/blend-mode-isolation-flags-turn-off-stacking-context.html: * css3/blending/blend-mode-isolation-flags-turn-on-blending.html: * css3/blending/blend-mode-isolation-flags-turn-on-stacking-context.html: * css3/blending/blend-mode-isolation-overflow-hidden-expected.html: * css3/blending/blend-mode-isolation-overflow-hidden.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer1.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer2.html: * css3/blending/blend-mode-isolation-turn-on-self-painting-layer.html: * css3/blending/blend-mode-layers.html: * css3/blending/blend-mode-overflow.html: * css3/blending/blend-mode-parent-of-composited-blended-has-layer.html: * css3/blending/blend-mode-reflection.html: * css3/blending/blend-mode-simple-composited.html: * css3/blending/blend-mode-transform-style.html: * css3/blending/blend-mode-with-accelerated-sibling.html: * css3/blending/blend-mode-with-body-expected.html: * css3/blending/blend-mode-with-body.html: * css3/blending/blend-mode-with-composited-descendant-should-have-layer.html: * css3/blending/effect-background-blend-mode-stacking.html: * css3/blending/isolation-isolate-blended-child-expected.html: * css3/blending/isolation-isolate-blended-child.html: * css3/blending/repaint/blend-mode-isolate-stacking-context.html: * css3/blending/repaint/blend-mode-turn-off-isolation-no-effect.html: * css3/blending/repaint/blend-mode-turn-off-isolation.html: * css3/blending/resources/blending-style.css: Added. This file contains classes shared by multiple blending tests. * css3/blending/resources/dump-layer-tree.js: Added. * css3/blending/script-tests/background-blend-mode-property-parsing.js: * css3/blending/script-tests/blend-mode-property-parsing-invalid.js: * css3/blending/script-tests/blend-mode-property-parsing.js: Canonical link: https://commits.webkit.org/153013@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@171295 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-07-21 08:26:37 +00:00
</div>
<script type="text/javascript">
if (window.testRunner)
window.testRunner.waitUntilDone();
[CSS Blending] Isolation descendant dependent flags are not updated correctly https://bugs.webkit.org/show_bug.cgi?id=130892 Patch by Ion Rosca <rosca@adobe.com> on 2014-04-17 Reviewed by Dean Jackson. Source/WebCore: The isolation descendant dependent flag (m_hasUnisolatedBlendingDescendants) will help us to determine if a layer should isolate blending descendants or not. The m_hasUnisolatedBlendingDescendants flag should be set for layers that have blending descendant layers not isolated by descendant stacking contexts. An element isolatesBlending() if it has this flag set and creates stacking context. Tests: css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation.html css3/compositing/blend-mode-isolation-flags-turn-off-blending.html css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context.html css3/compositing/blend-mode-isolation-flags-turn-on-blending.html css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context.html * rendering/RenderLayer.cpp: (WebCore::RenderLayer::RenderLayer): (WebCore::RenderLayer::updateBlendMode): (WebCore::RenderLayer::updateAncestorChainHasBlendingDescendants): When a layer has blending and it hasn't had it before, we set the isolation flag for all its ancestors up to the first layer creating stacking context. I removed the isComposited() check here. Isolation flags should be correct regardless of compositing state. Moreover, if this method is called from styleChanged(), the compositing state might not be accurate, it's going to be recalculated afterwards. (WebCore::RenderLayer::dirtyAncestorChainHasBlendingDescendants): When a layer doesn't have blending, but it used to have it before, we mark the isolation flag as dirty for all its ancestors up to the first layer creating stacking context. The isolation flags will be recalculated by RenderLayer::updateDescendantDependentFlags. (WebCore::RenderLayer::updateDescendantDependentFlags): Evaluates if the layer has unisolated blending descendants by traversing the layer subtree. (WebCore::RenderLayer::addChild): When adding a subtree that has blending or has some unisolated descendants, we set the flag for all the ancestors, up to the stacking context layer. (WebCore::RenderLayer::removeChild): When removing a subtree that had blending or had some unisolated descendants, we dirty the flag so that it could be reevaluated. (WebCore::RenderLayer::calculateClipRects): (WebCore::RenderLayer::updateTransform): * rendering/RenderLayer.h: Rename m_hasBlendedElementInChildStackingContext => m_hasUnisolatedBlendingDescendants and m_hasBlendedElementInChildStackingContextStatusDirty => m_hasUnisolatedBlendingDescendantsStatusDirty, * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements): Add an assert to make sure that if m_hasUnisolatedCompositedBlendingDescendants is true, then m_hasUnisolatedBlendingDescendants is true as well. LayoutTests: * css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-on-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context.html: Added. * platform/mac/css3/compositing/blend-mode-background-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-1-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-2-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-3-expected.txt: * platform/mac/css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-on-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-layers-expected.txt: * platform/mac/css3/compositing/blend-mode-reflection-expected.txt: * platform/mac/css3/compositing/blend-mode-simple-composited-expected.txt: * platform/mac/css3/compositing/blend-mode-simple-expected.txt: Canonical link: https://commits.webkit.org/149854@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@167424 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-04-17 08:42:53 +00:00
[CSS Blending] Cleanup tests in css3/blending https://bugs.webkit.org/show_bug.cgi?id=132600 Reviewed by Mihnea Ovidenie. Summary of changes: - move common stylesheet classes to blending-style.css. - remove trailing white spaces. - replace tabs with spaces. - remove the 'html' tags for consistency with the most of blending tests. This patch does not change the txt and png test expectations. * css3/blending/background-blend-mode-background-attachement-fixed-expected.html: * css3/blending/background-blend-mode-background-attachement-fixed.html: * css3/blending/background-blend-mode-background-clip-content-box-expected.html: * css3/blending/background-blend-mode-background-clip-content-box.html: * css3/blending/background-blend-mode-background-clip-padding-box-expected.html: * css3/blending/background-blend-mode-background-clip-padding-box.html: * css3/blending/background-blend-mode-background-origin-border-box-expected.html: * css3/blending/background-blend-mode-background-origin-border-box.html: * css3/blending/background-blend-mode-background-position-percentage-expected.html: * css3/blending/background-blend-mode-background-position-percentage.html: * css3/blending/background-blend-mode-background-repeat-no-repeat-expected.html: * css3/blending/background-blend-mode-background-repeat-no-repeat.html: * css3/blending/background-blend-mode-background-size-contain-expected.html: * css3/blending/background-blend-mode-background-size-contain.html: * css3/blending/background-blend-mode-background-size-cover-expected.html: * css3/blending/background-blend-mode-background-size-cover.html: * css3/blending/background-blend-mode-body-image-expected.html: * css3/blending/background-blend-mode-body-image.html: * css3/blending/background-blend-mode-body-transparent-color-and-image-expected.html: * css3/blending/background-blend-mode-body-transparent-color-and-image.html: * css3/blending/background-blend-mode-body-transparent-image-expected.html: * css3/blending/background-blend-mode-body-transparent-image.html: * css3/blending/background-blend-mode-crossfade-image-expected.html: * css3/blending/background-blend-mode-crossfade-image.html: * css3/blending/background-blend-mode-data-uri-svg-image-expected.html: * css3/blending/background-blend-mode-data-uri-svg-image.html: * css3/blending/background-blend-mode-default-value.html: * css3/blending/background-blend-mode-different-image-formats.html: * css3/blending/background-blend-mode-gif-color-2.html: * css3/blending/background-blend-mode-gif-color.html: * css3/blending/background-blend-mode-gradient-color.html: * css3/blending/background-blend-mode-gradient-gradient.html: * css3/blending/background-blend-mode-gradient-image.html: * css3/blending/background-blend-mode-image-color-dynamic-expected.html: * css3/blending/background-blend-mode-image-color-dynamic.html: * css3/blending/background-blend-mode-image-color.html: * css3/blending/background-blend-mode-image-image.html: * css3/blending/background-blend-mode-image-svg.html: * css3/blending/background-blend-mode-multiple-background-layers.html: * css3/blending/background-blend-mode-separate-layer-declaration-expected.html: * css3/blending/background-blend-mode-separate-layer-declaration.html: * css3/blending/background-blend-mode-single-layer-no-blending.html: * css3/blending/background-blend-mode-svg-color.html: * css3/blending/background-blend-mode-svg-expected.html: * css3/blending/background-blend-mode-svg.html: * css3/blending/background-blend-mode-tiled-layers.html: * css3/blending/blend-mode-accelerated-parent-overflow-hidden-expected.html: * css3/blending/blend-mode-accelerated-parent-overflow-hidden.html: * css3/blending/blend-mode-accelerated-with-multiple-stacking-contexts.html: * css3/blending/blend-mode-ancestor-clipping-layer.html: * css3/blending/blend-mode-background.html: * css3/blending/blend-mode-blended-element-overlapping-composited-sibling-should-have-compositing-layer.html: * css3/blending/blend-mode-body-child-background-color-expected.html: * css3/blending/blend-mode-body-child-background-color.html: * css3/blending/blend-mode-body-child-isolate-background-color-expected.html: * css3/blending/blend-mode-body-child-isolate-background-color.html: * css3/blending/blend-mode-body-child-isolate-html-background-color-expected.html: * css3/blending/blend-mode-body-child-isolate-html-background-color.html: * css3/blending/blend-mode-body-child.html: * css3/blending/blend-mode-body-element-expected.html: * css3/blending/blend-mode-body-element.html: * css3/blending/blend-mode-clip-accelerated-blending-canvas.html: * css3/blending/blend-mode-clip-accelerated-blending-child-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-child.html: * css3/blending/blend-mode-clip-accelerated-blending-double-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-double.html: * css3/blending/blend-mode-clip-accelerated-blending-with-siblings-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-with-siblings.html: * css3/blending/blend-mode-clip-accelerated-transformed-blending-expected.html: * css3/blending/blend-mode-clip-accelerated-transformed-blending.html: * css3/blending/blend-mode-clip-rect-accelerated-blending-expected.html: * css3/blending/blend-mode-clip-rect-accelerated-blending.html: * css3/blending/blend-mode-html-element-screen.html: * css3/blending/blend-mode-isolated-group-1.html: * css3/blending/blend-mode-isolated-group-2.html: * css3/blending/blend-mode-isolated-group-3.html: * css3/blending/blend-mode-isolation-accelerated-overflow-hidden.html: * css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-append-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation.html: * css3/blending/blend-mode-isolation-flags-turn-off-blending.html: * css3/blending/blend-mode-isolation-flags-turn-off-stacking-context.html: * css3/blending/blend-mode-isolation-flags-turn-on-blending.html: * css3/blending/blend-mode-isolation-flags-turn-on-stacking-context.html: * css3/blending/blend-mode-isolation-overflow-hidden-expected.html: * css3/blending/blend-mode-isolation-overflow-hidden.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer1.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer2.html: * css3/blending/blend-mode-isolation-turn-on-self-painting-layer.html: * css3/blending/blend-mode-layers.html: * css3/blending/blend-mode-overflow.html: * css3/blending/blend-mode-parent-of-composited-blended-has-layer.html: * css3/blending/blend-mode-reflection.html: * css3/blending/blend-mode-simple-composited.html: * css3/blending/blend-mode-transform-style.html: * css3/blending/blend-mode-with-accelerated-sibling.html: * css3/blending/blend-mode-with-body-expected.html: * css3/blending/blend-mode-with-body.html: * css3/blending/blend-mode-with-composited-descendant-should-have-layer.html: * css3/blending/effect-background-blend-mode-stacking.html: * css3/blending/isolation-isolate-blended-child-expected.html: * css3/blending/isolation-isolate-blended-child.html: * css3/blending/repaint/blend-mode-isolate-stacking-context.html: * css3/blending/repaint/blend-mode-turn-off-isolation-no-effect.html: * css3/blending/repaint/blend-mode-turn-off-isolation.html: * css3/blending/resources/blending-style.css: Added. This file contains classes shared by multiple blending tests. * css3/blending/resources/dump-layer-tree.js: Added. * css3/blending/script-tests/background-blend-mode-property-parsing.js: * css3/blending/script-tests/blend-mode-property-parsing-invalid.js: * css3/blending/script-tests/blend-mode-property-parsing.js: Canonical link: https://commits.webkit.org/153013@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@171295 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-07-21 08:26:37 +00:00
function change() {
var target = document.getElementById("target");
target.className = "fuchsia box";
[CSS Blending] Isolation descendant dependent flags are not updated correctly https://bugs.webkit.org/show_bug.cgi?id=130892 Patch by Ion Rosca <rosca@adobe.com> on 2014-04-17 Reviewed by Dean Jackson. Source/WebCore: The isolation descendant dependent flag (m_hasUnisolatedBlendingDescendants) will help us to determine if a layer should isolate blending descendants or not. The m_hasUnisolatedBlendingDescendants flag should be set for layers that have blending descendant layers not isolated by descendant stacking contexts. An element isolatesBlending() if it has this flag set and creates stacking context. Tests: css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation.html css3/compositing/blend-mode-isolation-flags-turn-off-blending.html css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context.html css3/compositing/blend-mode-isolation-flags-turn-on-blending.html css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context.html * rendering/RenderLayer.cpp: (WebCore::RenderLayer::RenderLayer): (WebCore::RenderLayer::updateBlendMode): (WebCore::RenderLayer::updateAncestorChainHasBlendingDescendants): When a layer has blending and it hasn't had it before, we set the isolation flag for all its ancestors up to the first layer creating stacking context. I removed the isComposited() check here. Isolation flags should be correct regardless of compositing state. Moreover, if this method is called from styleChanged(), the compositing state might not be accurate, it's going to be recalculated afterwards. (WebCore::RenderLayer::dirtyAncestorChainHasBlendingDescendants): When a layer doesn't have blending, but it used to have it before, we mark the isolation flag as dirty for all its ancestors up to the first layer creating stacking context. The isolation flags will be recalculated by RenderLayer::updateDescendantDependentFlags. (WebCore::RenderLayer::updateDescendantDependentFlags): Evaluates if the layer has unisolated blending descendants by traversing the layer subtree. (WebCore::RenderLayer::addChild): When adding a subtree that has blending or has some unisolated descendants, we set the flag for all the ancestors, up to the stacking context layer. (WebCore::RenderLayer::removeChild): When removing a subtree that had blending or had some unisolated descendants, we dirty the flag so that it could be reevaluated. (WebCore::RenderLayer::calculateClipRects): (WebCore::RenderLayer::updateTransform): * rendering/RenderLayer.h: Rename m_hasBlendedElementInChildStackingContext => m_hasUnisolatedBlendingDescendants and m_hasBlendedElementInChildStackingContextStatusDirty => m_hasUnisolatedBlendingDescendantsStatusDirty, * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements): Add an assert to make sure that if m_hasUnisolatedCompositedBlendingDescendants is true, then m_hasUnisolatedBlendingDescendants is true as well. LayoutTests: * css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-on-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context.html: Added. * platform/mac/css3/compositing/blend-mode-background-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-1-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-2-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-3-expected.txt: * platform/mac/css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-on-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-layers-expected.txt: * platform/mac/css3/compositing/blend-mode-reflection-expected.txt: * platform/mac/css3/compositing/blend-mode-simple-composited-expected.txt: * platform/mac/css3/compositing/blend-mode-simple-expected.txt: Canonical link: https://commits.webkit.org/149854@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@167424 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-04-17 08:42:53 +00:00
[CSS Blending] Cleanup tests in css3/blending https://bugs.webkit.org/show_bug.cgi?id=132600 Reviewed by Mihnea Ovidenie. Summary of changes: - move common stylesheet classes to blending-style.css. - remove trailing white spaces. - replace tabs with spaces. - remove the 'html' tags for consistency with the most of blending tests. This patch does not change the txt and png test expectations. * css3/blending/background-blend-mode-background-attachement-fixed-expected.html: * css3/blending/background-blend-mode-background-attachement-fixed.html: * css3/blending/background-blend-mode-background-clip-content-box-expected.html: * css3/blending/background-blend-mode-background-clip-content-box.html: * css3/blending/background-blend-mode-background-clip-padding-box-expected.html: * css3/blending/background-blend-mode-background-clip-padding-box.html: * css3/blending/background-blend-mode-background-origin-border-box-expected.html: * css3/blending/background-blend-mode-background-origin-border-box.html: * css3/blending/background-blend-mode-background-position-percentage-expected.html: * css3/blending/background-blend-mode-background-position-percentage.html: * css3/blending/background-blend-mode-background-repeat-no-repeat-expected.html: * css3/blending/background-blend-mode-background-repeat-no-repeat.html: * css3/blending/background-blend-mode-background-size-contain-expected.html: * css3/blending/background-blend-mode-background-size-contain.html: * css3/blending/background-blend-mode-background-size-cover-expected.html: * css3/blending/background-blend-mode-background-size-cover.html: * css3/blending/background-blend-mode-body-image-expected.html: * css3/blending/background-blend-mode-body-image.html: * css3/blending/background-blend-mode-body-transparent-color-and-image-expected.html: * css3/blending/background-blend-mode-body-transparent-color-and-image.html: * css3/blending/background-blend-mode-body-transparent-image-expected.html: * css3/blending/background-blend-mode-body-transparent-image.html: * css3/blending/background-blend-mode-crossfade-image-expected.html: * css3/blending/background-blend-mode-crossfade-image.html: * css3/blending/background-blend-mode-data-uri-svg-image-expected.html: * css3/blending/background-blend-mode-data-uri-svg-image.html: * css3/blending/background-blend-mode-default-value.html: * css3/blending/background-blend-mode-different-image-formats.html: * css3/blending/background-blend-mode-gif-color-2.html: * css3/blending/background-blend-mode-gif-color.html: * css3/blending/background-blend-mode-gradient-color.html: * css3/blending/background-blend-mode-gradient-gradient.html: * css3/blending/background-blend-mode-gradient-image.html: * css3/blending/background-blend-mode-image-color-dynamic-expected.html: * css3/blending/background-blend-mode-image-color-dynamic.html: * css3/blending/background-blend-mode-image-color.html: * css3/blending/background-blend-mode-image-image.html: * css3/blending/background-blend-mode-image-svg.html: * css3/blending/background-blend-mode-multiple-background-layers.html: * css3/blending/background-blend-mode-separate-layer-declaration-expected.html: * css3/blending/background-blend-mode-separate-layer-declaration.html: * css3/blending/background-blend-mode-single-layer-no-blending.html: * css3/blending/background-blend-mode-svg-color.html: * css3/blending/background-blend-mode-svg-expected.html: * css3/blending/background-blend-mode-svg.html: * css3/blending/background-blend-mode-tiled-layers.html: * css3/blending/blend-mode-accelerated-parent-overflow-hidden-expected.html: * css3/blending/blend-mode-accelerated-parent-overflow-hidden.html: * css3/blending/blend-mode-accelerated-with-multiple-stacking-contexts.html: * css3/blending/blend-mode-ancestor-clipping-layer.html: * css3/blending/blend-mode-background.html: * css3/blending/blend-mode-blended-element-overlapping-composited-sibling-should-have-compositing-layer.html: * css3/blending/blend-mode-body-child-background-color-expected.html: * css3/blending/blend-mode-body-child-background-color.html: * css3/blending/blend-mode-body-child-isolate-background-color-expected.html: * css3/blending/blend-mode-body-child-isolate-background-color.html: * css3/blending/blend-mode-body-child-isolate-html-background-color-expected.html: * css3/blending/blend-mode-body-child-isolate-html-background-color.html: * css3/blending/blend-mode-body-child.html: * css3/blending/blend-mode-body-element-expected.html: * css3/blending/blend-mode-body-element.html: * css3/blending/blend-mode-clip-accelerated-blending-canvas.html: * css3/blending/blend-mode-clip-accelerated-blending-child-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-child.html: * css3/blending/blend-mode-clip-accelerated-blending-double-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-double.html: * css3/blending/blend-mode-clip-accelerated-blending-with-siblings-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-with-siblings.html: * css3/blending/blend-mode-clip-accelerated-transformed-blending-expected.html: * css3/blending/blend-mode-clip-accelerated-transformed-blending.html: * css3/blending/blend-mode-clip-rect-accelerated-blending-expected.html: * css3/blending/blend-mode-clip-rect-accelerated-blending.html: * css3/blending/blend-mode-html-element-screen.html: * css3/blending/blend-mode-isolated-group-1.html: * css3/blending/blend-mode-isolated-group-2.html: * css3/blending/blend-mode-isolated-group-3.html: * css3/blending/blend-mode-isolation-accelerated-overflow-hidden.html: * css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-append-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation.html: * css3/blending/blend-mode-isolation-flags-turn-off-blending.html: * css3/blending/blend-mode-isolation-flags-turn-off-stacking-context.html: * css3/blending/blend-mode-isolation-flags-turn-on-blending.html: * css3/blending/blend-mode-isolation-flags-turn-on-stacking-context.html: * css3/blending/blend-mode-isolation-overflow-hidden-expected.html: * css3/blending/blend-mode-isolation-overflow-hidden.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer1.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer2.html: * css3/blending/blend-mode-isolation-turn-on-self-painting-layer.html: * css3/blending/blend-mode-layers.html: * css3/blending/blend-mode-overflow.html: * css3/blending/blend-mode-parent-of-composited-blended-has-layer.html: * css3/blending/blend-mode-reflection.html: * css3/blending/blend-mode-simple-composited.html: * css3/blending/blend-mode-transform-style.html: * css3/blending/blend-mode-with-accelerated-sibling.html: * css3/blending/blend-mode-with-body-expected.html: * css3/blending/blend-mode-with-body.html: * css3/blending/blend-mode-with-composited-descendant-should-have-layer.html: * css3/blending/effect-background-blend-mode-stacking.html: * css3/blending/isolation-isolate-blended-child-expected.html: * css3/blending/isolation-isolate-blended-child.html: * css3/blending/repaint/blend-mode-isolate-stacking-context.html: * css3/blending/repaint/blend-mode-turn-off-isolation-no-effect.html: * css3/blending/repaint/blend-mode-turn-off-isolation.html: * css3/blending/resources/blending-style.css: Added. This file contains classes shared by multiple blending tests. * css3/blending/resources/dump-layer-tree.js: Added. * css3/blending/script-tests/background-blend-mode-property-parsing.js: * css3/blending/script-tests/blend-mode-property-parsing-invalid.js: * css3/blending/script-tests/blend-mode-property-parsing.js: Canonical link: https://commits.webkit.org/153013@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@171295 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-07-21 08:26:37 +00:00
if (window.testRunner)
window.testRunner.notifyDone();
}
[CSS Blending] Isolation descendant dependent flags are not updated correctly https://bugs.webkit.org/show_bug.cgi?id=130892 Patch by Ion Rosca <rosca@adobe.com> on 2014-04-17 Reviewed by Dean Jackson. Source/WebCore: The isolation descendant dependent flag (m_hasUnisolatedBlendingDescendants) will help us to determine if a layer should isolate blending descendants or not. The m_hasUnisolatedBlendingDescendants flag should be set for layers that have blending descendant layers not isolated by descendant stacking contexts. An element isolatesBlending() if it has this flag set and creates stacking context. Tests: css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending.html css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation.html css3/compositing/blend-mode-isolation-flags-turn-off-blending.html css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context.html css3/compositing/blend-mode-isolation-flags-turn-on-blending.html css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context.html * rendering/RenderLayer.cpp: (WebCore::RenderLayer::RenderLayer): (WebCore::RenderLayer::updateBlendMode): (WebCore::RenderLayer::updateAncestorChainHasBlendingDescendants): When a layer has blending and it hasn't had it before, we set the isolation flag for all its ancestors up to the first layer creating stacking context. I removed the isComposited() check here. Isolation flags should be correct regardless of compositing state. Moreover, if this method is called from styleChanged(), the compositing state might not be accurate, it's going to be recalculated afterwards. (WebCore::RenderLayer::dirtyAncestorChainHasBlendingDescendants): When a layer doesn't have blending, but it used to have it before, we mark the isolation flag as dirty for all its ancestors up to the first layer creating stacking context. The isolation flags will be recalculated by RenderLayer::updateDescendantDependentFlags. (WebCore::RenderLayer::updateDescendantDependentFlags): Evaluates if the layer has unisolated blending descendants by traversing the layer subtree. (WebCore::RenderLayer::addChild): When adding a subtree that has blending or has some unisolated descendants, we set the flag for all the ancestors, up to the stacking context layer. (WebCore::RenderLayer::removeChild): When removing a subtree that had blending or had some unisolated descendants, we dirty the flag so that it could be reevaluated. (WebCore::RenderLayer::calculateClipRects): (WebCore::RenderLayer::updateTransform): * rendering/RenderLayer.h: Rename m_hasBlendedElementInChildStackingContext => m_hasUnisolatedBlendingDescendants and m_hasBlendedElementInChildStackingContextStatusDirty => m_hasUnisolatedBlendingDescendantsStatusDirty, * rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::computeCompositingRequirements): Add an assert to make sure that if m_hasUnisolatedCompositedBlendingDescendants is true, then m_hasUnisolatedBlendingDescendants is true as well. LayoutTests: * css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-on-blending.html: Added. * css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context.html: Added. * platform/mac/css3/compositing/blend-mode-background-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-1-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-2-expected.txt: * platform/mac/css3/compositing/blend-mode-isolated-group-3-expected.txt: * platform/mac/css3/compositing/blend-mode-isolation-flags-append-non-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-append-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-remove-non-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-remove-stacking-context-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-blending-no-isolation-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-off-stacking-context-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-on-blending-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-isolation-flags-turn-on-stacking-context-expected.txt: Added. * platform/mac/css3/compositing/blend-mode-layers-expected.txt: * platform/mac/css3/compositing/blend-mode-reflection-expected.txt: * platform/mac/css3/compositing/blend-mode-simple-composited-expected.txt: * platform/mac/css3/compositing/blend-mode-simple-expected.txt: Canonical link: https://commits.webkit.org/149854@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@167424 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-04-17 08:42:53 +00:00
[CSS Blending] Cleanup tests in css3/blending https://bugs.webkit.org/show_bug.cgi?id=132600 Reviewed by Mihnea Ovidenie. Summary of changes: - move common stylesheet classes to blending-style.css. - remove trailing white spaces. - replace tabs with spaces. - remove the 'html' tags for consistency with the most of blending tests. This patch does not change the txt and png test expectations. * css3/blending/background-blend-mode-background-attachement-fixed-expected.html: * css3/blending/background-blend-mode-background-attachement-fixed.html: * css3/blending/background-blend-mode-background-clip-content-box-expected.html: * css3/blending/background-blend-mode-background-clip-content-box.html: * css3/blending/background-blend-mode-background-clip-padding-box-expected.html: * css3/blending/background-blend-mode-background-clip-padding-box.html: * css3/blending/background-blend-mode-background-origin-border-box-expected.html: * css3/blending/background-blend-mode-background-origin-border-box.html: * css3/blending/background-blend-mode-background-position-percentage-expected.html: * css3/blending/background-blend-mode-background-position-percentage.html: * css3/blending/background-blend-mode-background-repeat-no-repeat-expected.html: * css3/blending/background-blend-mode-background-repeat-no-repeat.html: * css3/blending/background-blend-mode-background-size-contain-expected.html: * css3/blending/background-blend-mode-background-size-contain.html: * css3/blending/background-blend-mode-background-size-cover-expected.html: * css3/blending/background-blend-mode-background-size-cover.html: * css3/blending/background-blend-mode-body-image-expected.html: * css3/blending/background-blend-mode-body-image.html: * css3/blending/background-blend-mode-body-transparent-color-and-image-expected.html: * css3/blending/background-blend-mode-body-transparent-color-and-image.html: * css3/blending/background-blend-mode-body-transparent-image-expected.html: * css3/blending/background-blend-mode-body-transparent-image.html: * css3/blending/background-blend-mode-crossfade-image-expected.html: * css3/blending/background-blend-mode-crossfade-image.html: * css3/blending/background-blend-mode-data-uri-svg-image-expected.html: * css3/blending/background-blend-mode-data-uri-svg-image.html: * css3/blending/background-blend-mode-default-value.html: * css3/blending/background-blend-mode-different-image-formats.html: * css3/blending/background-blend-mode-gif-color-2.html: * css3/blending/background-blend-mode-gif-color.html: * css3/blending/background-blend-mode-gradient-color.html: * css3/blending/background-blend-mode-gradient-gradient.html: * css3/blending/background-blend-mode-gradient-image.html: * css3/blending/background-blend-mode-image-color-dynamic-expected.html: * css3/blending/background-blend-mode-image-color-dynamic.html: * css3/blending/background-blend-mode-image-color.html: * css3/blending/background-blend-mode-image-image.html: * css3/blending/background-blend-mode-image-svg.html: * css3/blending/background-blend-mode-multiple-background-layers.html: * css3/blending/background-blend-mode-separate-layer-declaration-expected.html: * css3/blending/background-blend-mode-separate-layer-declaration.html: * css3/blending/background-blend-mode-single-layer-no-blending.html: * css3/blending/background-blend-mode-svg-color.html: * css3/blending/background-blend-mode-svg-expected.html: * css3/blending/background-blend-mode-svg.html: * css3/blending/background-blend-mode-tiled-layers.html: * css3/blending/blend-mode-accelerated-parent-overflow-hidden-expected.html: * css3/blending/blend-mode-accelerated-parent-overflow-hidden.html: * css3/blending/blend-mode-accelerated-with-multiple-stacking-contexts.html: * css3/blending/blend-mode-ancestor-clipping-layer.html: * css3/blending/blend-mode-background.html: * css3/blending/blend-mode-blended-element-overlapping-composited-sibling-should-have-compositing-layer.html: * css3/blending/blend-mode-body-child-background-color-expected.html: * css3/blending/blend-mode-body-child-background-color.html: * css3/blending/blend-mode-body-child-isolate-background-color-expected.html: * css3/blending/blend-mode-body-child-isolate-background-color.html: * css3/blending/blend-mode-body-child-isolate-html-background-color-expected.html: * css3/blending/blend-mode-body-child-isolate-html-background-color.html: * css3/blending/blend-mode-body-child.html: * css3/blending/blend-mode-body-element-expected.html: * css3/blending/blend-mode-body-element.html: * css3/blending/blend-mode-clip-accelerated-blending-canvas.html: * css3/blending/blend-mode-clip-accelerated-blending-child-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-child.html: * css3/blending/blend-mode-clip-accelerated-blending-double-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-double.html: * css3/blending/blend-mode-clip-accelerated-blending-with-siblings-expected.html: * css3/blending/blend-mode-clip-accelerated-blending-with-siblings.html: * css3/blending/blend-mode-clip-accelerated-transformed-blending-expected.html: * css3/blending/blend-mode-clip-accelerated-transformed-blending.html: * css3/blending/blend-mode-clip-rect-accelerated-blending-expected.html: * css3/blending/blend-mode-clip-rect-accelerated-blending.html: * css3/blending/blend-mode-html-element-screen.html: * css3/blending/blend-mode-isolated-group-1.html: * css3/blending/blend-mode-isolated-group-2.html: * css3/blending/blend-mode-isolated-group-3.html: * css3/blending/blend-mode-isolation-accelerated-overflow-hidden.html: * css3/blending/blend-mode-isolation-flags-append-non-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-append-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-remove-non-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-remove-stacking-context-blending.html: * css3/blending/blend-mode-isolation-flags-turn-off-blending-no-isolation.html: * css3/blending/blend-mode-isolation-flags-turn-off-blending.html: * css3/blending/blend-mode-isolation-flags-turn-off-stacking-context.html: * css3/blending/blend-mode-isolation-flags-turn-on-blending.html: * css3/blending/blend-mode-isolation-flags-turn-on-stacking-context.html: * css3/blending/blend-mode-isolation-overflow-hidden-expected.html: * css3/blending/blend-mode-isolation-overflow-hidden.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer1.html: * css3/blending/blend-mode-isolation-turn-off-self-painting-layer2.html: * css3/blending/blend-mode-isolation-turn-on-self-painting-layer.html: * css3/blending/blend-mode-layers.html: * css3/blending/blend-mode-overflow.html: * css3/blending/blend-mode-parent-of-composited-blended-has-layer.html: * css3/blending/blend-mode-reflection.html: * css3/blending/blend-mode-simple-composited.html: * css3/blending/blend-mode-transform-style.html: * css3/blending/blend-mode-with-accelerated-sibling.html: * css3/blending/blend-mode-with-body-expected.html: * css3/blending/blend-mode-with-body.html: * css3/blending/blend-mode-with-composited-descendant-should-have-layer.html: * css3/blending/effect-background-blend-mode-stacking.html: * css3/blending/isolation-isolate-blended-child-expected.html: * css3/blending/isolation-isolate-blended-child.html: * css3/blending/repaint/blend-mode-isolate-stacking-context.html: * css3/blending/repaint/blend-mode-turn-off-isolation-no-effect.html: * css3/blending/repaint/blend-mode-turn-off-isolation.html: * css3/blending/resources/blending-style.css: Added. This file contains classes shared by multiple blending tests. * css3/blending/resources/dump-layer-tree.js: Added. * css3/blending/script-tests/background-blend-mode-property-parsing.js: * css3/blending/script-tests/blend-mode-property-parsing-invalid.js: * css3/blending/script-tests/blend-mode-property-parsing.js: Canonical link: https://commits.webkit.org/153013@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@171295 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2014-07-21 08:26:37 +00:00
window.setTimeout("change()", 10);
</script>
</body>