{"action":"created","comment":{"url":"https://api.github.com/repos/flutter/engine/pulls/comments/221005515","pull_request_review_id":159550526,"id":221005515,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyMTAwNTUxNQ==","diff_hunk":"@@ -179,6 +179,22 @@ - (void)collectRoutes:(NSMutableArray<SemanticsObject*>*)edges {\n   }\n }\n \n+- (NSString*)scrollNotification {\n+  int32_t scrollIndex = [self node].scrollIndex;\n+  int32_t scrollChildren = [self node].scrollChildren;\n+  if (scrollChildren == 0 || ![self hasChildren]) {\n+    return @\"\";\n+  }\n+  int visibleChildren = 0;\n+  for (SemanticsObject* child in self.children) {\n+    if (![child node].HasFlag(blink::SemanticsFlags::kIsHidden)) {\n+      visibleChildren += 1;\n+    }\n+  }\n+  // TODO: add translations.\n+  return [NSString stringWithFormat:@\"Showing items %d to %d of %d\", scrollIndex + 1, scrollIndex + visibleChildren, scrollChildren];","path":"shell/platform/darwin/ios/framework/Source/accessibility_bridge.mm","position":17,"original_position":17,"commit_id":"82c7bb29706d6efc3550a36dd6b26e5b837955fb","original_commit_id":"82c7bb29706d6efc3550a36dd6b26e5b837955fb","user":{"login":"jonahwilliams","id":8975114,"node_id":"MDQ6VXNlcjg5NzUxMTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/8975114?v=4","gravatar_id":"","url":"https://api.github.com/users/jonahwilliams","html_url":"https://github.com/jonahwilliams","followers_url":"https://api.github.com/users/jonahwilliams/followers","following_url":"https://api.github.com/users/jonahwilliams/following{/other_user}","gists_url":"https://api.github.com/users/jonahwilliams/gists{/gist_id}","starred_url":"https://api.github.com/users/jonahwilliams/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonahwilliams/subscriptions","organizations_url":"https://api.github.com/users/jonahwilliams/orgs","repos_url":"https://api.github.com/users/jonahwilliams/repos","events_url":"https://api.github.com/users/jonahwilliams/events{/privacy}","received_events_url":"https://api.github.com/users/jonahwilliams/received_events","type":"User","site_admin":false},"body":"Not that I could find. I can explore using an out of band message for scroll announcements for iOS, but it seems like for switches we will need an engine localized value anyway\r\n","created_at":"2018-09-27T17:11:58Z","updated_at":"2018-09-27T17:11:58Z","html_url":"https://github.com/flutter/engine/pull/6263#discussion_r221005515","pull_request_url":"https://api.github.com/repos/flutter/engine/pulls/6263","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/flutter/engine/pulls/comments/221005515"},"html":{"href":"https://github.com/flutter/engine/pull/6263#discussion_r221005515"},"pull_request":{"href":"https://api.github.com/repos/flutter/engine/pulls/6263"}},"in_reply_to_id":220994715},"pull_request":{"url":"https://api.github.com/repos/flutter/engine/pulls/6263","id":215734889,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE1NzM0ODg5","html_url":"https://github.com/flutter/engine/pull/6263","diff_url":"https://github.com/flutter/engine/pull/6263.diff","patch_url":"https://github.com/flutter/engine/pull/6263.patch","issue_url":"https://api.github.com/repos/flutter/engine/issues/6263","number":6263,"state":"open","locked":false,"title":"iOS generation of accessibility scroll notification and small bugfix in Android","user":{"login":"jonahwilliams","id":8975114,"node_id":"MDQ6VXNlcjg5NzUxMTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/8975114?v=4","gravatar_id":"","url":"https://api.github.com/users/jonahwilliams","html_url":"https://github.com/jonahwilliams","followers_url":"https://api.github.com/users/jonahwilliams/followers","following_url":"https://api.github.com/users/jonahwilliams/following{/other_user}","gists_url":"https://api.github.com/users/jonahwilliams/gists{/gist_id}","starred_url":"https://api.github.com/users/jonahwilliams/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonahwilliams/subscriptions","organizations_url":"https://api.github.com/users/jonahwilliams/orgs","repos_url":"https://api.github.com/users/jonahwilliams/repos","events_url":"https://api.github.com/users/jonahwilliams/events{/privacy}","received_events_url":"https://api.github.com/users/jonahwilliams/received_events","type":"User","site_admin":false},"body":"This does not address the issue of _how_ to get a localized value. TalkBack on Android can generate the correct notification just from the indexes/child count.\r\n\r\nSome options:\r\n- (Preferred) Add support for some trivial localizations to the engine. Since the accessibility announcements will be required by any/all flutter on iOS platforms it doesn't make sense to opt-in.\r\n\r\n- Generate a message on the framework side and use platform channels to call it out. This doesn't solve the localization problem, it just moves it somewhere else. It also works differently from the Android versions. Unlike Material/Cupertino localizations, if this localization isn't provided then only a11y modes break, which might go unnoticed. \r\n\r\n_Note: I'm not sure if it makes sense to leave an un-localized value as a placeholder for now._","created_at":"2018-09-14T23:46:26Z","updated_at":"2018-09-27T17:11:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b1a0dcb4c966150c9bc618754093cf472a666b5c","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":487933577,"node_id":"MDU6TGFiZWw0ODc5MzM1Nzc=","url":"https://api.github.com/repos/flutter/engine/labels/cla:%20yes","name":"cla: yes","color":"0e8a16","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/flutter/engine/pulls/6263/commits","review_comments_url":"https://api.github.com/repos/flutter/engine/pulls/6263/comments","review_comment_url":"https://api.github.com/repos/flutter/engine/pulls/comments{/number}","comments_url":"https://api.github.com/repos/flutter/engine/issues/6263/comments","statuses_url":"https://api.github.com/repos/flutter/engine/statuses/82c7bb29706d6efc3550a36dd6b26e5b837955fb","head":{"label":"jonahwilliams:ios_scroll_notification","ref":"ios_scroll_notification","sha":"82c7bb29706d6efc3550a36dd6b26e5b837955fb","user":{"login":"jonahwilliams","id":8975114,"node_id":"MDQ6VXNlcjg5NzUxMTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/8975114?v=4","gravatar_id":"","url":"https://api.github.com/users/jonahwilliams","html_url":"https://github.com/jonahwilliams","followers_url":"https://api.github.com/users/jonahwilliams/followers","following_url":"https://api.github.com/users/jonahwilliams/following{/other_user}","gists_url":"https://api.github.com/users/jonahwilliams/gists{/gist_id}","starred_url":"https://api.github.com/users/jonahwilliams/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonahwilliams/subscriptions","organizations_url":"https://api.github.com/users/jonahwilliams/orgs","repos_url":"https://api.github.com/users/jonahwilliams/repos","events_url":"https://api.github.com/users/jonahwilliams/events{/privacy}","received_events_url":"https://api.github.com/users/jonahwilliams/received_events","type":"User","site_admin":false},"repo":{"id":123949533,"node_id":"MDEwOlJlcG9zaXRvcnkxMjM5NDk1MzM=","name":"engine","full_name":"jonahwilliams/engine","private":false,"owner":{"login":"jonahwilliams","id":8975114,"node_id":"MDQ6VXNlcjg5NzUxMTQ=","avatar_url":"https://avatars0.githubusercontent.com/u/8975114?v=4","gravatar_id":"","url":"https://api.github.com/users/jonahwilliams","html_url":"https://github.com/jonahwilliams","followers_url":"https://api.github.com/users/jonahwilliams/followers","following_url":"https://api.github.com/users/jonahwilliams/following{/other_user}","gists_url":"https://api.github.com/users/jonahwilliams/gists{/gist_id}","starred_url":"https://api.github.com/users/jonahwilliams/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonahwilliams/subscriptions","organizations_url":"https://api.github.com/users/jonahwilliams/orgs","repos_url":"https://api.github.com/users/jonahwilliams/repos","events_url":"https://api.github.com/users/jonahwilliams/events{/privacy}","received_events_url":"https://api.github.com/users/jonahwilliams/received_events","type":"User","site_admin":false},"html_url":"https://github.com/jonahwilliams/engine","description":"The Flutter engine","fork":true,"url":"https://api.github.com/repos/jonahwilliams/engine","forks_url":"https://api.github.com/repos/jonahwilliams/engine/forks","keys_url":"https://api.github.com/repos/jonahwilliams/engine/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jonahwilliams/engine/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jonahwilliams/engine/teams","hooks_url":"https://api.github.com/repos/jonahwilliams/engine/hooks","issue_events_url":"https://api.github.com/repos/jonahwilliams/engine/issues/events{/number}","events_url":"https://api.github.com/repos/jonahwilliams/engine/events","assignees_url":"https://api.github.com/repos/jonahwilliams/engine/assignees{/user}","branches_url":"https://api.github.com/repos/jonahwilliams/engine/branches{/branch}","tags_url":"https://api.github.com/repos/jonahwilliams/engine/tags","blobs_url":"https://api.github.com/repos/jonahwilliams/engine/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jonahwilliams/engine/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jonahwilliams/engine/git/refs{/sha}","trees_url":"https://api.github.com/repos/jonahwilliams/engine/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jonahwilliams/engine/statuses/{sha}","languages_url":"https://api.github.com/repos/jonahwilliams/engine/languages","stargazers_url":"https://api.github.com/repos/jonahwilliams/engine/stargazers","contributors_url":"https://api.github.com/repos/jonahwilliams/engine/contributors","subscribers_url":"https://api.github.com/repos/jonahwilliams/engine/subscribers","subscription_url":"https://api.github.com/repos/jonahwilliams/engine/subscription","commits_url":"https://api.github.com/repos/jonahwilliams/engine/commits{/sha}","git_commits_url":"https://api.github.com/repos/jonahwilliams/engine/git/commits{/sha}","comments_url":"https://api.github.com/repos/jonahwilliams/engine/comments{/number}","issue_comment_url":"https://api.github.com/repos/jonahwilliams/engine/issues/comments{/number}","contents_url":"https://api.github.com/repos/jonahwilliams/engine/contents/{+path}","compare_url":"https://api.github.com/repos/jonahwilliams/engine/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jonahwilliams/engine/merges","archive_url":"https://api.github.com/repos/jonahwilliams/engine/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jonahwilliams/engine/downloads","issues_url":"https://api.github.com/repos/jonahwilliams/engine/issues{/number}","pulls_url":"https://api.github.com/repos/jonahwilliams/engine/pulls{/number}","milestones_url":"https://api.github.com/repos/jonahwilliams/engine/milestones{/number}","notifications_url":"https://api.github.com/repos/jonahwilliams/engine/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jonahwilliams/engine/labels{/name}","releases_url":"https://api.github.com/repos/jonahwilliams/engine/releases{/id}","deployments_url":"https://api.github.com/repos/jonahwilliams/engine/deployments","created_at":"2018-03-05T16:49:04Z","updated_at":"2018-03-05T16:49:10Z","pushed_at":"2018-09-27T00:16:53Z","git_url":"git://github.com/jonahwilliams/engine.git","ssh_url":"git@github.com:jonahwilliams/engine.git","clone_url":"https://github.com/jonahwilliams/engine.git","svn_url":"https://github.com/jonahwilliams/engine","homepage":"http://flutter.io","size":127313,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"flutter:master","ref":"master","sha":"45696e72f6877403e0a2f6f4ea215fd794fddeff","user":{"login":"flutter","id":14101776,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MTAxNzc2","avatar_url":"https://avatars3.githubusercontent.com/u/14101776?v=4","gravatar_id":"","url":"https://api.github.com/users/flutter","html_url":"https://github.com/flutter","followers_url":"https://api.github.com/users/flutter/followers","following_url":"https://api.github.com/users/flutter/following{/other_user}","gists_url":"https://api.github.com/users/flutter/gists{/gist_id}","starred_url":"https://api.github.com/users/flutter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flutter/subscriptions","organizations_url":"https://api.github.com/users/flutter/orgs","repos_url":"https://api.github.com/users/flutter/repos","events_url":"https://api.github.com/users/flutter/events{/privacy}","received_events_url":"https://api.github.com/users/flutter/received_events","type":"Organization","site_admin":false},"repo":{"id":39211337,"node_id":"MDEwOlJlcG9zaXRvcnkzOTIxMTMzNw==","name":"engine","full_name":"flutter/engine","private":false,"owner":{"login":"flutter","id":14101776,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MTAxNzc2","avatar_url":"https://avatars3.githubusercontent.com/u/14101776?v=4","gravatar_id":"","url":"https://api.github.com/users/flutter","html_url":"https://github.com/flutter","followers_url":"https://api.github.com/users/flutter/followers","following_url":"https://api.github.com/users/flutter/following{/other_user}","gists_url":"https://api.github.com/users/flutter/gists{/gist_id}","starred_url":"https://api.github.com/users/flutter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/flutter/subscriptions","organizations_url":"https://api.github.com/users/flutter/orgs","repos_url":"https://api.github.com/users/flutter/repos","events_url":"https://api.github.com/users/flutter/events{/privacy}","received_events_url":"https://api.github.com/users/flutter/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/flutter/engine","description":"The Flutter engine","fork":false,"url":"https://api.github.com/repos/flutter/engine","forks_url":"https://api.github.com/repos/flutter/engine/forks","keys_url":"https://api.github.com/repos/flutter/engine/keys{/key_id}","collaborators_url":"https://api.github.com/repos/flutter/engine/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/flutter/engine/teams","hooks_url":"https://api.github.com/repos/flutter/engine/hooks","issue_events_url":"https://api.github.com/repos/flutter/engine/issues/events{/number}","events_url":"https://api.github.com/repos/flutter/engine/events","assignees_url":"https://api.github.com/repos/flutter/engine/assignees{/user}","branches_url":"https://api.github.com/repos/flutter/engine/branches{/branch}","tags_url":"https://api.github.com/repos/flutter/engine/tags","blobs_url":"https://api.github.com/repos/flutter/engine/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/flutter/engine/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/flutter/engine/git/refs{/sha}","trees_url":"https://api.github.com/repos/flutter/engine/git/trees{/sha}","statuses_url":"https://api.github.com/repos/flutter/engine/statuses/{sha}","languages_url":"https://api.github.com/repos/flutter/engine/languages","stargazers_url":"https://api.github.com/repos/flutter/engine/stargazers","contributors_url":"https://api.github.com/repos/flutter/engine/contributors","subscribers_url":"https://api.github.com/repos/flutter/engine/subscribers","subscription_url":"https://api.github.com/repos/flutter/engine/subscription","commits_url":"https://api.github.com/repos/flutter/engine/commits{/sha}","git_commits_url":"https://api.github.com/repos/flutter/engine/git/commits{/sha}","comments_url":"https://api.github.com/repos/flutter/engine/comments{/number}","issue_comment_url":"https://api.github.com/repos/flutter/engine/issues/comments{/number}","contents_url":"https://api.github.com/repos/flutter/engine/contents/{+path}","compare_url":"https://api.github.com/repos/flutter/engine/compare/{base}...{head}","merges_url":"https://api.github.com/repos/flutter/engine/merges","archive_url":"https://api.github.com/repos/flutter/engine/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/flutter/engine/downloads","issues_url":"https://api.github.com/repos/flutter/engine/issues{/number}","pulls_url":"https://api.github.com/repos/flutter/engine/pulls{/number}","milestones_url":"https://api.github.com/repos/flutter/engine/milestones{/number}","notifications_url":"https://api.github.com/repos/flutter/engine/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/flutter/engine/labels{/name}","releases_url":"https://api.github.com/repos/flutter/engine/releases{/id}","deployments_url":"https://api.github.com/repos/flutter/engine/deployments","created_at":"2015-07-16T17:39:56Z","updated_at":"2018-09-27T16:45:23Z","pushed_at":"2018-09-27T16:45:18Z","git_url":"git://github.com/flutter/engine.git","ssh_url":"git@github.com:flutter/engine.git","clone_url":"https://github.com/flutter/engine.git","svn_url":"https://github.com/flutter/engine","homepage":"http://flutter.io","size":127600,"stargazers_count":1798,"watchers_count":1798,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":645,"mirror_url":null,"archived":false,"open_issues_count":16,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":645,"open_issues":16,"watchers":1798,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/flutter/engine/pulls/6263"},"html":{"href":"https://github.com/flutter/engine/pull/6263"},"issue":{"href":"https://api.github.com/repos/flutter/engine/issues/6263"},"comments":{"href":"https://api.github.com/repos/flutter/engine/issues/6263/comments"},"review_comments":{"href":"https://api.github.com/repos/flutter/engine/pulls/6263/comments"},"review_comment":{"href":"https://api.github.com/repos/flutter/engine/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/flutter/engine/pulls/6263/commits"},"statuses":{"href":"https://api.github.com/repos/flutter/engine/statuses/82c7bb29706d6efc3550a36dd6b26e5b837955fb"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jonahwilliams"}}