<?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>105441</bug_id>
          
          <creation_ts>2012-12-19 08:43:56 -0800</creation_ts>
          <short_desc>[Qt][bridge] JavaScript null and undefined are mapped to the same QVariant type</short_desc>
          <delta_ts>2014-02-03 03:24:05 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>104540</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Hausmann">hausmann</reporter>
          <assigned_to name="Simon Hausmann">hausmann</assigned_to>
          <cc>jedrzej.nowacki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>794707</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-12-19 08:43:56 -0800</bug_when>
    <thetext>null and undefined are both mapped to a default constructed QVariant(), which
means we cannot later distinguish between undefined and null when converting back
to JavaScript. This means a loss of information.

In Qt 5&apos;s QML null is mapped to QVariant(QMetaType::VoidStar, 0) and undefined is
mapped to a default constructed QVariant (where the type is indeed unknown).

We should fix this in Qt 5.1, I have a preliminary patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794711</commentid>
    <comment_count>1</comment_count>
      <attachid>180177</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-12-19 08:51:24 -0800</bug_when>
    <thetext>Created attachment 180177
Patch

Preliminary patch that still needs more fixing in the unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794722</commentid>
    <comment_count>2</comment_count>
      <attachid>180177</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-12-19 09:03:37 -0800</bug_when>
    <thetext>Comment on attachment 180177
Patch

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

Mapping null to default QVariant seems to be consistant with QScript but not QJs (from Qml).

&gt; Source/WebCore/bridge/qt/qt_runtime.cpp:680
&gt; +    if (type == QMetaType::VoidStar &amp;&amp; !variant.value&lt;void*&gt;())

Are you sure this shouldn&apos;t just be a variant.isNull()? Wouldn&apos;t we want null QString to become null JS-values, instead of empty strings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795271</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-12-20 01:31:13 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 180177 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=180177&amp;action=review
&gt; 
&gt; Mapping null to default QVariant seems to be consistant with QScript but not QJs (from Qml).

Right.

&gt; &gt; Source/WebCore/bridge/qt/qt_runtime.cpp:680
&gt; &gt; +    if (type == QMetaType::VoidStar &amp;&amp; !variant.value&lt;void*&gt;())
&gt; 
&gt; Are you sure this shouldn&apos;t just be a variant.isNull()? Wouldn&apos;t we want null QString to become null JS-values, instead of empty strings?

I think the main argument against it is that you loose the information that it was a _string_.

I&apos;m personally not a big fan of the null vs. empty distinction for strings and I recall discussions about getting rid of it altogether with Qt 4, but we couldn&apos;t because it would break too much existing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975631</commentid>
    <comment_count>4</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:24:05 -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="1"
              isprivate="0"
          >
            <attachid>180177</attachid>
            <date>2012-12-19 08:51:24 -0800</date>
            <delta_ts>2012-12-19 09:03:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105441-20121219174845.patch</filename>
            <type>text/plain</type>
            <size>5685</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQ2ZjdkYzYzMTdjMDVl
