<?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>83132</bug_id>
          
          <creation_ts>2012-04-04 02:24:22 -0700</creation_ts>
          <short_desc>[Qt] Separate image encoding from dataURL construction</short_desc>
          <delta_ts>2012-04-11 22:17:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</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></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="noel gordon">noel.gordon</reporter>
          <assigned_to name="noel gordon">noel.gordon</assigned_to>
          <cc>hausmann</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zecke</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>595333</commentid>
    <comment_count>0</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-04 02:24:22 -0700</bug_when>
    <thetext>[Qt] Separate image encoding from dataURL construction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595334</commentid>
    <comment_count>1</comment_count>
      <attachid>135534</attachid>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-04 02:25:33 -0700</bug_when>
    <thetext>Created attachment 135534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599130</commentid>
    <comment_count>2</comment_count>
      <attachid>135534</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-04-10 03:28:42 -0700</bug_when>
    <thetext>Comment on attachment 135534
Patch

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

&gt; Source/WebCore/platform/graphics/qt/ImageBufferQt.cpp:383
&gt; +        compressionQuality = static_cast&lt;int&gt;(*quality * 100 + 0.5);

Why not use ceil or round here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599137</commentid>
    <comment_count>3</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-10 04:04:51 -0700</bug_when>
    <thetext>&gt; Why not use ceil or round here?

Left it as it was before, and also matches the other webkit ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599243</commentid>
    <comment_count>4</comment_count>
      <attachid>135534</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-10 07:12:02 -0700</bug_when>
    <thetext>Comment on attachment 135534
Patch

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

&gt; Source/WebCore/platform/graphics/qt/ImageBufferQt.cpp:382
&gt; +    if (quality &amp;&amp; *quality &gt;= 0.0 &amp;&amp; *quality &lt;= 1.0)

Use 0 and 1, not 0.0 and 1.0

&gt; Source/WebCore/platform/graphics/qt/ImageBufferQt.cpp:406
&gt; +    if (!encodeImage(m_data.m_pixmap, mimeType.substring(sizeof &quot;image&quot;), quality, data))
&gt; +        return &quot;data:,&quot;;

Any reason why not to use QMimeDatabase and QMimeType::suffixes()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599810</commentid>
    <comment_count>5</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-10 17:06:05 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 135534 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135534&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/qt/ImageBufferQt.cpp:382
&gt; &gt; +    if (quality &amp;&amp; *quality &gt;= 0.0 &amp;&amp; *quality &lt;= 1.0)
&gt; 
&gt; Use 0 and 1, not 0.0 and 1.0

Possible but again, just re-factoring change here, and it matches the other webkit ports, so I&apos;d prefer to leave it as is.

&gt; &gt; Source/WebCore/platform/graphics/qt/ImageBufferQt.cpp:406
&gt; &gt; +    if (!encodeImage(m_data.m_pixmap, mimeType.substring(sizeof &quot;image&quot;), quality, data))
&gt; &gt; +        return &quot;data:,&quot;;
&gt; 
&gt; Any reason why not to use QMimeDatabase and QMimeType::suffixes()?

Interesting, though not sure how they&apos;d help.  At routine entry we have:

  ASSERT(MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(mimeType));

so the mimeType is already canonical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599837</commentid>
    <comment_count>6</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-10 17:31:13 -0700</bug_when>
    <thetext>Thanks for the r+ Noam. I have some questions.

I believe that QPixmap.save() is not safe to use off the main thread. Is that correct?

Since the mimeType is known canonical via the ASSERT, why are the following lines needed?

   if (!mimeType.startsWith(&quot;image/&quot;))
       return &quot;data:,&quot;;

Is there a reason to prefer the QT toBase64 encoder over the base64 encoder provided by WebCore?

   return &quot;data:&quot; + mimeType + &quot;;base64,&quot; + data.toBase64().data();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599916</commentid>
    <comment_count>7</comment_count>
      <attachid>135534</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 18:47:08 -0700</bug_when>
    <thetext>Comment on attachment 135534
Patch

Clearing flags on attachment: 135534

Committed r113805: &lt;http://trac.webkit.org/changeset/113805&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599917</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 18:47:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600885</commentid>
    <comment_count>9</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-04-11 22:17:58 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Thanks for the r+ Noam. I have some questions.
&gt;
&gt; Since the mimeType is known canonical via the ASSERT, why are the following lines needed?
&gt; 
&gt;    if (!mimeType.startsWith(&quot;image/&quot;))
&gt;        return &quot;data:,&quot;;

