<?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>94949</bug_id>
          
          <creation_ts>2012-08-24 10:15:32 -0700</creation_ts>
          <short_desc>[Qt][WK2] REGRESSION(r126067): It made qmltests::DoubleTapToZoom::test_basic() fail</short_desc>
          <delta_ts>2012-08-27 02:59:42 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          
          <blocked>70236</blocked>
    
    <blocked>94493</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Simon Hausmann">hausmann</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gaborb</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>loki</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>pvarga</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>704206</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-24 10:15:32 -0700</bug_when>
    <thetext>After https://trac.webkit.org/changeset/126067 qmltests::DoubleTapToZoom::test_basic()
Qt-WK2 API test started to fail regularly. (not always, but in 90% of runs)
I got it with manual bisecting. It doesn&apos;t fail on r126066, but it fails
almost always on r126067.

FAIL!  : qmltests::DoubleTapToZoom::test_basic() Uncaught exception: Cannot read property &apos;width&apos; of undefined
   Loc: [(0)]

You can reproduce the bug if you run this binary:
$ WebKitBuild/Release/Source/WebKit2/UIProcess/API/qt/tests/qmltests/tst_qmltests_WebView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704215</commentid>
    <comment_count>1</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-08-24 10:23:36 -0700</bug_when>
    <thetext>cc JSC/QML experts, maybe you know what is it and how to fix it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704240</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-08-24 10:52:45 -0700</bug_when>
    <thetext>It appears this QML attempts to serialize a ClientRect object (unhandled host object), which is not supported according to spec (http://www.whatwg.org/specs/web-apps/current-work/multipage/common-dom-interfaces.html#safe-passing-of-structured-data).

As a consequence, a DataCloneError is being thrown.

tst_doubleTapToZoom.qml code:
function elementRect(id) {
            resultSpy.clear();
            var result;

             webView.experimental.evaluateJavaScript(
                &quot;document.getElementById(&apos;&quot; + id + &quot;&apos;).getBoundingClientRect();&quot;,
                function(rect) { webView.resultReceived(); result = rect });
            resultSpy.wait();
            return result;
        }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704244</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-24 10:54:22 -0700</bug_when>
    <thetext>I haven&apos;t looked at this in details, but Chris made the serialization more compliant with the specs and thus more strict.

 getBoundingClientRect(); returns ClientRect object (http://www.w3.org/TR/cssom-view/#clientrect) so it is not serializable and it has to be turned into an object literal (Object object) before serialization.

This following line in Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_doubleTapToZoom.qml

function(rect) { webView.resultReceived(); result = rect });

needs to be changed to

function(rect) { webView.resultReceived(); result = { width: rect.width, height: rect.height } });

or similar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704245</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-24 10:57:54 -0700</bug_when>
    <thetext>
Btw you need to do this before serialization!

webView.experimental.evaluateJavaScript(
    &quot;var clientRect = document.getElementById(&apos;&quot; + id + &quot;&apos;).getBoundingClientRect();&quot; +
    &quot;return { width: clientRect.width, height: clientRect.height }&quot;,
    function(rect) { webView.resultReceived(); result = rect });</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705070</commentid>
    <comment_count>5</comment_count>
      <attachid>160674</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-27 02:03:38 -0700</bug_when>
    <thetext>Created attachment 160674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705085</commentid>
    <comment_count>6</comment_count>
      <attachid>160674</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-08-27 02:12:05 -0700</bug_when>
    <thetext>Comment on attachment 160674
Patch

Funny I thought about this yesterday... I should have mentioned to just use the JSON methods, and here we go :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705120</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-27 02:56:55 -0700</bug_when>
    <thetext>I still wonder if for the QML API we should automatically imply a JSON conversion or instead keep the current implementation and document that the return value will be cloned according to the html cloning algo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>705124</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-27 02:59:42 -0700</bug_when>
    <thetext>Committed r126740: &lt;http://trac.webkit.org/changeset/126740&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160674</attachid>
            <date>2012-08-27 02:03:38 -0700</date>
            <delta_ts>2012-08-27 02:12:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94949-20120827110509.patch</filename>
            <type>text/plain</type>
            <size>1843</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODNlZmZmNjA2NTQ5MmEy
ODEwNjYzYzE5OTI1MWI5ZjNhMDc1ZWI2OS4uOTFjODAzMjdiYmExZjJhOWEzMTJkOWQwMjVjNDFh
NGQ5M2IxNGE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE2IEBACiAyMDEyLTA4LTI3ICBTaW1v
biBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAorICAgICAgICBbUXRdW1dL
Ml0gUkVHUkVTU0lPTihyMTI2MDY3KTogSXQgbWFkZSBxbWx0ZXN0czo6RG91YmxlVGFwVG9ab29t
Ojp0ZXN0X2Jhc2ljKCkgZmFpbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTQ5NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2UgSlNPTiB0byBzZXJpYWxpemUgdGhlIGNsaWVudCByZWN0IGZvciB0aGUg
YXN5bmMgZXZhbHVhdGVKYXZhU2NyaXB0IGNhbGwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2RvdWJsZVRhcFRvWm9vbS5xbWw6CisKKzIw
MTItMDgtMjcgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCiAg
ICAgICAgIFtRdF0gRml4IGZhaWxpbmcgUU1MMiBhdXRvIHRlc3RzIGR1ZSB0byBjb25mbGljdGlu
ZyBzaWduYWwgZGVjbGFyYXRpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk1MDU5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfZG91YmxlVGFwVG9ab29tLnFtbCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90
c3RfZG91YmxlVGFwVG9ab29tLnFtbAppbmRleCBiMGExMmNlN2EwNTg1Y2I5YTA0OThmMTBmZDcx
OTBmYjYwNTc2MDZkLi42OTE0NTU3MDg5OTRhNDkxMGQxYTQzOTI4NmE5MjNjN2Q2NzYwNzk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3Rz
L1dlYlZpZXcvdHN0X2RvdWJsZVRhcFRvWm9vbS5xbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9kb3VibGVUYXBUb1pvb20u
cW1sCkBAIC02NCw4ICs2NCw4IEBAIEl0ZW0gewogICAgICAgICAgICAgdmFyIHJlc3VsdDsKIAog
ICAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLmV2YWx1YXRlSmF2YVNjcmlwdCgKLSAg
ICAgICAgICAgICAgICAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIgKyBpZCArICInKS5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsiLAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHJlY3QpIHsg
d2ViVmlldy5yZXN1bHRSZWNlaXZlZCgpOyByZXN1bHQgPSByZWN0IH0pOworICAgICAgICAgICAg
ICAgICJKU09OLnN0cmluZ2lmeShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIiArIGlkICsgIicp
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsiLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHJl
Y3QpIHsgd2ViVmlldy5yZXN1bHRSZWNlaXZlZCgpOyByZXN1bHQgPSBKU09OLnBhcnNlKHJlY3Qp
OyB9KTsKICAgICAgICAgICAgIHJlc3VsdFNweS53YWl0KCk7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9Cg==
</data>
<flag name="review"
          id="171280"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>