<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>69747</bug_id>
          
          <creation_ts>2011-10-10 02:38:26 -0700</creation_ts>
          <short_desc>FEComponentTransfer element doesn&apos;t support dynamic invalidation</short_desc>
          <delta_ts>2011-12-15 11:54:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://granite.sru.edu/~ddailey/svg/feComponentTransfer2.svg</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Renata Hodovan">rhodovan.u-szeged</reporter>
          <assigned_to name="Renata Hodovan">rhodovan.u-szeged</assigned_to>
          <cc>krit</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>480891</commentid>
    <comment_count>0</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-10-10 02:38:26 -0700</bug_when>
    <thetext>FEComponentTransfer element doesn&apos;t support dynamic invalidation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481708</commentid>
    <comment_count>1</comment_count>
      <attachid>110532</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-10-11 10:19:45 -0700</bug_when>
    <thetext>Created attachment 110532
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482318</commentid>
    <comment_count>2</comment_count>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-10-12 02:44:55 -0700</bug_when>
    <thetext>Chromium ews is yellow &apos;cos the new tests need plaform specific expecteds on chromium. The rest failing tests don&apos;t contain any SVG elements, so I guess they are unrelated or flaky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482322</commentid>
    <comment_count>3</comment_count>
      <attachid>110532</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-10-12 02:59:21 -0700</bug_when>
    <thetext>Comment on attachment 110532
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=110532&amp;action=review

Tests look great, I checked each of them. I wish the changes would be more easily visible (did the filter apply really work?) I have to trust you all tests work manually fine and produce this result which is different to no filter applied :-)

r- because of abusing SVGElement to share code. Please rework this part, everything else is great.

&gt; Source/WebCore/svg/SVGElement.cpp:141
&gt; +        return;

Unnecessary.

&gt; Source/WebCore/svg/SVGElement.h:120
&gt; +    void invalidateParents();

This does not belong in SVGElement - it has a very generic name and leads to confusion. SVGElement should be kept as small as possible.
Why don&apos;t you introduce a free-function in eg. SVGFilterPrimitiveStandardAttributes.h or another filter-related class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482383</commentid>
    <comment_count>4</comment_count>
      <attachid>110679</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-10-12 06:43:52 -0700</bug_when>
    <thetext>Created attachment 110679
Propsed patch

&gt; Tests look great, I checked each of them. I wish the changes would be more easily visible (did the filter apply really work?) I have to trust you all tests work manually fine and produce this result which is different to no filter applied :-)
Yeah, tests work manually fine. Perhaps you don&apos;t see it on the pngs, because the second pricture tries to approach the input image (e.g. the second parameter set contains the default values) and it&apos;s printed to the png.

Furthermore I renamed invalidateParents() to invalidateFilterPrimitiveParent() and moved to SVGFilterPrimitveStandardAttributes. As we talked on IRC it&apos;s declared as a free function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482388</commentid>
    <comment_count>5</comment_count>
      <attachid>110680</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-10-12 06:51:45 -0700</bug_when>
    <thetext>Created attachment 110680
Proposed patch

One unnecessary comment is removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483141</commentid>
    <comment_count>6</comment_count>
      <attachid>110680</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-10-13 05:43:06 -0700</bug_when>
    <thetext>Comment on attachment 110680
Proposed patch

Looks great, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483143</commentid>
    <comment_count>7</comment_count>
      <attachid>110680</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-10-13 05:44:09 -0700</bug_when>
    <thetext>Comment on attachment 110680
Proposed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=110680&amp;action=review

&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:174
&gt; +{
&gt; +    ContainerNode* parent = element-&gt;parentNode();

Ah forgot to say. You have to either add an early return if element can be null or add a ASSERT(element);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483145</commentid>
    <comment_count>8</comment_count>
      <attachid>110680</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-10-13 05:50:03 -0700</bug_when>
    <thetext>Comment on attachment 110680
Proposed patch

Clearing patch flag hoping that cr-linux EWS will stop processing the patch over and over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483205</commentid>
    <comment_count>9</comment_count>
      <attachid>110680</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-10-13 08:33:50 -0700</bug_when>
    <thetext>Comment on attachment 110680
Proposed patch

Heh, obvious return missing in
+    if (attrName == SVGNames::inAttr)
+        invalidateFilterPrimitiveParent(this);
..
ASSERT_NOT_REACHED();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483207</commentid>
    <comment_count>10</comment_count>
      <attachid>110851</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2011-10-13 08:40:33 -0700</bug_when>
    <thetext>Created attachment 110851
Propsed patch

Missing returns are added both in SVGComponentTransferFunction and SVGFEMergeNodeElement.
FIXME about the missing svgAttrChanged() is also removed from SVGComponentTransferFunction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>483210</commentid>
    <comment_count>11</comment_count>
      <attachid>110851</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-10-13 08:44:29 -0700</bug_when>
    <thetext>Comment on attachment 110851
Propsed patch

View in context: https://bugs.webkit.org/attachment.cgi?id=110851&amp;action=review

r=me, please fix this before landing:

&gt; Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp:144
&gt; +    if (attrName == SVGNames::typeAttr
&gt; +        || attrName == SVGNames::tableValuesAttr
&gt; +        || attrName == SVGNames::slopeAttr
&gt; +        || attrName == SVGNames::interceptAttr
&gt; +        || attrName == SVGNames::amplitudeAttr
&gt; +        || attrName == SVGNames::exponentAttr
&gt; +        || attrName == SVGNames::offsetAttr) {

This is useless, isSupportedAttribute() checks the same, if that returned true, it&apos;s one of these attributes :-).

&gt; Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp:149
&gt; +        invalidateFilterPrimitiveParent(this);
&gt; +        return;
&gt; +    }
&gt; +
&gt; +    ASSERT_NOT_REACHED();

Just make this: invalidateFilterPrimitiveParent(this);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522118</commentid>
    <comment_count>12</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2011-12-15 11:54:14 -0800</bug_when>
    <thetext>It looks to me like this was landed in http://trac.webkit.org/changeset/97369 and can be closed, no?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110532</attachid>
            <date>2011-10-11 10:19:45 -0700</date>
            <delta_ts>2011-10-12 06:43:52 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-componentTransferElement-up.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="review"
          id="108069"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="108070"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110679</attachid>
            <date>2011-10-12 06:43:52 -0700</date>
            <delta_ts>2011-10-12 06:51:45 -0700</delta_ts>
            <desc>Propsed patch</desc>
            <filename>0001-componetTransfer-free.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="commit-queue"
          id="108258"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110680</attachid>
            <date>2011-10-12 06:51:45 -0700</date>
            <delta_ts>2011-10-13 08:40:33 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>0001-componentTransfer-free.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>
<flag name="review"
          id="108259"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
    <flag name="commit-queue"
          id="108260"
          type_id="3"
          status="-"
          setter="rhodovan.u-szeged"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110851</attachid>
            <date>2011-10-13 08:40:33 -0700</date>
            <delta_ts>2011-10-14 01:15:56 -0700</delta_ts>
            <desc>Propsed patch</desc>
            <filename>0001-upped-component.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64"></data>

          </attachment>
      

    </bug>

</bugzilla>