more details are in internal bug b/28186898 but the issue seems like when chrome is scrolled the boundaries were miscalculated. The issue is visible on both x and y scroll. Zoom seems to be ok. Android webview scroll is fine too.
reason:
the snapshot information is collected the same way for webview and chrome, however for some mysterious reason scroll was not behaving same so we were adding extra y and x offsets to our calculations. this calculation was broken.
It turned out that the reason for behavior difference is platform. since webview is a view, platform was calculating the scroll for webview and adding to the view structure. see below, the first child is created by platform, with the scroll parameter.
04-20 21:44:51.031 5903 5903 I AssistStructure: View [0,126 1080x1539] android.webkit.WebView
04-20 21:44:51.031 5903 5903 I AssistStructure: ID: #ffffffff
04-20 21:44:51.031 5903 5903 I AssistStructure: Scroll: 0,316
04-20 21:44:51.031 5903 5903 I AssistStructure: Alpha: 0.0
04-20 21:44:51.031 5903 5903 I AssistStructure: Children:
04-20 21:44:51.031 5903 5903 I AssistStructure: View [0,-316 1605x14644] android.webkit.WebView
04-20 21:44:51.032 5903 5903 I AssistStructure: ID: #ffffffff
04-20 21:44:51.032 5903 5903 I AssistStructure: Alpha: 0.0
04-20 21:44:51.032 5903 5903 I AssistStructure: Text (sel -1--1):
04-20 21:44:51.032 5903 5903 I AssistStructure: Text size: 16.0 , style: #0
04-20 21:44:51.032 5903 5903 I AssistStructure: Text color fg: #ff000000, bg: #0
04-20 21:44:51.032 5903 5903 I AssistStructure: Children:
so the fix is to ignore offsetting the scroll parameter for webview for the root node when calculating the snapshot tree in chromium but add it for chrome.
Comment 1 by sgu...@chromium.org
, Apr 20 2016