YTA4NDJiZDFiNWYyMDQxNzk2YmNmNmUzOC4uNGU5NTFjMDE5NDg0ZTgxOGZmNGU0NWY4MmJlZTk2
YjI0OWE0Y2I5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDEyLTEyLTE5ICBTaW1v
biBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQGRpZ2lhLmNvbT4KIAorICAgICAgICBbUXRdW2Jy
aWRnZV0gSmF2YVNjcmlwdCBudWxsIGFuZCB1bmRlZmluZWQgYXJlIG1hcHBlZCB0byB0aGUgc2Ft
ZSBRVmFyaWFudCB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDU0NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBNYXAgSlMgbnVsbCB0byBRVmFyaWFudChWb2lkU3RhciwgMCkgdG8gYWxsb3cgZGlz
dGluZ3Vpc2hpbmcgaXQgZnJvbQorICAgICAgICB1bmRlZmluZWQuCisKKyAgICAgICAgKiBicmlk
Z2UvcXQvcXRfcnVudGltZS5jcHA6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpjb252ZXJ0VmFs
dWVUb1FWYXJpYW50KToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNvbnZlcnRRVmFyaWFudFRv
VmFsdWUpOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6ZmluZE1ldGhvZEluZGV4KToKKworMjAx
Mi0xMi0xOSAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CisKICAg
ICAgICAgW1F0XSBKUyBicmlkZ2UgZG9lcyBub3QgdHJhbnNtaXQgUVZhcmlhbnRzIGFueW1vcmUg
aW4gUXQ1CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDQ1NDAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCAyZDFlNzBiYjMxZTkyZjVlNDQwZDliZmJhMzg3ZmVj
ZDZiMDhmMTMyLi41NWE4NGYyOTEyNTU0YjY4ZjlhNWQ1MGIwMzQ0MTA5N2ZkOTE4MzQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEyLTE5ICBTaW1vbiBIYXVzbWFubiAg
PHNpbW9uLmhhdXNtYW5uQGRpZ2lhLmNvbT4KKworICAgICAgICBbUXRdW2JyaWRnZV0gSmF2YVNj
cmlwdCBudWxsIGFuZCB1bmRlZmluZWQgYXJlIG1hcHBlZCB0byB0aGUgc2FtZSBRVmFyaWFudCB0
eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU0
NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1
c3RlZCB0ZXN0cyB0byBtYXAgbnVsbCB0byBRVmFyaWFudChWb2lkU3RhciwgMCk7CisKKyAgICAg
ICAgKiB0ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcDoKKyAgICAgICAg
KHRzdF9RT2JqZWN0QnJpZGdlOjpnZXRTZXRTdGF0aWNQcm9wZXJ0eSk6CisgICAgICAgICh0c3Rf
UU9iamVjdEJyaWRnZTo6Y2FsbFF0SW52b2thYmxlKToKKwogMjAxMi0xMi0xOCAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW5uZWNlc3Nhcnkg
ZnVuY3Rpb25zIGZyb20gQ29va2llc1N0cmF0ZWd5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcnVudGltZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
cnVudGltZS5jcHAKaW5kZXggODYxZjJkNGNmMmFiMjhhZGRjNzVmYTMwYzc2Y2Y0OTljNDFkZTlk
MS4uYTE5Nzc5ZDI3M2NhYzk3YjVkZDdjMzA0NWViOWM5ODkxODFlNmIyYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmNwcApAQCAtNjMwLDcgKzYzMCwxMiBAQCBRVmFyaWFu
dCBjb252ZXJ0VmFsdWVUb1FWYXJpYW50KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVm
IHZhbHVlLCBRTWV0YVR5cAogICAgICAgICAgICAgICAgIGlmIChkaXN0ID09IDApCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSBlbHNlIGlmIChoaW50ID09IChRTWV0
YVR5cGU6OlR5cGUpIHFNZXRhVHlwZUlkPFFWYXJpYW50PigpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc1VuZGVmaW5lZChj
b250ZXh0LCB2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZUlzTnVsbChjb250
ZXh0LCB2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRpc3RhbmNlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgKmRpc3RhbmNlID0gMTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFFWYXJpYW50KFFNZXRhVHlwZTo6Vm9pZFN0YXIsIDApOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBpZiAoSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQsIHZhbHVlKSkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAqZGlzdGFuY2UgPSAxOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUVZhcmlhbnQo
KTsKQEAgLTY3MiwxMiArNjc3LDggQEAgSlNWYWx1ZVJlZiBjb252ZXJ0UVZhcmlhbnRUb1ZhbHVl
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBQYXNzUmVmUHRyPFJvb3RPYmplY3Q+IHIKICAgICBRTWV0
YVR5cGU6OlR5cGUgdHlwZSA9IChRTWV0YVR5cGU6OlR5cGUpIHZhcmlhbnQudXNlclR5cGUoKTsK
IAogICAgIHFDb252RGVidWcoKSA8PCAiY29udmVydFFWYXJpYW50VG9WYWx1ZTogbWV0YXR5cGU6
IiA8PCB0eXBlIDw8ICIsIGlzbnVsbDogIiA8PCB2YXJpYW50LmlzTnVsbCgpOwotICAgIGlmICh2
YXJpYW50LmlzTnVsbCgpICYmCi0gICAgICAgICFRTWV0YVR5cGU6OnR5cGVGbGFncyh0eXBlKS50
ZXN0RmxhZyhRTWV0YVR5cGU6OlBvaW50ZXJUb1FPYmplY3QpICYmCi0gICAgICAgIHR5cGUgIT0g
UU1ldGFUeXBlOjpWb2lkU3RhciAmJgotICAgICAgICB0eXBlICE9IFFNZXRhVHlwZTo6UVN0cmlu
ZykgeworICAgIGlmICh0eXBlID09IFFNZXRhVHlwZTo6Vm9pZFN0YXIgJiYgIXZhcmlhbnQudmFs
dWU8dm9pZCo+KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bGwoY29udGV4dCk7Ci0g
ICAgfQogCiAgICAgaWYgKHR5cGUgPT0gUU1ldGFUeXBlOjpCb29sKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHZhcmlhbnQudG9Cb29sKCkpOwpAQCAtMTE3Niw3
ICsxMTc3LDcgQEAgc3RhdGljIGludCBmaW5kTWV0aG9kSW5kZXgoSlNDb250ZXh0UmVmIGNvbnRl
eHQsCiAgICAgICAgIGZvciAoaT0wOyBpIDwgYXJncy5jb3VudCgpOyBpKyspIHsKICAgICAgICAg
ICAgIHZhcnNbaV0gPSBhcmdzW2ldOwogICAgICAgICAgICAgdm9pZCogZGF0YVB0ciA9IHZhcnNb
aV0uZGF0YSgpOwotICAgICAgICAgICAgaWYgKGNob3NlblR5cGVzW2ldLmlzVmFyaWFudCgpICYm
ICFkYXRhUHRyKQorICAgICAgICAgICAgaWYgKGNob3NlblR5cGVzW2ldLmlzVmFyaWFudCgpKQog
ICAgICAgICAgICAgICAgIHZ2YXJzW2ldID0gJnZhcnNbaV07CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgdnZhcnNbaV0gPSBkYXRhUHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC90ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvcXQvdGVzdHMvcW9iamVjdGJyaWRnZS90c3RfcW9iamVjdGJyaWRnZS5jcHAKaW5k
ZXggYmRiYzkzN2Q4MWE1NWNlNWViM2I5MjA5YTU3Mjk0ZjQ5ODI4ODYzNC4uNTcxYjljMjk1MjFm
MGViN2I5MmRjMDcyZDUzNGIxNDY1YTM2MDA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9x
dC90ZXN0cy9xb2JqZWN0YnJpZGdlL3RzdF9xb2JqZWN0YnJpZGdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L3F0L3Rlc3RzL3FvYmplY3RicmlkZ2UvdHN0X3FvYmplY3RicmlkZ2UuY3BwCkBAIC04
NjUsNyArODY1LDcgQEAgdm9pZCB0c3RfUU9iamVjdEJyaWRnZTo6Z2V0U2V0U3RhdGljUHJvcGVy
dHkoKQogCiAgICAgUUNPTVBBUkUoZXZhbEpTKCJteU9iamVjdC52YXJpYW50UHJvcGVydHkgPSBu
dWxsOyIKICAgICAgICAgICAgICAgICAgICAgIm15T2JqZWN0LnZhcmlhbnRQcm9wZXJ0eS52YWx1
ZU9mKCkiKSwgc1VuZGVmaW5lZCk7Ci0gICAgUUNPTVBBUkUobV9teU9iamVjdC0+dmFyaWFudFBy
b3BlcnR5KCksIFFWYXJpYW50KCkpOworICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnZhcmlhbnRQ
cm9wZXJ0eSgpLCBRVmFyaWFudChRTWV0YVR5cGU6OlZvaWRTdGFyLCAwKSk7CiAgICAgUUNPTVBB
UkUoZXZhbEpTKCJteU9iamVjdC52YXJpYW50UHJvcGVydHkgPSB1bmRlZmluZWQ7IgogICAgICAg
ICAgICAgICAgICAgICAibXlPYmplY3QudmFyaWFudFByb3BlcnR5LnZhbHVlT2YoKSIpLCBzVW5k
ZWZpbmVkKTsKICAgICBRQ09NUEFSRShtX215T2JqZWN0LT52YXJpYW50UHJvcGVydHkoKSwgUVZh
cmlhbnQoKSk7CkBAIC0xMjI0LDE1ICsxMjI0LDE1IEBAIHZvaWQgdHN0X1FPYmplY3RCcmlkZ2U6
OmNhbGxRdEludm9rYWJsZSgpCiAgICAgICAgIFFDT01QQVJFKHR5cGUsIHNPYmplY3QpOwogICAg
ICAgICBRQ09NUEFSRShtX215T2JqZWN0LT5xdEZ1bmN0aW9uSW52b2tlZCgpLCAxNSk7CiAgICAg
ICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuc2l6ZSgpLCAxKTsK
LSAgICAgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRGdW5jdGlvbkFjdHVhbHMoKS5hdCgwKSwg
UVZhcmlhbnQoKSk7Ci0gICAgICAgIFFWRVJJRlkoIW1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1
YWxzKCkuYXQoMCkuaXNWYWxpZCgpKTsKKyAgICAgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRG
dW5jdGlvbkFjdHVhbHMoKS5hdCgwKSwgUVZhcmlhbnQoUU1ldGFUeXBlOjpWb2lkU3RhciwgMCkp
OworICAgICAgICBRVkVSSUZZKG1fbXlPYmplY3QtPnF0RnVuY3Rpb25BY3R1YWxzKCkuYXQoMCku
aXNWYWxpZCgpKTsKICAgICB9CiAKICAgICBtX215T2JqZWN0LT5yZXNldFF0RnVuY3Rpb25JbnZv
a2VkKCk7CiAgICAgewogICAgICAgICBRU3RyaW5nIHR5cGU7CiAgICAgICAgIFFWYXJpYW50IHJl
dCA9IGV2YWxKU1YoIm15T2JqZWN0Lm15SW52b2thYmxlV2l0aFZhcmlhbnRBcmcodW5kZWZpbmVk
KSIsIHR5cGUpOwotICAgICAgICBRQ09NUEFSRSh0eXBlLCBzT2JqZWN0KTsKKyAgICAgICAgUUNP
TVBBUkUodHlwZSwgc1VuZGVmaW5lZCk7CiAgICAgICAgIFFDT01QQVJFKG1fbXlPYmplY3QtPnF0
RnVuY3Rpb25JbnZva2VkKCksIDE1KTsKICAgICAgICAgUUNPTVBBUkUobV9teU9iamVjdC0+cXRG
dW5jdGlvbkFjdHVhbHMoKS5zaXplKCksIDEpOwogICAgICAgICBRQ09NUEFSRShtX215T2JqZWN0
LT5xdEZ1bmN0aW9uQWN0dWFscygpLmF0KDApLCBRVmFyaWFudCgpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>