{ "id": "170930", "key": "TIMOB-25705", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "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": "21199", "description": "", "name": "Release 10.0.1", "archived": false, "released": true, "releaseDate": "2021-07-28" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2021-06-07T19:00:41.000+0000", "created": "2018-01-24T22:26:50.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "2021-Q2", "TextArea", "TextField", "android", "copy", "cut", "ios", "security" ], "versions": [], "issuelinks": [], "assignee": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2021-06-07T19:00:41.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": "10202", "name": "Android", "description": "Android Platform" }, { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "*Summary:*\r\nWe should add a property to prevent the end-user from copying text from a {{Ti.Ui.TextField}} and {{Ti.UI.TextArea}}. The intention is to improve security and block accidental copying of personal information to the clipboard which can be accessed by external apps.\r\n\r\n*Proposal:*\r\nAdd boolean property \"enableCopy\", which will default to {{true}}.\r\n\r\nThe following must happen when setting this to {{false}}...\r\n* Context menu will not show: {{copy}}, {{cut}}, {{share}}\r\n* {{Command+C}} and {{Command+X}} shortcuts will be ignored.\r\n\r\n*Note:*\r\nOn Android, we can't remove the \"copy\" and \"cut\" options from:\r\n- Virtual keyboard's \"Text Editing\" section.\r\n- Landscape fullscreen edit mode's context menu.\r\n\r\nThat said, we can make the \"copy\" and \"cut\" options no-op in the above cases and block the copy.\r\n", "attachment": [ { "id": "67853", "filename": "TextAreaDisableCopyTest.js", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2021-03-25T03:11:32.000+0000", "size": 843, "mimeType": "application/x-javascript" }, { "id": "67852", "filename": "TextFieldDisableCopyTest.js", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2021-03-25T03:00:45.000+0000", "size": 1366, "mimeType": "application/x-javascript" }, { "id": "67854", "filename": "TextFieldKeyboardAdvancedTest.js", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2021-03-25T03:27:04.000+0000", "size": 9014, "mimeType": "application/x-javascript" } ], "flagged": false, "summary": "TiAPI: Add \"enableCopy\" property to TextField/TextArea", "creator": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "comment": { "comments": [ { "id": "433645", "author": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "body": "Hello, Thanks for the ticket. Our engineers will look into it. You will be notified when they decide to implement this. Thanks.", "updateAuthor": { "name": "sdarda", "key": "sdarda", "displayName": "Sharif AbuDarda", "active": false, "timeZone": "Asia/Dhaka" }, "created": "2018-01-25T05:50:01.000+0000", "updated": "2018-01-25T05:50:01.000+0000" }, { "id": "458461", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "After playing around with our native options, I've determined that there is no reliable way of completely removing Android's context menu. While we can get rid of the context menu that appears when tapping on the text or long pressing the text field, it can still be displayed via other means...\r\n* By tapping on the editor's caret.\r\n* Tapping at the end of the field on a real device.\r\n* Virtual keyboard has its own copy/paste section that we have no control over.\r\n\r\nSo, an alternative solution would be to provide a new \"enableCopy\" property, when set {{false}}, we can prevent the copy action. We'll attempt to remove the \"Copy\" menu item where we can of course so it's less confusing to the end-user (and preserve the rest of the menu items). I think this is the only good solution since we can't control the options shown to the end-user in all places, such as the Android virtual keyboard\r\n\r\nNote that I've confirmed that we can easily remove the \"Copy\" option from iOS.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2021-03-23T04:33:07.000+0000", "updated": "2021-03-23T04:34:36.000+0000" }, { "id": "458482", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR (master): https://github.com/appcelerator/titanium_mobile/pull/12657", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2021-03-25T03:43:26.000+0000", "updated": "2021-03-25T03:43:26.000+0000" }, { "id": "458739", "author": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "body": "merged PR to master, manually cherry-picked to 10_0_X branch for 10.0.1 target ", "updateAuthor": { "name": "cwilliams", "key": "cwilliams", "displayName": "Christopher Williams", "active": true, "timeZone": "America/New_York" }, "created": "2021-06-07T19:00:35.000+0000", "updated": "2021-06-07T19:00:35.000+0000" } ], "maxResults": 9, "total": 9, "startAt": 0 } } }