[webkit-reviews] review denied: [Bug 72443] Implement url() filter function : [Attachment 148586] Fixed image results (minor pixel diffs due to intervening skia change)
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Jun 20 18:34:15 PDT 2012
Dean Jackson <dino at apple.com> has denied Stephen White
<senorblanco at chromium.org>'s request for review:
Bug 72443: Implement url() filter function
https://bugs.webkit.org/show_bug.cgi?id=72443
Attachment 148586: Fixed image results (minor pixel diffs due to intervening
skia change)
https://bugs.webkit.org/attachment.cgi?id=148586&action=review
------- Additional Comments from Dean Jackson <dino at apple.com>
View in context: https://bugs.webkit.org/attachment.cgi?id=148586&action=review
Looking pretty good. Just some small points and questions.
> Source/WebCore/ChangeLog:5
> + Implement filter url() function.
> + https://bugs.webkit.org/show_bug.cgi?id=72443
> +
Please add some description of the implementation here, at least at a
high-level. I can read the details for each file below, but without much
context.
> Source/WebCore/ChangeLog:80
> + * platform/mac/ScrollbarThemeMac.mm:
> + Fix mac build for the GraphicsLayer/PlatformLayer change.
I guess you mean just include PlatformLayer.h?
> Source/WebCore/Target.pri:1687
> + css/WebKitCSSSVGDocumentValue.h \
> css/WebKitCSSShaderValue.h \
Shouldn't the new PlatformLayer.h be listed in this file too?
> Source/WebCore/WebCore.gypi:2585
> + 'css/WebKitCSSSVGDocumentValue.cpp',
> + 'css/WebKitCSSSVGDocumentValue.h',
> 'css/WebKitCSSTransformValue.cpp',
ditto on PlatformLayer.h
> Source/WebCore/css/StyleResolver.cpp:1801
> + // Start loading resources referenced by this style.
> + loadPendingResources();
>
> -#if ENABLE(CSS_SHADERS)
> - // Start loading the shaders referenced by this style.
> - loadPendingShaders();
> -#endif
> -
> + // Start loading all pending resources referenced by this style.
This last comment is a duplicate.
> Source/WebCore/css/StyleResolver.cpp:5676
> + if (!m_style->hasFilter() || m_pendingSVGDocuments.isEmpty())
> + return;
This might show me up as a moron, but shouldn't this be && ? If there is no
filter AND nothing pending? I understand the no filter bit. I assume this is
because the item would never have been put into the pending list if it was
already in the process of being loaded?
> Source/WebCore/css/WebKitCSSSVGDocumentValue.cpp:14
> + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
> + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
I think you have the wrong license here.
> Source/WebCore/css/WebKitCSSSVGDocumentValue.h:15
> + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
> + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
ditto here
> Source/WebCore/css/WebKitCSSSVGDocumentValue.h:49
> + WebKitCSSSVGDocumentValue(const String& url);
Since you have inline functions above, any reason why you don't put the
constructor here as well? I have zero feelings about this - just asking. Same
with customCssText.
> Source/WebCore/platform/graphics/filters/FilterOperation.h:190
> + void* m_data;
It's annoying we can't use a CachedSVGDocument here :(
> Source/WebCore/rendering/FilterEffectRenderer.cpp:129
> + if (!document)
> + return 0;
Would this case be anything other than an error? Worth putting an ASSERT?
> Source/WebCore/rendering/FilterEffectRenderer.cpp:141
> + // FIXME: Figure out what to do with SourceAlpha. Right now, we're
> + // using the alpha of the original input layer, which is obviously
> + // wrong. We should probably be extracting the alpha from the
> + // previousEffect, but this requires some more processing.
> + // This may need a spec clarification.
Good point. I'm not sure the input element alpha is definitely wrong, but this
is the first time we've had this in a chain.
> Source/WebCore/rendering/FilterEffectRenderer.cpp:352
> + if (filterOperation->getOperationType() !=
FilterOperation::REFERENCE) {
> effect->inputEffects().append(previousEffect);
> - m_effects.append(effect);
> + m_effects.append(effect);
Why is this skipped for url()?
> Source/WebCore/rendering/RenderLayerFilterInfo.h:89
> + void updateReferenceFilter(ReferenceFilterOperation*);
I don't see this used anywhere. Am I missing it?
> LayoutTests/css3/filters/effect-reference-ordering.html:15
> +<img style="-webkit-filter: url(#blurY);" src="resources/reference.png">
> +<img style="-webkit-filter: contrast(500%) url(#blurY);"
src="resources/reference.png">
> +<img style="-webkit-filter: url(#blurY) contrast(500%);"
src="resources/reference.png">
could we add another that's shorthand + url + shorthand?
> LayoutTests/css3/filters/resources/hueRotate.svg:5
> + <filter id="MyFilter">
> + <feColorMatrix type="hueRotate" values="180"/>
> + </filter>
Since we're replicating the filterBuilder functionality a bit, I think we also
need a test that has a filter with nested elements and non-linear input (named
inputs).
>
LayoutTests/platform/chromium-linux/css3/filters/effect-reference-expected.txt:
10
> + [feColorMatrix type="HUEROTATE" values="180.00"]
> + [SourceGraphic]
Hmmm... I wonder if we should decorate our filtered elements like this too, or
provide that option in WKTR?
More information about the webkit-reviews
mailing list