Filed bug 83746 about that if you&apos;d like to review.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135534</attachid>
            <date>2012-04-04 02:25:33 -0700</date>
            <delta_ts>2012-04-10 18:47:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83132-20120404192531.patch</filename>
            <type>text/plain</type>
            <size>3630</size>
            <attacher name="noel gordon">noel.gordon</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q0ZDVmMzBlNDY0MWY5
ZmY4ZjRmOGZiNzg0YmIwNzlmMDU2YWMwNi4uMDg1NDM1ZDMzNTU1OWVjNjE0MjMzZTEzMGFhYWUx
ZjA0NWFmYmJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA0LTA0ICBOb2Vs
IEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KKworICAgICAgICBbUXRdIFNlcGFyYXRl
IGltYWdlIGVuY29kaW5nIGZyb20gZGF0YVVSTCBjb25zdHJ1Y3Rpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMTMyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBSZW1vdmUgdGhlIGltcGxp
Y2l0IGFzc3VtcHRpb24gdGhhdCBhIGRhdGFVUkwgaXMgdGhlIG9ubHkgZGVzaXJlZCBvdXRwdXQg
Zm9ybWF0CisgICAgICAgIG9mIHRoZSBpbWFnZSBlbmNvZGluZyBwaGFzZS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIHJlZmFjdG9yaW5nIG9ubHksIGNvdmVyZWQgYnkgZXhpc3RpbmcgY2FudmFz
IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVJbWFnZSk6IE91dHB1dCB0aGUgZW5jb2RlZCBp
bWFnZSB0byB0aGUgcHJvdmlkZWQgUUJ5dGVBcnJheS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCkgRm9ybWF0IHRoZSBkYXRhVVJM
IGVuY29kaW5nIG9mIHRoZSBtaW1lVHlwZQorICAgICAgICBlbmNvZGVkIGltYWdlIGRhdGEgaGVy
ZS4gQ2xhcmlmeSB0aGUgY29tbWVudC4KKwogMjAxMi0wNC0wMyAgQW5kcmV5IEtvc3lha292ICA8
Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGV2ZW50IG1hcmtz
IGFyZSBtaXNzaW5nIGluIHRoZSB0aW1lbGluZSBvdmVydmlldwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VCdWZmZXJRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAppbmRleCA0NGY4
NjBhZjJjODU4ZjM4ZGVlZjYyZDI1N2U1NmM0ZDJhYmU3MjE5Li45NzJhNmFlNDY3OTgyMGNjODgw
NDYyOWE5ZDhmMTA4ZGUzNGI1ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9JbWFnZUJ1ZmZlclF0LmNwcApAQCAtMzc2LDkgKzM3NiwyMCBAQCB2
b2lkIEltYWdlQnVmZmVyOjpwdXRCeXRlQXJyYXkoTXVsdGlwbHkgbXVsdGlwbGllZCwgQnl0ZUFy
cmF5KiBzb3VyY2UsIGNvbnN0IEludAogICAgICAgICBtX2RhdGEubV9wYWludGVyLT5yZXN0b3Jl
KCk7CiB9CiAKLS8vIFdlIGdldCBhIG1pbWVUeXBlIGhlcmUgYnV0IFFJbWFnZVdyaXRlciBkb2Vz
IG5vdCBzdXBwb3J0IG1pbWV0eXBlcyBidXQKLS8vIG9ubHkgZm9ybWF0cyAocG5nLCBnaWYsIGpw
ZWcuLi4sIHhwbSkuIFNvIGFzc3VtZSB3ZSBnZXQgaW1hZ2UvIGFzIGltYWdlCi0vLyBtaW1ldHlw
ZXMgYW5kIHRoZW4gcmVtb3ZlIHRoZSBpbWFnZS8gdG8gZ2V0IHRoZSBRdCBmb3JtYXQuCitzdGF0
aWMgYm9vbCBlbmNvZGVJbWFnZShjb25zdCBRUGl4bWFwJiBwaXhtYXAsIGNvbnN0IFN0cmluZyYg
Zm9ybWF0LCBjb25zdCBkb3VibGUqIHF1YWxpdHksIFFCeXRlQXJyYXkmIGRhdGEpCit7CisgICAg
aW50IGNvbXByZXNzaW9uUXVhbGl0eSA9IDEwMDsKKyAgICBpZiAocXVhbGl0eSAmJiAqcXVhbGl0
eSA+PSAwLjAgJiYgKnF1YWxpdHkgPD0gMS4wKQorICAgICAgICBjb21wcmVzc2lvblF1YWxpdHkg
PSBzdGF0aWNfY2FzdDxpbnQ+KCpxdWFsaXR5ICogMTAwICsgMC41KTsKKworICAgIFFCdWZmZXIg
YnVmZmVyKCZkYXRhKTsKKyAgICBidWZmZXIub3BlbihRQnVmZmVyOjpXcml0ZU9ubHkpOworICAg
IGJvb2wgc3VjY2VzcyA9IHBpeG1hcC5zYXZlKCZidWZmZXIsIGZvcm1hdC51dGY4KCkuZGF0YSgp
LCBjb21wcmVzc2lvblF1YWxpdHkpOworICAgIGJ1ZmZlci5jbG9zZSgpOworCisgICAgcmV0dXJu
IHN1Y2Nlc3M7Cit9CisKIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSkgY29uc3QKIHsKICAgICBBU1NFUlQo
TUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVUeXBlRm9yRW5jb2RpbmcobWlt
ZVR5cGUpKTsKQEAgLTM4NiwyNCArMzk3LDEzIEBAIFN0cmluZyBJbWFnZUJ1ZmZlcjo6dG9EYXRh
VVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IGRvdWJsZSogcXVhbGl0eSkgY29uCiAg
ICAgaWYgKCFtaW1lVHlwZS5zdGFydHNXaXRoKCJpbWFnZS8iKSkKICAgICAgICAgcmV0dXJuICJk
YXRhOiwiOwogCi0gICAgLy8gcHJlcGFyZSBvdXIgdGFyZ2V0Ci0gICAgUUJ5dGVBcnJheSBkYXRh
OwotICAgIFFCdWZmZXIgYnVmZmVyKCZkYXRhKTsKLSAgICBidWZmZXIub3BlbihRQnVmZmVyOjpX
cml0ZU9ubHkpOworICAgIC8vIFFJbWFnZVdyaXRlciBkb2VzIG5vdCBzdXBwb3J0IG1pbWV0eXBl
cy4gSXQgZG9lcyBzdXBwb3J0IFF0IGltYWdlIGZvcm1hdHMgKHBuZywKKyAgICAvLyBnaWYsIGpw
ZWcuLi4sIHhwbSkgc28gc2tpcCB0aGUgaW1hZ2UvIHRvIGdldCB0aGUgUXQgaW1hZ2UgZm9ybWF0
IHVzZWQgdG8gZW5jb2RlCisgICAgLy8gdGhlIG1fcGl4bWFwIGltYWdlLgogCi0gICAgaWYgKHF1
YWxpdHkgJiYgKnF1YWxpdHkgPj0gMC4wICYmICpxdWFsaXR5IDw9IDEuMCkgewotICAgICAgICBp
ZiAoIW1fZGF0YS5tX3BpeG1hcC5zYXZlKCZidWZmZXIsIG1pbWVUeXBlLnN1YnN0cmluZyhzaXpl
b2YgImltYWdlIikudXRmOCgpLmRhdGEoKSwgKnF1YWxpdHkgKiAxMDAgKyAwLjUpKSB7Ci0gICAg
ICAgICAgICBidWZmZXIuY2xvc2UoKTsKLSAgICAgICAgICAgIHJldHVybiAiZGF0YTosIjsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbV9kYXRhLm1fcGl4bWFwLnNhdmUo
JmJ1ZmZlciwgbWltZVR5cGUuc3Vic3RyaW5nKHNpemVvZiAiaW1hZ2UiKS51dGY4KCkuZGF0YSgp
LCAxMDApKSB7Ci0gICAgICAgICAgICBidWZmZXIuY2xvc2UoKTsKLSAgICAgICAgICAgIHJldHVy
biAiZGF0YTosIjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGJ1ZmZlci5jbG9zZSgpOworICAg
IFFCeXRlQXJyYXkgZGF0YTsKKyAgICBpZiAoIWVuY29kZUltYWdlKG1fZGF0YS5tX3BpeG1hcCwg
bWltZVR5cGUuc3Vic3RyaW5nKHNpemVvZiAiaW1hZ2UiKSwgcXVhbGl0eSwgZGF0YSkpCisgICAg
ICAgIHJldHVybiAiZGF0YTosIjsKIAogICAgIHJldHVybiAiZGF0YToiICsgbWltZVR5cGUgKyAi
O2Jhc2U2NCwiICsgZGF0YS50b0Jhc2U2NCgpLmRhdGEoKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>