<?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>59972</bug_id>
          
          <creation_ts>2011-05-02 16:16:32 -0700</creation_ts>
          <short_desc>[Qt] QtWebKit bridge assignToHTMLImageElement() results in Image with different SecurityOrigin</short_desc>
          <delta_ts>2014-02-03 03:17:40 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrew Wason">rectalogic</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>noam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>396761</commentid>
    <comment_count>0</comment_count>
      <attachid>91999</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-05-02 16:16:32 -0700</bug_when>
    <thetext>Created attachment 91999
sample Qt app that demonstrates the problem

Attached sample app installs a context object in a QWebPage which has a method that returns a QImage. In the loaded HTML, this image is assigned to a JavaScript Image object then drawn into an HTML canvas via drawImage(). Then getImageData() is called on the canvas.

getImageData() raises an exception &quot;SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent.&quot;

This seems to be because the JS Image contains a CachedImage with no URL, and Source/WebCore/html/canvas/CanvasRenderingContext.cpp CanvasRenderingContext::checkOrigin(HTMLImageElement*) calls checkOrigin(cachedImage-&gt;response().url()) and the empty url isValid() is false so it uses a unique SecurityOrigin with an empty KURL(), which is different than the pages SecurityOrigin.

I think images created by the hosting app via the bridge should adopt the SecurityOrigin of the page. Or maybe a QWebSetting should be provided to disable this origin checking? Setting QWebSettings::LocalContentCanAccessRemoteUrls doesn&apos;t help.

Build the attached app then run &quot;./origin $PWD/canvas.html&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406657</commentid>
    <comment_count>1</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-05-19 14:35:51 -0700</bug_when>
    <thetext>Setting the documents URL on the CachedImage (as discussed in bug #60770) does not fix this because the StillImage the bridge creates returns false from Image::hasSingleSecurityOrigin().

So even when the CachedImage::response().url() passes checks in CanvasRenderingContext::checkOrigin(KURL&amp;), we still end up tainting the canvas in CanvasRenderingContext::checkOrigin(HTMLImageElement*):

    if (canvas()-&gt;originClean() &amp;&amp; !cachedImage-&gt;image()-&gt;hasSingleSecurityOrigin())
        canvas()-&gt;setOriginTainted();

Should StillImage override hasSingleSecurityOrigin() to return true like BitmapImage does?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975209</commentid>
    <comment_count>2</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:17:40 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>91999</attachid>
            <date>2011-05-02 16:16:32 -0700</date>
            <delta_ts>2011-05-02 16:16:32 -0700</delta_ts>
            <desc>sample Qt app that demonstrates the problem</desc>
            <filename>origin.zip</filename>
            <type>application/zip</type>
            <size>2005</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">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
tAEAAAsGAAAAAA==
</data>

          </attachment>
      

    </bug>

</bugzilla>