{"action":"created","comment":{"url":"https://api.github.com/repos/flutter/flutter/pulls/comments/185645745","pull_request_review_id":117078055,"id":185645745,"diff_hunk":"@@ -319,7 +380,60 @@ abstract class RenderViewportBase<ParentDataClass extends ContainerParentDataMix\n     }\n \n     // we made it without a correction, whee!\n-    return 0.0;\n+    return  0.0;","path":"packages/flutter/lib/src/rendering/viewport.dart","position":180,"original_position":180,"commit_id":"4c6367779f3f87bd03f88600c9e503749a8f7965","original_commit_id":"4c6367779f3f87bd03f88600c9e503749a8f7965","user":{"login":"Hixie","id":551196,"avatar_url":"https://avatars2.githubusercontent.com/u/551196?v=4","gravatar_id":"","url":"https://api.github.com/users/Hixie","html_url":"https://github.com/Hixie","followers_url":"https://api.github.com/users/Hixie/followers","following_url":"https://api.github.com/users/Hixie/following{/other_user}","gists_url":"https://api.github.com/users/Hixie/gists{/gist_id}","starred_url":"https://api.github.com/users/Hixie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Hixie/subscriptions","organizations_url":"https://api.github.com/users/Hixie/orgs","repos_url":"https://api.github.com/users/Hixie/repos","events_url":"https://api.github.com/users/Hixie/events{/privacy}","received_events_url":"https://api.github.com/users/Hixie/received_events","type":"User","site_admin":false},"body":"nit: unexpected extra space","created_at":"2018-05-02T21:34:52Z","updated_at":"2018-05-02T21:34:52Z","html_url":"https://github.com/flutter/flutter/pull/17021#discussion_r185645745","pull_request_url":"https://api.github.com/repos/flutter/flutter/pulls/17021","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/flutter/flutter/pulls/comments/185645745"},"html":{"href":"https://github.com/flutter/flutter/pull/17021#discussion_r185645745"},"pull_request":{"href":"https://api.github.com/repos/flutter/flutter/pulls/17021"}}},"pull_request":{"url":"https://api.github.com/repos/flutter/flutter/pulls/17021","id":184464981,"html_url":"https://github.com/flutter/flutter/pull/17021","diff_url":"https://github.com/flutter/flutter/pull/17021.diff","patch_url":"https://github.com/flutter/flutter/pull/17021.patch","issue_url":"https://api.github.com/repos/flutter/flutter/issues/17021","number":17021,"state":"open","locked":false,"title":"Implicit a11y scrolling for iOS (and caching in Viewports)","user":{"login":"goderbauer","id":1227763,"avatar_url":"https://avatars2.githubusercontent.com/u/1227763?v=4","gravatar_id":"","url":"https://api.github.com/users/goderbauer","html_url":"https://github.com/goderbauer","followers_url":"https://api.github.com/users/goderbauer/followers","following_url":"https://api.github.com/users/goderbauer/following{/other_user}","gists_url":"https://api.github.com/users/goderbauer/gists{/gist_id}","starred_url":"https://api.github.com/users/goderbauer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/goderbauer/subscriptions","organizations_url":"https://api.github.com/users/goderbauer/orgs","repos_url":"https://api.github.com/users/goderbauer/repos","events_url":"https://api.github.com/users/goderbauer/events{/privacy}","received_events_url":"https://api.github.com/users/goderbauer/received_events","type":"User","site_admin":false},"body":"## Viewport Cache\r\nAdds a `cacheExtent` to viewports, which defines an area before and after the visible part of the viewport in axis direction. Elements, that fall into this cache area, will be layouted and included in the render tree even though they are not visible (yet). They are pre-cached because they will appear in the viewport next when the user starts scrolling.\r\nSlivers are informed about the `cacheExtent` in their incoming SliverConstraints via the new `cacheOrigin` and `remainingCacheExtent` properties and they should compute a value for the new `cacheExtent` property in their SliverGeometry (see the corresponding doc comments for details).\r\n\r\nFixes https://github.com/flutter/flutter/issues/170.\r\n\r\n## Implicit a11y scrolling on iOS\r\nThe elements falling into the cache area are also included in the semantics tree, where they are marked as `hidden`. These are used on iOS to implement implicit a11y scrolling: When the user moves the focus from the last visible element in the viewport to one of these hidden elements via linear navigation (right/left swipes) the framework is asked to bring this hidden element into view and an implicit scroll action is performed (see https://github.com/flutter/engine/pull/5052).\r\nTo figure out which SemanticsNodes should be marked as hidden in the tree the viewport defines a new `semanticsClipRect` in addition to the already present `paintClipRect`. While the `paintClipRect` has the size of the viewport (the visible part), the `semanticsClipRect` is extended by the cache areas at the beginning and end of the viewport. If a SemanticsNode falls outside of the `semanticsClipRect` it is not included in the semantics tree at all because it's currently unreachable by the user. If it is inside `semanticsClipRect`, but outside of `paintClipRect` it is included in the tree and marked as hidden to enable implicit a11y scrolling. If it is inside `paintClipRect` it is included like a regular SemanticsNode.\r\n\r\nFixes https://github.com/flutter/flutter/issues/11983.\r\nFixes https://github.com/flutter/flutter/issues/17023.\r\n\r\n## Also in this PR\r\nRenderObjects that are currently not visible in the viewport are now considered offstage in tests. In order to find them with the Finders provided by the Flutter test framework you'll have to set `skipOffstage: false` on the Finder.","created_at":"2018-04-26T21:09:59Z","updated_at":"2018-05-02T21:34:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"12332142eab67fc9c8baf27312980235bb558714","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":487496476,"url":"https://api.github.com/repos/flutter/flutter/labels/cla:%20yes","name":"cla: yes","color":"ffffff","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/flutter/flutter/pulls/17021/commits","review_comments_url":"https://api.github.com/repos/flutter/flutter/pulls/17021/comments","review_comment_url":"https://api.github.com/repos/flutter/flutter/pulls/comments{/number}","comments_url":"https://api.github.com/repos/flutter/flutter/issues/17021/comments","statuses_url":"https://api.github.com/repos/flutter/flutter/statuses/4c6367779f3f87bd03f88600c9e503749a8f7965","head":{"label":"goderbauer:ios-scroll-merge","ref":"ios-scroll-merge","sha":"4c6367779f3f87bd03f88600c9e503749a8f7965","user":{"login":"goderbauer","id":1227763,"avatar_url":"https://avatars2.githubusercontent.com/u/1227763?v=4","gravatar_id":"","url":"https://api.github.com/users/goderbauer","html_url":"https://github.com/goderbauer","followers_url":"https://api.github.com/users/goderbauer/followers","following_url":"https://api.github.com/users/goderbauer/following{/other_user}","gists_url":"https://api.github.com/users/goderbauer/gists{/gist_id}","starred_url":"https://api.github.com/users/goderbauer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/goderbauer/subscriptions","organizations_url":"https://api.github.com/users/goderbauer/orgs","repos_url":"https://api.github.com/users/goderbauer/repos","events_url":"https://api.github.com/users/goderbauer/events{/privacy}","received_events_url":"https://api.github.com/users/goderbauer/received_events","type":"User","site_admin":false},"repo":{"id":77963655,"name":"flutter","full_name":"goderbauer/flutter","owner":{"login":"goderbauer","id":1227763,"avatar_url":"https://avatars2.githubusercontent.com/u/1227763?v=4","gravatar_id":"","url":"https://api.github.com/users/goderbauer","html_url":"https://github.com/goderbauer","followers_url":"https://api.github.com/users/goderbauer/followers","following_url":"https://api.github.com/users/goderbauer/following{/other_user}","gists_url":"https://api.github.com/users/goderbauer/gists{/gist_id}","starred_url":"https://api.github.com/users/goderbauer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/goderbauer/subscriptions","organizations_url":"https://api.github.com/users/goderbauer/orgs","repos_url":"https://api.github.com/users/goderbauer/repos","events_url":"https://api.github.com/users/goderbauer/events{/privacy}","received_events_url":"https://api.github.com/users/goderbauer/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/goderbauer/flutter","description":"Framework for building high-performance, high-fidelity iOS and Android apps.","fork":true,"url":"https://api.github.com/repos/goderbauer/flutter","forks_url":"https://api.github.com/repos/goderbauer/flutter/forks","keys_url":"https://api.github.com/repos/goderbauer/flutter/keys{/key_id}","collaborators_url":"https://api.github.com/repos/goderbauer/flutter/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/goderbauer/flutter/teams","hooks_url":"https://api.github.com/repos/goderbauer/flutter/hooks","issue_events_url":"https://api.github.com/repos/goderbauer/flutter/issues/events{/number}","events_url":"https://api.github.com/repos/goderbauer/flutter/events","assignees_url":"https://api.github.com/repos/goderbauer/flutter/assignees{/user}","branches_url":"https://api.github.com/repos/goderbauer/flutter/branches{/branch}","tags_url":"https://api.github.com/repos/goderbauer/flutter/tags","blobs_url":"https://api.github.com/repos/goderbauer/flutter/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/goderbauer/flutter/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/goderbauer/flutter/git/refs{/sha}","trees_url":"https://api.github.com/repos/goderbauer/flutter/git/trees{/sha}","statuses_url":"https://api.github.com/repos/goderbauer/flutter/statuses/{sha}","languages_url":"https://api.github.com/repos/goderbauer/flutter/languages","stargazers_url":"https://api.github.com/repos/goderbauer/flutter/stargazers","contributors_url":"https://api.github.com/repos/goderbauer/flutter/contributors","subscribers_url":"https://api.github.com/repos/goderbauer/flutter/subscribers","subscription_url":"https://api.github.com/repos/goderbauer/flutter/subscription","commits_url":"https://api.github.com/repos/goderbauer/flutter/commits{/sha}","git_commits_url":"https://api.github.com/repos/goderbauer/flutter/git/commits{/sha}","comments_url":"https://api.github.com/repos/goderbauer/flutter/comments{/number}","issue_comment_url":"https://api.github.com/repos/goderbauer/flutter/issues/comments{/number}","contents_url":"https://api.github.com/repos/goderbauer/flutter/contents/{+path}","compare_url":"https://api.github.com/repos/goderbauer/flutter/compare/{base}...{head}","merges_url":"https://api.github.com/repos/goderbauer/flutter/merges","archive_url":"https://api.github.com/repos/goderbauer/flutter/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/goderbauer/flutter/downloads","issues_url":"https://api.github.com/repos/goderbauer/flutter/issues{/number}","pulls_url":"https://api.github.com/repos/goderbauer/flutter/pulls{/number}","milestones_url":"https://api.github.com/repos/goderbauer/flutter/milestones{/number}","notifications_url":"https://api.github.com/repos/goderbauer/flutter/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/goderbauer/flutter/labels{/name}","releases_url":"https://api.github.com/repos/goderbauer/flutter/releases{/id}","deployments_url":"https://api.github.com/repos/goderbauer/flutter/deployments","created_at":"2017-01-03T23:58:27Z","updated_at":"2018-05-02T21:00:43Z","pushed_at":"2018-04-30T17:17:05Z","git_url":"git://github.com/goderbauer/flutter.git","ssh_url":"git@github.com:goderbauer/flutter.git","clone_url":"https://github.com/goderbauer/flutter.git","svn_url":"https://github.com/goderbauer/flutter","homepage":"https://flutter.io","size":37829,"stargazers_count":0,"watchers_count":0,"language":"Dart","has_issues":true,"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},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"flutter:master","ref":"master","sha":"adf97fb58fd60784a8756be5bf6b279d54a79fd0","user":{"login":"flutter","id":14101776,"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":31792824,"name":"flutter","full_name":"flutter/flutter","owner":{"login":"flutter","id":14101776,"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},"private":false,"html_url":"https://github.com/flutter/flutter","description":"Flutter makes it easy and fast to build beautiful mobile apps.","fork":false,"url":"https://api.github.com/repos/flutter/flutter","forks_url":"https://api.github.com/repos/flutter/flutter/forks","keys_url":"https://api.github.com/repos/flutter/flutter/keys{/key_id}","collaborators_url":"https://api.github.com/repos/flutter/flutter/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/flutter/flutter/teams","hooks_url":"https://api.github.com/repos/flutter/flutter/hooks","issue_events_url":"https://api.github.com/repos/flutter/flutter/issues/events{/number}","events_url":"https://api.github.com/repos/flutter/flutter/events","assignees_url":"https://api.github.com/repos/flutter/flutter/assignees{/user}","branches_url":"https://api.github.com/repos/flutter/flutter/branches{/branch}","tags_url":"https://api.github.com/repos/flutter/flutter/tags","blobs_url":"https://api.github.com/repos/flutter/flutter/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/flutter/flutter/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/flutter/flutter/git/refs{/sha}","trees_url":"https://api.github.com/repos/flutter/flutter/git/trees{/sha}","statuses_url":"https://api.github.com/repos/flutter/flutter/statuses/{sha}","languages_url":"https://api.github.com/repos/flutter/flutter/languages","stargazers_url":"https://api.github.com/repos/flutter/flutter/stargazers","contributors_url":"https://api.github.com/repos/flutter/flutter/contributors","subscribers_url":"https://api.github.com/repos/flutter/flutter/subscribers","subscription_url":"https://api.github.com/repos/flutter/flutter/subscription","commits_url":"https://api.github.com/repos/flutter/flutter/commits{/sha}","git_commits_url":"https://api.github.com/repos/flutter/flutter/git/commits{/sha}","comments_url":"https://api.github.com/repos/flutter/flutter/comments{/number}","issue_comment_url":"https://api.github.com/repos/flutter/flutter/issues/comments{/number}","contents_url":"https://api.github.com/repos/flutter/flutter/contents/{+path}","compare_url":"https://api.github.com/repos/flutter/flutter/compare/{base}...{head}","merges_url":"https://api.github.com/repos/flutter/flutter/merges","archive_url":"https://api.github.com/repos/flutter/flutter/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/flutter/flutter/downloads","issues_url":"https://api.github.com/repos/flutter/flutter/issues{/number}","pulls_url":"https://api.github.com/repos/flutter/flutter/pulls{/number}","milestones_url":"https://api.github.com/repos/flutter/flutter/milestones{/number}","notifications_url":"https://api.github.com/repos/flutter/flutter/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/flutter/flutter/labels{/name}","releases_url":"https://api.github.com/repos/flutter/flutter/releases{/id}","deployments_url":"https://api.github.com/repos/flutter/flutter/deployments","created_at":"2015-03-06T22:54:58Z","updated_at":"2018-05-02T21:32:07Z","pushed_at":"2018-05-02T21:33:22Z","git_url":"git://github.com/flutter/flutter.git","ssh_url":"git@github.com:flutter/flutter.git","clone_url":"https://github.com/flutter/flutter.git","svn_url":"https://github.com/flutter/flutter","homepage":"https://flutter.io","size":37957,"stargazers_count":22679,"watchers_count":22679,"language":"Dart","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1963,"mirror_url":null,"archived":false,"open_issues_count":3114,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":1963,"open_issues":3114,"watchers":22679,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/flutter/flutter/pulls/17021"},"html":{"href":"https://github.com/flutter/flutter/pull/17021"},"issue":{"href":"https://api.github.com/repos/flutter/flutter/issues/17021"},"comments":{"href":"https://api.github.com/repos/flutter/flutter/issues/17021/comments"},"review_comments":{"href":"https://api.github.com/repos/flutter/flutter/pulls/17021/comments"},"review_comment":{"href":"https://api.github.com/repos/flutter/flutter/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/flutter/flutter/pulls/17021/commits"},"statuses":{"href":"https://api.github.com/repos/flutter/flutter/statuses/4c6367779f3f87bd03f88600c9e503749a8f7965"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"Hixie"}}