| Index: Source/core/paint/DeprecatedPaintLayer.cpp
|
| diff --git a/Source/core/paint/DeprecatedPaintLayer.cpp b/Source/core/paint/DeprecatedPaintLayer.cpp
|
| index 83f026517b2d4eb8cec6a02dd67551f9d86ada16..3fcb980bef2de67c417f0d79694772ca2c38ce64 100644
|
| --- a/Source/core/paint/DeprecatedPaintLayer.cpp
|
| +++ b/Source/core/paint/DeprecatedPaintLayer.cpp
|
| @@ -223,6 +223,16 @@ bool DeprecatedPaintLayer::paintsWithFilters() const
|
| return !m_compositedDeprecatedPaintLayerMapping || compositingState() != PaintsIntoOwnBacking;
|
| }
|
|
|
| +bool DeprecatedPaintLayer::paintsWithBackdropFilters() const
|
| +{
|
| + if (!layoutObject()->hasBackdropFilter())
|
| + return false;
|
| +
|
| + // https://code.google.com/p/chromium/issues/detail?id=343759
|
| + DisableCompositingQueryAsserts disabler;
|
| + return !m_compositedDeprecatedPaintLayerMapping || compositingState() != PaintsIntoOwnBacking;
|
| +}
|
| +
|
| LayoutSize DeprecatedPaintLayer::subpixelAccumulation() const
|
| {
|
| return m_subpixelAccumulation;
|
| @@ -2428,6 +2438,7 @@ bool DeprecatedPaintLayer::hasVisibleBoxDecorations() const
|
| return hasBoxDecorationsOrBackground() || hasOverflowControls();
|
| }
|
|
|
| +// TODO(hendrikw): Do we need a function like this for background filters?
|
| void DeprecatedPaintLayer::updateFilters(const ComputedStyle* oldStyle, const ComputedStyle& newStyle)
|
| {
|
| if (!newStyle.hasFilter() && (!oldStyle || !oldStyle->hasFilter()))
|
| @@ -2530,6 +2541,8 @@ void DeprecatedPaintLayer::styleChanged(StyleDifference diff, const ComputedStyl
|
| updateTransform(oldStyle, layoutObject()->styleRef());
|
| updateFilters(oldStyle, layoutObject()->styleRef());
|
|
|
| + // TODO(hendrikw) updateBackgroundFilters?
|
| +
|
| setNeedsCompositingInputsUpdate();
|
| }
|
|
|
| @@ -2541,9 +2554,10 @@ bool DeprecatedPaintLayer::scrollsOverflow() const
|
| return false;
|
| }
|
|
|
| -FilterOperations DeprecatedPaintLayer::computeFilterOperations(const ComputedStyle& style)
|
| +namespace {
|
| +
|
| +FilterOperations computeFilterOperationsHandleReferenceFilters(const FilterOperations& filters, float effectiveZoom, Node* enclosingElement)
|
| {
|
| - const FilterOperations& filters = style.filter();
|
| if (filters.hasReferenceFilter()) {
|
| for (size_t i = 0; i < filters.size(); ++i) {
|
| FilterOperation* filterOperation = filters.operations().at(i).get();
|
| @@ -2551,7 +2565,7 @@ FilterOperations DeprecatedPaintLayer::computeFilterOperations(const ComputedSty
|
| continue;
|
| ReferenceFilterOperation& referenceOperation = toReferenceFilterOperation(*filterOperation);
|
| // FIXME: Cache the ReferenceFilter if it didn't change.
|
| - RefPtrWillBeRawPtr<ReferenceFilter> referenceFilter = ReferenceFilterBuilder::build(style.effectiveZoom(), toElement(enclosingElement()), nullptr, referenceOperation);
|
| + RefPtrWillBeRawPtr<ReferenceFilter> referenceFilter = ReferenceFilterBuilder::build(effectiveZoom, toElement(enclosingElement), nullptr, referenceOperation);
|
| referenceOperation.setFilter(referenceFilter.release());
|
| }
|
| }
|
| @@ -2559,8 +2573,21 @@ FilterOperations DeprecatedPaintLayer::computeFilterOperations(const ComputedSty
|
| return filters;
|
| }
|
|
|
| +} // unnamed namespace
|
| +
|
| +FilterOperations DeprecatedPaintLayer::computeFilterOperations(const ComputedStyle& style)
|
| +{
|
| + return computeFilterOperationsHandleReferenceFilters(style.filter(), style.effectiveZoom(), enclosingElement());
|
| +}
|
| +
|
| +FilterOperations DeprecatedPaintLayer::computeBackdropFilterOperations(const ComputedStyle& style)
|
| +{
|
| + return computeFilterOperationsHandleReferenceFilters(style.backdropFilter(), style.effectiveZoom(), enclosingElement());
|
| +}
|
| +
|
| void DeprecatedPaintLayer::updateOrRemoveFilterClients()
|
| {
|
| + // TODO(hendrikw) backdrop filter?
|
| if (!hasFilter()) {
|
| removeFilterInfoIfNeeded();
|
| return;
|
| @@ -2574,6 +2601,8 @@ void DeprecatedPaintLayer::updateOrRemoveFilterClients()
|
|
|
| void DeprecatedPaintLayer::updateOrRemoveFilterEffectBuilder()
|
| {
|
| + // TODO(hendrikw) backdrop filter?
|
| +
|
| // FilterEffectBuilder is only used to render the filters in software mode,
|
| // so we always need to run updateOrRemoveFilterEffectBuilder after the composited
|
| // mode might have changed for this layer.
|
|
|