{ "id": "149427", "key": "TIMOB-19154", "fields": { "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "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": "19957", "description": "", "name": "Release 7.1.0", "archived": false, "released": true, "releaseDate": "2018-03-14" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2018-02-22T21:09:33.000+0000", "created": "2015-07-03T03:13:33.000+0000", "epic": { "id": 149396, "key": "TIMOB-19145", "name": "iOS: iOS 9 Updates", "summary": "iOS: iOS9 Updates", "color": { "key": "color_1" }, "done": false }, "priority": { "name": "Critical", "id": "1" }, "labels": [ "httpclient" ], "versions": [], "issuelinks": [ { "id": "48642", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "150401", "key": "TIDOC-2280", "fields": { "summary": "iOS9: Document requirements for NSAppTransportSecurity key", "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" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "48294", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "149404", "key": "TIMOB-19149", "fields": { "summary": "iOS9: Adopt IPv6 requirement for App Store Submissions", "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" } }, "priority": { "name": "Critical", "id": "1" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } } ], "assignee": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2018-02-23T16:21:22.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": "NSURLConnection methods have been deprecated in iOS9 in favor of NSURLSession. \r\n\r\nh4.WWDC 2015 reference\r\nhttps://developer.apple.com/videos/wwdc/2015/?id=711\r\n\r\nh4. NSURLConnection reference\r\nhttps://developer.apple.com/library/prerelease/ios/documentation/Cocoa/Reference/Foundation/Classes/NSURLConnection_Class/index.html#//apple_ref/doc/uid/TP40003755\r\n\r\nh4. NSURLSession reference\r\nhttps://developer.apple.com/library/prerelease/ios/documentation/Foundation/Reference/NSURLSession_class/index.html#//apple_ref/doc/uid/TP40013435\r\n\r\nh4. Affected Titanium Class\r\nhttps://github.com/appcelerator/APSHTTPClient", "attachment": [ { "id": "64790", "filename": "appcelerator.https-iphone-2.3.0.zip", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-02-01T01:24:24.000+0000", "size": 2978522, "mimeType": "application/zip" }, { "id": "56079", "filename": "Screen Shot 2015-07-03 at 11.19.15 am.png", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-07-03T03:39:16.000+0000", "size": 89745, "mimeType": "image/png" }, { "id": "56078", "filename": "Screen Shot 2015-07-03 at 11.22.50 am.png", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-07-03T03:39:16.000+0000", "size": 50639, "mimeType": "image/png" } ], "flagged": false, "summary": "iOS9: Replace NSURLConnection in Ti.Network.HTTPClient with NSURLSession", "creator": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 451, "state": "closed", "name": "2015 Sprint 16 SDK", "startDate": "2015-08-01T00:30:05.052Z", "endDate": "2015-08-15T00:30:00.000Z", "completeDate": "2015-08-17T05:55:00.386Z", "originBoardId": 114 }, { "id": 485, "state": "closed", "name": "2015 Sprint 19 SDK", "startDate": "2015-09-12T00:30:29.539Z", "endDate": "2015-09-26T00:30:00.000Z", "completeDate": "2015-09-28T02:29:14.458Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "357121", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Master PR: https://github.com/appcelerator/titanium_mobile/pull/7030\r\nAPSHTTPClient PR: https://github.com/appcelerator/APSHTTPClient/pull/26\r\n\r\nh4. Steps to Test\r\n1. Include this in in ios plist in tiapp.xml in KitchenSink\r\n{code}\r\n NSAppTransportSecurity\r\n \r\n NSAllowsArbitraryLoads\r\n \r\n \r\n{code}\r\n2. Run KitchenSink\r\n3. Go to *platform->XHR*\r\n4. Test every functionality there, except the following:\r\n- Cookies since the url is outdated.\r\n- FileDownload -> Large File Download. URL here is outdated too. It's possible to replace this one to test further. Use http://ipv4.download.thinkbroadband.com/200MB.zip\r\n\r\nh4. Expected Result\r\nEverything should work.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-07-07T08:01:32.000+0000", "updated": "2015-08-16T13:25:29.000+0000" }, { "id": "357409", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "*Note*: There should be a blog post and documentation ticket to inform titanium devs about the requirement to set NSAppTransportSecurity key in tiapp.xml.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-07-09T23:56:08.000+0000", "updated": "2015-07-09T23:56:08.000+0000" }, { "id": "359989", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "PRs merged.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-08-16T13:41:56.000+0000", "updated": "2015-08-16T13:41:56.000+0000" }, { "id": "361396", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Reopening because PRs were implemented wrongly. New PR here to revert the changes to ensure everything still works for Release 5.0.0.\r\nhttps://github.com/appcelerator/APSHTTPClient/pull/30\r\nhttps://github.com/appcelerator/titanium_mobile/pull/7078\r\nAnd pushing this to Release 5.1.0.\r\n\r\n", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-08-27T09:07:43.000+0000", "updated": "2015-08-27T09:07:43.000+0000" }, { "id": "362273", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-09-04T08:11:03.000+0000", "updated": "2015-09-08T04:11:51.000+0000" }, { "id": "362470", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "body": "APSHTTPClient PR:https://github.com/appcelerator/APSHTTPClient/pull/31\r\nMaster PR: https://github.com/appcelerator/titanium_mobile/pull/7137\r\n5_0_X PR: https://github.com/appcelerator/titanium_mobile/pull/7138\r\n\r\nMERGE AFTER 5.0.0.GA is released.", "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-09-08T04:36:49.000+0000", "updated": "2015-09-08T04:36:49.000+0000" }, { "id": "365052", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "PR's reviewed, tested & approved. Thank you Kiat!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2015-09-27T22:56:57.000+0000", "updated": "2015-09-27T22:56:57.000+0000" }, { "id": "368359", "author": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Verified fixed, using:\r\n\r\nMacOS 10.11.2 (15C27e)\r\nStudio 4.4.0.201510280736\r\nTi SDK 5.1.0.v20151028190028\r\nAppc NPM 4.2.1\r\nAppc CLI 5.1.0-38\r\nTi CLI 5.0.5\r\nAlloy 1.7.16\r\nArrow 1.3.13\r\nXcode 7.2 (7C46l)\r\nNode v0.12.7\r\nJava 1.7.0_80\r\nproduction\r\n\r\nRan the sample code and each of the tests/outputs passed or matched the expected for an iOS 9.2 device.", "updateAuthor": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2015-10-29T22:38:01.000+0000", "updated": "2015-10-29T22:38:01.000+0000" }, { "id": "374498", "author": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "updateAuthor": { "name": "cng", "key": "cng", "displayName": "Chee Kiat Ng", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2016-01-14T02:53:04.000+0000", "updated": "2016-01-14T02:53:04.000+0000" }, { "id": "390038", "author": { "name": "tom", "key": "tom", "displayName": "tom quas", "active": true, "timeZone": "Europe/Berlin" }, "body": "six months later and still critical ... more than ever. any plans to finish this one soon?\r\n\r\nsidenote: this ticket blocks us today from testing secure http/2 connections using the standard sdk; and apple's deadline is coming closer...", "updateAuthor": { "name": "tom", "key": "tom", "displayName": "tom quas", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-07-07T09:52:17.000+0000", "updated": "2016-07-07T09:54:04.000+0000" }, { "id": "391353", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "[~tom] We do understand your concerns and the priority of this ticket, but we also have to schedule it properly to match the current roadmap and tickets that are included in it. The current roadmap for this ticket is *Release 7.0.0*, but we will keep this ticket up-to-date if there is an earlier release possible. Thanks!", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2016-07-24T21:28:36.000+0000", "updated": "2016-07-24T21:28:36.000+0000" }, { "id": "427343", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "APSHTTPClient PR - https://github.com/appcelerator/APSHTTPClient/pull/40\r\nappcelerator.https PR - https://github.com/appcelerator-modules/appcelerator.https/pull/46\r\nMaster PR - https://github.com/appcelerator/titanium_mobile/pull/9366\r\n7_1_X PR - https://github.com/appcelerator/titanium_mobile/pull/9854", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-08-29T06:50:38.000+0000", "updated": "2018-02-16T21:56:09.000+0000" }, { "id": "432559", "author": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "updateAuthor": { "name": "vijaysingh", "key": "vijaysingh", "displayName": "Vijay Singh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-12-27T06:03:12.000+0000", "updated": "2017-12-27T06:03:12.000+0000" }, { "id": "432619", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "28 test-cases: https://gist.github.com/hansemannn/5021f0aaf2bcbe5ed054449912f3b92b\r\n\r\nTwo additional ones (stress-tests in successively and concurrent):\r\n\r\n*Successively*\r\n{code:js}\r\nvar NUMBER_OF_TESTS = 30;\r\n\r\nvar btn = Ti.UI.createButton({\r\n title: 'Trigger'\r\n});\r\n \r\nvar win = Ti.UI.createWindow({\r\n backgroundColor: '#fff',\r\n rightNavButton: btn\r\n});\r\n \r\nvar nav = Ti.UI.iOS.createNavigationWindow({\r\n window: win\r\n});\r\n\r\nvar list = Ti.UI.createListView();\r\n\r\nwin.add(list);\r\nbtn.addEventListener('click', runStressTest);\r\nnav.open();\r\n \r\nfunction runStressTest() {\r\n var cells = [];\r\n \r\n for (var i = 1; i <= NUMBER_OF_TESTS; i++) {\r\n cells.push({\r\n properties: {\r\n title: 'Test ' + i + ' (running)'\r\n }\r\n });\r\n }\r\n \r\n list.setSections([Ti.UI.createListSection({ items: cells })]);\r\n runTest(1);\r\n}\r\n\r\nfunction runTest(num) {\r\n function check(success) {\r\n var label = success ? 'done' : 'failed';\r\n var item = list.sections[0].getItemAt(num - 1);\r\n\r\n item.properties.title = 'Test ' + num + ' (' + label + ')';\r\n item.properties.backgroundColor = success ? 'green' : 'red';\r\n \r\n if (success) {\r\n item.properties.accessoryType = Titanium.UI.LIST_ACCESSORY_TYPE_CHECKMARK;\r\n } else {\r\n item.properties.accessoryType = Titanium.UI.LIST_ACCESSORY_TYPE_NONE;\r\n }\r\n list.sections[0].updateItemAt(num - 1, item);\r\n \r\n if (num < NUMBER_OF_TESTS) {\r\n runTest(num + 1);\r\n } else {\r\n alert('ALL DONE!');\r\n }\r\n }\r\n \r\n var url = \"http://www.appcelerator.com\";\r\n var client = Ti.Network.createHTTPClient({\r\n onload : function(e) {\r\n check(true);\r\n },\r\n onerror : function(e) {\r\n check(false)\r\n },\r\n timeout : 30000 // 30sec\r\n });\r\n\r\n client.open(\"GET\", url);\r\n client.send();\r\n}\r\n{code}\r\n\r\n*Concurrent*\r\n{code:js}\r\nvar NUMBER_OF_TESTS = 30;\r\n\r\nvar btn = Ti.UI.createButton({\r\n title: 'Trigger'\r\n});\r\n \r\nvar win = Ti.UI.createWindow({\r\n backgroundColor: '#fff',\r\n rightNavButton: btn\r\n});\r\n \r\nvar nav = Ti.UI.iOS.createNavigationWindow({\r\n window: win\r\n});\r\n\r\nvar list = Ti.UI.createListView();\r\n\r\nwin.add(list);\r\nbtn.addEventListener('click', runStressTest);\r\nnav.open();\r\n \r\nfunction runStressTest() {\r\n var cells = [];\r\n \r\n for (var i = 1; i <= NUMBER_OF_TESTS; i++) {\r\n runTest(i);\r\n cells.push({\r\n properties: {\r\n title: 'Test ' + i + ' (running)'\r\n }\r\n });\r\n }\r\n \r\n list.setSections([Ti.UI.createListSection({ items: cells })]);\r\n}\r\n\r\nfunction runTest(num) {\r\n function check(success) {\r\n var label = success ? 'done' : 'failed';\r\n var item = list.sections[0].getItemAt(num - 1);\r\n\r\n item.properties.title = 'Test ' + num + ' (' + label + ')';\r\n item.properties.backgroundColor = success ? 'green' : 'red';\r\n \r\n if (success) {\r\n item.properties.accessoryType = Titanium.UI.LIST_ACCESSORY_TYPE_CHECKMARK;\r\n } else {\r\n item.properties.accessoryType = Titanium.UI.LIST_ACCESSORY_TYPE_NONE;\r\n }\r\n list.sections[0].updateItemAt(num - 1, item);\r\n }\r\n \r\n var url = \"http://www.appcelerator.com\";\r\n var client = Ti.Network.createHTTPClient({\r\n onload : function(e) {\r\n check(true);\r\n },\r\n onerror : function(e) {\r\n check(false)\r\n },\r\n timeout : 30000 // 30sec\r\n });\r\n\r\n client.open(\"GET\", url);\r\n client.send();\r\n}\r\n{code}", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-01-02T07:51:03.000+0000", "updated": "2018-01-29T13:01:44.000+0000" }, { "id": "434791", "author": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "body": "FR Passed. Tested using all of the sample and referenced tickets in the issue ticket as well as the module examples and http test suite", "updateAuthor": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2018-02-22T21:09:33.000+0000", "updated": "2018-02-22T21:09:33.000+0000" }, { "id": "434821", "author": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Verified changes are included in SDK builds: 7.1.0.v20180222163802 & 7.2.0.v20180223044652", "updateAuthor": { "name": "ewieber", "key": "ewieber", "displayName": "Eric Wieber", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2018-02-23T16:21:22.000+0000", "updated": "2018-02-23T16:21:22.000+0000" } ], "maxResults": 16, "total": 16, "startAt": 0 } } }