<?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>34030</bug_id>
          
          <creation_ts>2010-01-22 18:49:44 -0800</creation_ts>
          <short_desc>ClipboardMac::setData() should be case-insensitive for the format parameter</short_desc>
          <delta_ts>2010-06-10 20:49:57 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></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>
          
          <blocked>33877</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>183918</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-01-22 18:49:44 -0800</bug_when>
    <thetext>A simple test case has been attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183922</commentid>
    <comment_count>1</comment_count>
      <attachid>47259</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-01-22 19:05:03 -0800</bug_when>
    <thetext>Created attachment 47259
Test case

Really attach the attachment this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183925</commentid>
    <comment_count>2</comment_count>
      <attachid>47261</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-01-22 19:16:01 -0800</bug_when>
    <thetext>Created attachment 47261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183928</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-01-22 19:37:47 -0800</bug_when>
    <thetext>This bug is related to bug #31003.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183932</commentid>
    <comment_count>4</comment_count>
      <attachid>47263</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-01-22 19:57:26 -0800</bug_when>
    <thetext>Created attachment 47263
IE test case

The spec has this to say:
Formats are generally given by MIME types, with some values special-cased for legacy reasons. For the purposes of this API, however, the format strings are opaque, case-sensitive, strings, and the empty string is a valid format string.

According to RFC 2616, &quot;The type, subtype, and parameter attribute names are case-insensitive[ in a MIME type].&quot;

If formats are typically MIME types, I think it would make sense to ignore case.
IE also ignores case, as the attached IE test case shows.

Currently, Mac and Qt both respect case. It seems only the Windows implementation does not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184008</commentid>
    <comment_count>5</comment_count>
      <attachid>47261</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-23 10:29:48 -0800</bug_when>
    <thetext>Comment on attachment 47261
Patch

The right way to be case insensitive is to use equalIgnoringCase, not to call lower.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184011</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-01-23 11:18:19 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 47261 [details])
&gt; The right way to be case insensitive is to use equalIgnoringCase, not to call
&gt; lower.

I would do that, but there&apos;s more than just string comparisons. For example:
&gt;     if (qType == &quot;text/plain&quot; || qType.startsWith(&quot;text/plain;&quot;))

I&apos;ve also asked WHAT for clarification. I think there&apos;s a case to be made for ignoring case in format strings, but I&apos;m going to hold the patch until there&apos;s a clear answer here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187593</commentid>
    <comment_count>7</comment_count>
      <attachid>48090</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-02-03 18:56:49 -0800</bug_when>
    <thetext>Created attachment 48090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187596</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-02-03 18:59:39 -0800</bug_when>
    <thetext>The HTML5 draft has changed on this point:
http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#datatransfer

&quot;DataTransfer objects can hold pieces of data, each associated with a unique format. Formats are generally given by MIME types, with some values special-cased for legacy reasons. However, the API does not enforce this; non-MIME-type values can be added as well. All formats are identified by strings that are converted to ASCII lowercase by the API.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187908</commentid>
    <comment_count>9</comment_count>
      <attachid>48090</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-02-04 13:14:55 -0800</bug_when>
    <thetext>Comment on attachment 48090
Patch

Change seems OK.

The preferred way to compare and ignore case differences is to use the equalIgnoringCase function and the CaseFoldingHash hash function. I&apos;d prefer to see it working that way.

The use of &quot;q&quot; in &quot;qType&quot; is an ancient relic from when WebCore/platform didn’t exist and the code was using QString. So it’s strange to introduce it in new code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187968</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2010-02-04 15:35:19 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 48090 [details])
&gt; Change seems OK.
&gt; 
&gt; The preferred way to compare and ignore case differences is to use the
&gt; equalIgnoringCase function and the CaseFoldingHash hash function. I&apos;d prefer to
&gt; see it working that way.

The way I interpret the spec, the UA ought to lower case all formats. That being said, I think there are problems with either approach.

If we only use equalIgnoringCase and CaseFoldingHash, it becomes much harder to deal with the system pasteboard. For example, in qt, removing a format from the clipboard is done with this snippet:
  m_writableData-&gt;removeFormat(qType);
