Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2014 Google Inc. All rights reserved. | 3 * Copyright (C) 2014 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 421 reasonsToComposite |= layer->potentialCompositingReasonsFromStyle() & CompositingReasonInlineTransform; | 421 reasonsToComposite |= layer->potentialCompositingReasonsFromStyle() & CompositingReasonInlineTransform; |
| 422 | 422 |
| 423 // If the original layer is composited, the reflection needs to be, too. | 423 // If the original layer is composited, the reflection needs to be, too. |
| 424 if (layer->reflectionInfo()) { | 424 if (layer->reflectionInfo()) { |
| 425 // FIXME: Shouldn't we call computeCompositingRequirements to handle a reflection overlapping with another layoutObject? | 425 // FIXME: Shouldn't we call computeCompositingRequirements to handle a reflection overlapping with another layoutObject? |
| 426 PaintLayer* reflectionLayer = layer->reflectionInfo()->reflectionLay er(); | 426 PaintLayer* reflectionLayer = layer->reflectionInfo()->reflectionLay er(); |
| 427 CompositingReasons reflectionCompositingReason = willBeCompositedOrS quashed ? CompositingReasonReflectionOfCompositedParent : CompositingReasonNone; | 427 CompositingReasons reflectionCompositingReason = willBeCompositedOrS quashed ? CompositingReasonReflectionOfCompositedParent : CompositingReasonNone; |
| 428 reflectionLayer->setCompositingReasons(reflectionCompositingReason, CompositingReasonReflectionOfCompositedParent); | 428 reflectionLayer->setCompositingReasons(reflectionCompositingReason, CompositingReasonReflectionOfCompositedParent); |
| 429 } | 429 } |
| 430 | 430 |
| 431 if (willBeCompositedOrSquashed && layer->layoutObject()->style()->hasBle ndMode()) | 431 if (willBeCompositedOrSquashed && (layer->layoutObject()->style()->hasBl endMode() || layer->layoutObject()->style()->hasBackdropFilter())) |
|
pdr.
2016/09/29 21:54:49
Since webkit has the only shipping implementation
trchen
2016/09/29 22:23:33
Sure! I'm doing now.
| |
| 432 currentRecursionData.m_hasUnisolatedCompositedBlendingDescendant = t rue; | 432 currentRecursionData.m_hasUnisolatedCompositedBlendingDescendant = t rue; |
| 433 | 433 |
| 434 // Tell the parent it has compositing descendants. | 434 // Tell the parent it has compositing descendants. |
| 435 if (willBeCompositedOrSquashed) | 435 if (willBeCompositedOrSquashed) |
| 436 currentRecursionData.m_subtreeIsCompositing = true; | 436 currentRecursionData.m_subtreeIsCompositing = true; |
| 437 | 437 |
| 438 // Turn overlap testing off for later layers if it's already off, or if we have an animating transform. | 438 // Turn overlap testing off for later layers if it's already off, or if we have an animating transform. |
| 439 // Note that if the layer clips its descendants, there's no reason to pr opagate the child animation to the parent layers. That's because | 439 // Note that if the layer clips its descendants, there's no reason to pr opagate the child animation to the parent layers. That's because |
| 440 // we know for sure the animation is contained inside the clipping recta ngle, which is already added to the overlap map. | 440 // we know for sure the animation is contained inside the clipping recta ngle, which is already added to the overlap map. |
| 441 bool isCompositedClippingLayer = canBeComposited && (reasonsToComposite & CompositingReasonClipsCompositingDescendants); | 441 bool isCompositedClippingLayer = canBeComposited && (reasonsToComposite & CompositingReasonClipsCompositingDescendants); |
| 442 bool isCompositedWithInlineTransform = reasonsToComposite & CompositingR easonInlineTransform; | 442 bool isCompositedWithInlineTransform = reasonsToComposite & CompositingR easonInlineTransform; |
| 443 if ((!childRecursionData.m_testingOverlap && !isCompositedClippingLayer) || layer->layoutObject()->style()->hasCurrentTransformAnimation() || isComposit edWithInlineTransform) | 443 if ((!childRecursionData.m_testingOverlap && !isCompositedClippingLayer) || layer->layoutObject()->style()->hasCurrentTransformAnimation() || isComposit edWithInlineTransform) |
| 444 currentRecursionData.m_testingOverlap = false; | 444 currentRecursionData.m_testingOverlap = false; |
| 445 | 445 |
| 446 if (childRecursionData.m_compositingAncestor == layer) | 446 if (childRecursionData.m_compositingAncestor == layer) |
| 447 overlapMap.finishCurrentOverlapTestingContext(); | 447 overlapMap.finishCurrentOverlapTestingContext(); |
| 448 | 448 |
| 449 descendantHas3DTransform |= anyDescendantHas3DTransform || layer->has3DT ransform(); | 449 descendantHas3DTransform |= anyDescendantHas3DTransform || layer->has3DT ransform(); |
| 450 } | 450 } |
| 451 | 451 |
| 452 // At this point we have finished collecting all reasons to composite this l ayer. | 452 // At this point we have finished collecting all reasons to composite this l ayer. |
| 453 layer->setCompositingReasons(reasonsToComposite); | 453 layer->setCompositingReasons(reasonsToComposite); |
| 454 } | 454 } |
| 455 | 455 |
| 456 } // namespace blink | 456 } // namespace blink |
| OLD | NEW |