{ "id": "63167", "key": "TIMOB-2535", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "15422", "description": "Release 3.3.0", "name": "Release 3.3.0", "archived": false, "released": true, "releaseDate": "2014-07-16" }, { "id": "15972", "description": "Release 3.4.0", "name": "Release 3.4.0", "archived": false, "released": true, "releaseDate": "2014-09-28" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2014-06-24T21:20:35.000+0000", "created": "2011-04-15T03:22:08.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "module_network", "parity", "qe-manualtest", "qe-testadded" ], "versions": [ { "id": "14613", "description": "Release 2.1.4", "name": "Release 2.1.4", "archived": true, "released": true, "releaseDate": "2012-11-12" }, { "id": "15593", "description": "Release 3.1.3", "name": "Release 3.1.3", "archived": true, "released": true, "releaseDate": "2013-09-18" } ], "issuelinks": [], "assignee": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "updated": "2014-08-15T23:00:43.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "I know you guys are going to re-visit XHR compliance in the future, I thought I'd throw this one in because our Android implementation supports it and it's in the spec.\r\n\r\nThere's already a drillbit test for it in network.httpclient.js (test: responseHeadersBug), but I avoid running the getAllResponseHeaders stuff if it's iphone os, until you implement it. So after you implement it, just take out the if block and - bang! - you've got your drillbit test!", "attachment": [], "flagged": false, "summary": "iOS: XHR getAllResponseHeaders() returns NSDictionary instead of String", "creator": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "closedSprints": [ { "id": 133, "state": "closed", "name": "2014 Sprint 13 SDK", "startDate": "2014-06-23T21:55:20.791Z", "endDate": "2014-07-04T00:00:00.000Z", "completeDate": "2014-07-07T17:32:18.561Z", "originBoardId": 100 } ], "comment": { "comments": [ { "id": "227407", "author": { "name": "anagesh", "key": "anagesh", "displayName": "Anirudh Nagesh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Requesting it to implement as a next feature to support consistency across all platforms.\r\nHD Ticket: APP-532487", "updateAuthor": { "name": "anagesh", "key": "anagesh", "displayName": "Anirudh Nagesh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-11-14T22:28:46.000+0000", "updated": "2012-11-14T22:29:19.000+0000" }, { "id": "308622", "author": { "name": "yuchi", "key": "yuchi", "displayName": "Pier Paolo Ramon", "active": true, "timeZone": "Europe/Berlin" }, "body": "In Titanium SDK *3.3.0.RC* {{HTTPClient#getAllResponseHeaders}} has been implemented… but in a totally wrong way. It returns a {{NSDictionary}} of headers instead of a string. While it IS a pretty cool feature it should do it with a different name, as it was before ({{allRespondeHeaders}}).\r\n\r\nThis is also a feature parity issue with Android.\r\n\r\nIMHO 3.3.3.*GA* should not ship with this issue.", "updateAuthor": { "name": "yuchi", "key": "yuchi", "displayName": "Pier Paolo Ramon", "active": true, "timeZone": "Europe/Berlin" }, "created": "2014-06-12T08:45:19.000+0000", "updated": "2014-06-12T08:46:17.000+0000" }, { "id": "310173", "author": { "name": "yuchi", "key": "yuchi", "displayName": "Pier Paolo Ramon", "active": true, "timeZone": "Europe/Berlin" }, "body": "Any info on this?", "updateAuthor": { "name": "yuchi", "key": "yuchi", "displayName": "Pier Paolo Ramon", "active": true, "timeZone": "Europe/Berlin" }, "created": "2014-06-20T14:35:41.000+0000", "updated": "2014-06-20T14:35:41.000+0000" }, { "id": "310753", "author": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "body": "h3. Test case\r\n{code}\r\nvar win = Ti.UI.createWindow();\r\nvar btn = Ti.UI.createButton({\r\n\ttitle: 'here'\r\n});\r\nbtn.addEventListener('click', function(){\r\n\tvar xhr = Ti.Network.createHTTPClient();\r\n\txhr.onload = function() {\r\n\t\tTi.API.info('--------------------');\r\n\t\tTi.API.info(this.getAllResponseHeaders());\r\n\t\tTi.API.info('--------------------');\r\n\t};\r\n\txhr.open('GET', 'http://google.com');\r\n\txhr.send();\r\n});\r\nwin.add(btn);\r\nwin.open();\r\n{code}\r\nh3. Result should be in parity with Android:\r\n{code}\r\nX-XSS-Protection:1; mode=block\r\nExpires:-1\r\nX-Frame-Options:SAMEORIGIN\r\nContent-Type:text/html; charset=ISO-8859-1\r\nP3P:CP=\"This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info.\"\r\nServer:gws\r\nAlternate-Protocol:443:quic\r\nDate:Tue, 24 Jun 2014 21:00:15 GMT\r\nCache-Control:private, max-age=0\r\nSet-Cookie:PREF=ID=bd119415e82c9847:U=463504427065f3e7:FF=0:TM=1403643614:LM=1403643615:S=bQTO_0beCluwQ_dW; expires=Thu, 23-Jun-2016 21:00:15 GMT; path=/; domain=.google.com, NID=67=KUhGTdpFS0guw-JzMx4A7lgyI59vHCJBSXIdh3n2YRTDWZMFHUnvpMjiNxLdfLSiHuaP8WXRWJaqspt7hfyvh7SlIGga_P9Gh-pr0J-x5y8Oub4WUmgHx-M8F0nF4G7o; expires=Wed, 24-Dec-2014 21:00:15 GMT; path=/; domain=.google.com; HttpOnly\r\nTransfer-Encoding:Identity\r\n{code}\r\n\r\nh3. PR\r\nMaster:\r\nhttps://github.com/appcelerator/titanium_mobile/pull/5843\r\n3_3_X\r\nhttps://github.com/appcelerator/titanium_mobile/pull/5844", "updateAuthor": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2014-06-24T21:08:27.000+0000", "updated": "2014-06-24T21:19:32.000+0000" }, { "id": "311686", "author": { "name": "sdowse", "key": "sdowse", "displayName": "Samuel Dowse", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified fixed on:\r\nMac OSX 10.9.3\r\nAppcelerator Studio, build: 3.3.0.201406271159\r\nTitanium SDK, build: 3.3.0.v20140627202512\r\nTitanium CLI, build: 3.3.0-rc4\r\niOS Device: iPad Air (7.1.1)\r\n\r\niOS output is in parity with Android:\r\n{code}X-XSS-Protection:1; mode=block\r\nExpires:-1\r\nX-Frame-Options:SAMEORIGIN\r\nContent-Type:text/html; charset=ISO-8859-1\r\nP3P:CP=\"This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info.\"\r\nServer:gws\r\nAlternate-Protocol:80:quic\r\nDate:Mon, 30 Jun 2014 20:59:54 GMT\r\nCache-Control:private, max-age=0\r\nSet-Cookie:PREF=ID=6a1009a14454a438:FF=0:TM=1404161994:LM=1404161994:S=_lX5AfwHKv39fU0u; expires=Wed, 29-Jun-2016 20:59:54 GMT; path=/; domain=.google.com, NID=67=EOay-dPkjid_hHo9gmK2q_WObmkTp3eR9QRpSLRTHC2T0usCxTeg-GiyrOP9KU9Y-Jtxm8zOZnrCHpLiwD94OFUT8kwp7DhUETfJRx1yWeF-l2_7_Bm_FuxwKhEkN6ge; expires=Tue, 30-Dec-2014 20:59:54 GMT; path=/; domain=.google.com; HttpOnly\r\nTransfer-Encoding:Identity{code}\r\nClosing.", "updateAuthor": { "name": "sdowse", "key": "sdowse", "displayName": "Samuel Dowse", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-06-30T21:03:50.000+0000", "updated": "2014-06-30T21:03:50.000+0000" } ], "maxResults": 6, "total": 6, "startAt": 0 } } }