To implement that, a UA would need to enumerate all types in the clipboard and then compare each one in a case-insensitive manner. In addition, what happens when multiple formats match?

However, if we convert everything to lowercase, then there are native pasteboard/drag and drop types the interface will never be able to retrieve.

Given the problems with both approaches, maybe the spec should actually say:
Only &quot;text&quot; and &quot;url&quot; should be treated in a case-insensitive manner; all other format names must be handled in a case-sensitive manner. What do you think?

&gt; 
&gt; The use of &quot;q&quot; in &quot;qType&quot; is an ancient relic from when WebCore/platform didn’t
&gt; exist and the code was using QString. So it’s strange to introduce it in new
&gt; code.

Interesting. I didn&apos;t know that; I took the naming from WebCore/platform/win. I&apos;ll change it with next update to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188005</commentid>
    <comment_count>11</comment_count>
      <attachid>48090</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-02-04 16:41:14 -0800</bug_when>
    <thetext>Comment on attachment 48090
Patch

r- based on comments already in the bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>47259</attachid>
            <date>2010-01-22 19:05:03 -0800</date>
            <delta_ts>2010-01-22 19:05:03 -0800</delta_ts>
            <desc>Test case</desc>
            <filename>clipboardData-setData.html</filename>
            <type>text/html</type>
            <size>467</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiI+DQogIDxoZWFkPg0KICAgIDxtZXRhIGNo
YXJzZXQ9IlVURi04Ij4NCiAgICA8c2NyaXB0Pg0KICAgICAgZnVuY3Rpb24gY29weUhhbmRsZXIo
ZXZlbnQpIHsNCiAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCd0ZXh0JywgJ1Ro
aXMgdGV4dCBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSBjbGlwYm9hcmQuJyk7DQogICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7DQogICAgICB9DQogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0
ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVu
dExpc3RlbmVyKCdjb3B5JywgY29weUhhbmRsZXIpOw0KICAgICAgfSk7DQogICAgPC9zY3JpcHQ+
DQogIDwvaGVhZD4NCiAgPGJvZHk+DQogICAgPHA+SGVsbG8gV29ybGQhPC9wPg0KICA8L2JvZHk+
DQo8L2h0bWw+DQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47261</attachid>
            <date>2010-01-22 19:16:01 -0800</date>
            <delta_ts>2010-02-03 18:56:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>ClipboardMac-setData.patch</filename>
            <type>text/plain</type>
            <size>3836</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Mzc1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDEtMjIgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENo
YW5nZSBDbGlwYm9hcmRNYWM6OnNldERhdGEoKSB0byBpZ25vcmUgY2FzZSBpbiBmb3JtYXQgcGFy
YW1ldGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzQwMzAKKworICAgICAgICBUZXN0OiBlZGl0aW5nL2V4ZWNDb21tYW5kL2NvcHktd2l0aG91dC1z
ZWxlY3Rpb24tY2FzZS1pbnNlbnNpdGl2ZS1mb3JtYXQuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vbWFjL0NsaXBib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvY29hVHlwZUZyb21I
VE1MQ2xpcGJvYXJkVHlwZSk6IENoYW5nZSBjbGlwYm9hcmQgdHlwZSAtPiBDb2NvYSB0eXBlIG1h
cHBpbmcgdG8gYmUKKyAgICAgICAgY2FzZS1pbnNlbnNpdGl2ZQorCiAyMDEwLTAxLTIyICBQZXRl
ciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0JKHJldmlz
aW9uIDUzNzEwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NSwxMiArNjUsMTIgQEAgYm9vbCBDbGlwYm9hcmRNYWM6Omhhc0RhdGEo
KQogICAgIAogc3RhdGljIE5TU3RyaW5nICpjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUo
Y29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIFN0cmluZyBxVHlwZSA9IHR5cGUuc3RyaXBXaGl0
ZVNwYWNlKCk7CisgICAgU3RyaW5nIHFUeXBlID0gdHlwZS5zdHJpcFdoaXRlU3BhY2UoKS5sb3dl
cigpOwogCiAgICAgLy8gdHdvIHNwZWNpYWwgY2FzZXMgZm9yIElFIGNvbXBhdGliaWxpdHkKLSAg
ICBpZiAocVR5cGUgPT0gIlRleHQiKQorICAgIGlmIChxVHlwZSA9PSAidGV4dCIpCiAgICAgICAg
IHJldHVybiBOU1N0cmluZ1Bib2FyZFR5cGU7Ci0gICAgaWYgKHFUeXBlID09ICJVUkwiKQorICAg
IGlmIChxVHlwZSA9PSAidXJsIikKICAgICAgICAgcmV0dXJuIE5TVVJMUGJvYXJkVHlwZTsKIAog
ICAgIC8vIElnbm9yZSBhbnkgdHJhaWxpbmcgY2hhcnNldCAtIEpTIHN0cmluZ3MgYXJlIFVuaWNv
ZGUsIHdoaWNoIGVuY2Fwc3VsYXRlcyB0aGUgY2hhcnNldCBpc3N1ZQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNTM3NTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMC0wMS0yMiAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
IENsaXBib2FyZE1hYzo6c2V0RGF0YSgpIHRvIGlnbm9yZSBjYXNlIGluIGZvcm1hdCBwYXJhbWV0
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDAz
MAorCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9jb3B5LXdpdGhvdXQtc2VsZWN0aW9u
LWNhc2UtaW5zZW5zaXRpdmUtZm9ybWF0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9leGVjQ29tbWFuZC9jb3B5LXdpdGhvdXQtc2VsZWN0aW9uLWNhc2UtaW5zZW5zaXRp
dmUtZm9ybWF0Lmh0bWw6IEFkZGVkLgorCiAyMDEwLTAxLTIyICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE5vIHJldmlldy4KSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvY29weS13aXRob3V0LXNlbGVjdGlvbi1jYXNlLWluc2Vu
c2l0aXZlLWZvcm1hdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC9jb3B5LXdpdGhvdXQtc2VsZWN0aW9uLWNhc2UtaW5zZW5zaXRpdmUt
Zm9ybWF0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
ZXhlY0NvbW1hbmQvY29weS13aXRob3V0LXNlbGVjdGlvbi1jYXNlLWluc2Vuc2l0aXZlLWZvcm1h
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1NVQ0NFU1MKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvY29weS13aXRob3V0LXNlbGVjdGlvbi1j
YXNlLWluc2Vuc2l0aXZlLWZvcm1hdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvY29weS13aXRob3V0LXNlbGVjdGlvbi1jYXNlLWluc2Vuc2l0aXZl
LWZvcm1hdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC9jb3B5LXdpdGhvdXQtc2VsZWN0aW9uLWNhc2UtaW5zZW5zaXRpdmUtZm9ybWF0Lmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPgorPHNjcmlwdCBzcmM9Ii4uL2Vk
aXRpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gbXljb3B5KGV2ZW50KQor
eworICAgIGV2ZW50LmNsaXBib2FyZERhdGEuc2V0RGF0YSgnVGVYdC9QbEFpTicsICJTVUNDRVNT
Iik7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30KKworZnVuY3Rpb24gbXlwYXN0ZShl
dmVudCkKK3sKKyAgICB2YXIgY2xpcCA9IGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndEV4
VC9wTGFJbicpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhU
TUwgPSBjbGlwOworICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIGV4ZWNDb3B5Q29tbWFuZCgpOworICAgIHZhciBlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpOworICAgIHNldFNlbGVjdGlvbkNvbW1hbmQoZSwgMCwgZSwg
MCk7CisgICAgZXhlY1Bhc3RlQ29tbWFuZCgpOworICAgIAorICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKK30KKworPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9J3Rlc3QoKScgb25iZWZvcmVjb3B5PSdl
dmVudC5wcmV2ZW50RGVmYXVsdCgpJyBvbmNvcHk9J215Y29weShldmVudCknIG9uYmVmb3JlcGFz
dGU9J2V2ZW50LnByZXZlbnREZWZhdWx0KCknIG9ucGFzdGU9J215cGFzdGUoZXZlbnQpJz4KKwor
PGRpdiBpZD0ncmVzdWx0JyBjb250ZW50ZWRpdGFibGU9J3RydWUnPkZBSUxVUkU8L2Rpdj4KKwor
PC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="29667"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="29668"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>47263</attachid>
            <date>2010-01-22 19:57:26 -0800</date>
            <delta_ts>2010-01-22 19:57:26 -0800</delta_ts>
            <desc>IE test case</desc>
            <filename>ie-clipboardData-setData.html</filename>
            <type>text/html</type>
            <size>307</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiI+DQogIDxoZWFkPg0KICAgIDxtZXRhIGNo
YXJzZXQ9IlVURi04Ij4NCiAgICA8c2NyaXB0Pg0KICAgICAgd2luZG93LmNsaXBib2FyZERhdGEu
c2V0RGF0YSgnVGV4dCcsICdGQUlMVVJFJyk7DQogICAgICB3aW5kb3cuY2xpcGJvYXJkRGF0YS5z
ZXREYXRhKCd0RVhUJywgJ1NVQ0NFU1MnKTsNCiAgICAgIGFsZXJ0KHdpbmRvdy5jbGlwYm9hcmRE
YXRhLmdldERhdGEoJ1RleHQnKSk7DQogICAgPC9zY3JpcHQ+DQogIDwvaGVhZD4NCiAgPGJvZHk+
DQogIDwvYm9keT4NCjwvaHRtbD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48090</attachid>
            <date>2010-02-03 18:56:49 -0800</date>
            <delta_ts>2010-06-10 20:49:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>dataTransfer.case-insensitive.patch</filename>
            <type>text/plain</type>
            <size>7816</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDMyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjMgQEAKKzIwMTAtMDItMDMgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0Bnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENo
YW5nZSBDbGlwYm9hcmQ6OnNldERhdGEoKSBpbXBsZW1lbnRhdGlvbnMgdG8gaWdub3JlIGNhc2Uu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDAzMAor
CisgICAgICAgIFRlc3Q6IGVkaXRpbmcvZXhlY0NvbW1hbmQvY29weS13aXRob3V0LXNlbGVjdGlv
bi1jYXNlLWluc2Vuc2l0aXZlLWZvcm1hdC5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9oYWlr
dS9DbGlwYm9hcmRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRIYWlrdTo6
Y2xlYXJEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEhhaWt1OjpnZXREYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEhhaWt1OjpzZXREYXRhKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29jb2FUeXBl
RnJvbUhUTUxDbGlwYm9hcmRUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9DbGlwYm9hcmRR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRRdDo6Y2xlYXJEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZFF0OjpnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNs
aXBib2FyZFF0OjpzZXREYXRhKToKKwogMjAxMC0wMi0wMyAgS3dhbmcgWXVsIFNlbyAgPHNreXVs
QGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHAJKHJldmlzaW9uIDU0
MjY3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9oYWlrdS9DbGlwYm9hcmRIYWlrdS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDExICs0OSwxMyBAQCBDbGlwYm9hcmRIYWlrdTo6Q2xpcGJvYXJkSGFp
a3UoQ2xpcGJvYXJkCiAKIHZvaWQgQ2xpcGJvYXJkSGFpa3U6OmNsZWFyRGF0YShjb25zdCBTdHJp
bmcmIHR5cGUpCiB7CisgICAgY29uc3QgU3RyaW5nJiBxVHlwZSA9IHR5cGUubG93ZXIoKTsKKwog
ICAgIGlmIChiZV9jbGlwYm9hcmQtPkxvY2soKSkgewogICAgICAgICBCTWVzc2FnZSogZGF0YSA9
IGJlX2NsaXBib2FyZC0+RGF0YSgpOwogCiAgICAgICAgIGlmIChkYXRhKSB7Ci0gICAgICAgICAg
ICBkYXRhLT5SZW1vdmVOYW1lKEJTdHJpbmcodHlwZSkuU3RyaW5nKCkpOworICAgICAgICAgICAg
ZGF0YS0+UmVtb3ZlTmFtZShCU3RyaW5nKHFUeXBlKS5TdHJpbmcoKSk7CiAgICAgICAgICAgICBi
ZV9jbGlwYm9hcmQtPkNvbW1pdCgpOwogICAgICAgICB9CiAKQEAgLTcyLDYgKzc0LDcgQEAgdm9p
ZCBDbGlwYm9hcmRIYWlrdTo6Y2xlYXJBbGxEYXRhKCkKIAogU3RyaW5nIENsaXBib2FyZEhhaWt1
OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VzcykgY29uc3QKIHsKKyAg
ICBjb25zdCBTdHJpbmcmIHFUeXBlID0gdHlwZS5sb3dlcigpOwogICAgIEJTdHJpbmcgcmVzdWx0
OwogICAgIHN1Y2Nlc3MgPSBmYWxzZTsKIApAQCAtNzksNyArODIsNyBAQCBTdHJpbmcgQ2xpcGJv
YXJkSGFpa3U6OmdldERhdGEoY29uc3QgU3RyCiAgICAgICAgIEJNZXNzYWdlKiBkYXRhID0gYmVf
Y2xpcGJvYXJkLT5EYXRhKCk7CiAKICAgICAgICAgaWYgKGRhdGEpCi0gICAgICAgICAgICBpZiAo
ZGF0YS0+RmluZFN0cmluZyhCU3RyaW5nKHR5cGUpLlN0cmluZygpLCAmcmVzdWx0KSA9PSBCX09L
KQorICAgICAgICAgICAgaWYgKGRhdGEtPkZpbmRTdHJpbmcoQlN0cmluZyhxVHlwZSkuU3RyaW5n
KCksICZyZXN1bHQpID09IEJfT0spCiAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CiAK
ICAgICAgICAgYmVfY2xpcGJvYXJkLT5VbmxvY2soKTsKQEAgLTkwLDE1ICs5MywxNiBAQCBTdHJp
bmcgQ2xpcGJvYXJkSGFpa3U6OmdldERhdGEoY29uc3QgU3RyCiAKIGJvb2wgQ2xpcGJvYXJkSGFp
a3U6OnNldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Cisg
ICAgY29uc3QgU3RyaW5nJiBxVHlwZSA9IHR5cGUubG93ZXIoKTsKICAgICBib29sIHJlc3VsdCA9
IGZhbHNlOwogCiAgICAgaWYgKGJlX2NsaXBib2FyZC0+TG9jaygpKSB7CiAgICAgICAgIEJNZXNz
YWdlKiBiZGF0YSA9IGJlX2NsaXBib2FyZC0+RGF0YSgpOwogCiAgICAgICAgIGlmIChiZGF0YSkg
ewotICAgICAgICAgICAgYmRhdGEtPlJlbW92ZU5hbWUoQlN0cmluZyh0eXBlKS5TdHJpbmcoKSk7
CisgICAgICAgICAgICBiZGF0YS0+UmVtb3ZlTmFtZShCU3RyaW5nKHFUeXBlKS5TdHJpbmcoKSk7
CiAKLSAgICAgICAgICAgIGlmIChiZGF0YS0+QWRkU3RyaW5nKEJTdHJpbmcodHlwZSkuU3RyaW5n
KCksIEJTdHJpbmcoZGF0YSkpID09IEJfT0spCisgICAgICAgICAgICBpZiAoYmRhdGEtPkFkZFN0
cmluZyhCU3RyaW5nKHFUeXBlKS5TdHJpbmcoKSwgQlN0cmluZyhkYXRhKSkgPT0gQl9PSykKICAg
ICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwogICAgICAgICB9CiAKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW0JKHJldmlzaW9uIDU0MjY3KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02NSwxMiArNjUsMTIg
QEAgYm9vbCBDbGlwYm9hcmRNYWM6Omhhc0RhdGEoKQogICAgIAogc3RhdGljIE5TU3RyaW5nICpj
b2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAg
IFN0cmluZyBxVHlwZSA9IHR5cGUuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgU3RyaW5nIHFUeXBl
ID0gdHlwZS5zdHJpcFdoaXRlU3BhY2UoKS5sb3dlcigpOwogCiAgICAgLy8gdHdvIHNwZWNpYWwg
Y2FzZXMgZm9yIElFIGNvbXBhdGliaWxpdHkKLSAgICBpZiAocVR5cGUgPT0gIlRleHQiKQorICAg
IGlmIChxVHlwZSA9PSAidGV4dCIpCiAgICAgICAgIHJldHVybiBOU1N0cmluZ1Bib2FyZFR5cGU7
Ci0gICAgaWYgKHFUeXBlID09ICJVUkwiKQorICAgIGlmIChxVHlwZSA9PSAidXJsIikKICAgICAg
ICAgcmV0dXJuIE5TVVJMUGJvYXJkVHlwZTsKIAogICAgIC8vIElnbm9yZSBhbnkgdHJhaWxpbmcg
Y2hhcnNldCAtIEpTIHN0cmluZ3MgYXJlIFVuaWNvZGUsIHdoaWNoIGVuY2Fwc3VsYXRlcyB0aGUg
Y2hhcnNldCBpc3N1ZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAJKHJldmlz
aW9uIDU0MjY3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9DbGlwYm9hcmRRdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkxLDExICs5MSwxMyBAQCBDbGlwYm9hcmRRdDo6fkNsaXBib2FyZFF0KCkK
IAogdm9pZCBDbGlwYm9hcmRRdDo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKKyAg
ICBjb25zdCBTdHJpbmcmIHFUeXBlID0gdHlwZS5sb3dlcigpOworCiAgICAgaWYgKHBvbGljeSgp
ICE9IENsaXBib2FyZFdyaXRhYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV93cml0
YWJsZURhdGEpIHsKLSAgICAgICAgbV93cml0YWJsZURhdGEtPnJlbW92ZUZvcm1hdCh0eXBlKTsK
KyAgICAgICAgbV93cml0YWJsZURhdGEtPnJlbW92ZUZvcm1hdChxVHlwZSk7CiAgICAgICAgIGlm
IChtX3dyaXRhYmxlRGF0YS0+Zm9ybWF0cygpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYg
KGlzRm9yRHJhZ2dpbmcoKSkKICAgICAgICAgICAgICAgICBkZWxldGUgbV93cml0YWJsZURhdGE7
CkBAIC0xMjQsNiArMTI2LDcgQEAgdm9pZCBDbGlwYm9hcmRRdDo6Y2xlYXJBbGxEYXRhKCkKIAog
U3RyaW5nIENsaXBib2FyZFF0OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3Vj
Y2VzcykgY29uc3QKIHsKKyAgICBjb25zdCBTdHJpbmcmIHFUeXBlID0gdHlwZS5sb3dlcigpOwog
CiAgICAgaWYgKHBvbGljeSgpICE9IENsaXBib2FyZFJlYWRhYmxlKSB7CiAgICAgICAgIHN1Y2Nl
c3MgPSBmYWxzZTsKQEAgLTEzMSwxMyArMTM0LDE1IEBAIFN0cmluZyBDbGlwYm9hcmRRdDo6Z2V0
RGF0YShjb25zdCBTdHJpbmcKICAgICB9CiAKICAgICBBU1NFUlQobV9yZWFkYWJsZURhdGEpOwot
ICAgIFFCeXRlQXJyYXkgZGF0YSA9IG1fcmVhZGFibGVEYXRhLT5kYXRhKFFTdHJpbmcodHlwZSkp
OworICAgIFFCeXRlQXJyYXkgZGF0YSA9IG1fcmVhZGFibGVEYXRhLT5kYXRhKFFTdHJpbmcocVR5
cGUpKTsKICAgICBzdWNjZXNzID0gIWRhdGEuaXNFbXB0eSgpOwogICAgIHJldHVybiBTdHJpbmco
ZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKIH0KIAogYm9vbCBDbGlwYm9hcmRRdDo6c2V0RGF0
YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKKyAgICBjb25zdCBT
dHJpbmcmIHFUeXBlID0gdHlwZS5sb3dlcigpOworCiAgICAgaWYgKHBvbGljeSgpICE9IENsaXBi
b2FyZFdyaXRhYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE0NSw3ICsxNTAsNyBA
QCBib29sIENsaXBib2FyZFF0OjpzZXREYXRhKGNvbnN0IFN0cmluZyYgCiAgICAgICAgIG1fd3Jp
dGFibGVEYXRhID0gbmV3IFFNaW1lRGF0YTsKICAgICBRQnl0ZUFycmF5IGFycmF5KHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEuY2hhcmFjdGVycygpKSwKICAgICAgICAgICAgICAg
ICAgICAgIGRhdGEubGVuZ3RoKCkqMik7Ci0gICAgbV93cml0YWJsZURhdGEtPnNldERhdGEoUVN0
cmluZyh0eXBlKSwgYXJyYXkpOworICAgIG1fd3JpdGFibGVEYXRhLT5zZXREYXRhKFFTdHJpbmco
cVR5cGUpLCBhcnJheSk7CiAjaWZuZGVmIFFUX05PX0NMSVBCT0FSRAogICAgIGlmICghaXNGb3JE
cmFnZ2luZygpKQogICAgICAgICBRQXBwbGljYXRpb246OmNsaXBib2FyZCgpLT5zZXRNaW1lRGF0
YShtX3dyaXRhYmxlRGF0YSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NDMyMCkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTAyLTAz
ICBEYW5pZWwgQ2hlbmcgIDxkY2hlbmdAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgQ2xpcGJvYXJkOjpzZXREYXRhKCkg
aW1wbGVtZW50YXRpb25zIHRvIGlnbm9yZSBjYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQwMzAKKworICAgICAgICAqIGVkaXRpbmcvZXhlY0Nv
bW1hbmQvY29weS13aXRob3V0LXNlbGVjdGlvbi1jYXNlLWluc2Vuc2l0aXZlLWZvcm1hdC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvY29weS13aXRo
b3V0LXNlbGVjdGlvbi1jYXNlLWluc2Vuc2l0aXZlLWZvcm1hdC5odG1sOiBBZGRlZC4KKwogMjAx
MC0wMi0wMyAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9jb3B5LXdpdGhvdXQtc2VsZWN0aW9uLWNhc2UtaW5zZW5zaXRpdmUtZm9y
bWF0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL2NvcHktd2l0aG91dC1zZWxlY3Rpb24tY2FzZS1pbnNlbnNpdGl2ZS1mb3JtYXQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC9jb3B5LXdpdGhvdXQtc2VsZWN0aW9uLWNhc2UtaW5zZW5zaXRpdmUtZm9ybWF0LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorU1VDQ0VTUwpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC9jb3B5LXdpdGhvdXQtc2VsZWN0aW9uLWNhc2UtaW5zZW5z
aXRpdmUtZm9ybWF0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC9jb3B5LXdpdGhvdXQtc2VsZWN0aW9uLWNhc2UtaW5zZW5zaXRpdmUtZm9ybWF0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2NvcHkt
d2l0aG91dC1zZWxlY3Rpb24tY2FzZS1pbnNlbnNpdGl2ZS1mb3JtYXQuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBteWNvcHkoZXZlbnQpCit7CisgICAgZXZl
bnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCdUZVh0L1BsQWlOJywgIlNVQ0NFU1MiKTsKKyAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOworfQorCitmdW5jdGlvbiBteXBhc3RlKGV2ZW50KQorewor
ICAgIHZhciBjbGlwID0gZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0RXhUL3BMYUluJyk7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9IGNsaXA7
CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgZXhlY0NvcHlDb21tYW5kKCk7CisgICAgdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVzdWx0Jyk7CisgICAgc2V0U2VsZWN0aW9uQ29tbWFuZChlLCAwLCBlLCAwKTsKKyAgICBl
eGVjUGFzdGVDb21tYW5kKCk7CisgICAgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworfQorCis8
L3NjcmlwdD4KKzxib2R5IG9ubG9hZD0ndGVzdCgpJyBvbmJlZm9yZWNvcHk9J2V2ZW50LnByZXZl
bnREZWZhdWx0KCknIG9uY29weT0nbXljb3B5KGV2ZW50KScgb25iZWZvcmVwYXN0ZT0nZXZlbnQu
cHJldmVudERlZmF1bHQoKScgb25wYXN0ZT0nbXlwYXN0ZShldmVudCknPgorCis8ZGl2IGlkPSdy
ZXN1bHQnIGNvbnRlbnRlZGl0YWJsZT0ndHJ1ZSc+RkFJTFVSRTwvZGl2PgorCis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>
<flag name="review"
          id="30710"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>