Fix double-tap zoom with root-layer-scrolls

This requires fixing a few coordinate conversions. Prior to RLS, contents,
document and absolute coordinates are equivalent and they are not affected
by the scroll offset. When RLS is turned on, the LayoutView
PaintLayerScrollableArea (which is the Frame's "contents") is the same
size as the frame so contents coordinates are equivalent to absolute.

This CL disambiguates whether each call wants to use absolute coordinates
or document coordinates. For hit testing, we muse use absolute since that's
what hit testing code expects. The call to PixelSnappedBoundingBox also
returns a rect in absolute coordinates so I cleaned it up and fixed the
conversion to root frame.

The scroll offset/target position are expected by CC in document
coordinates so I changed those call sites.

Existing tests didn't catch this because they all perform the double tap
when the page isn't scrolled - in that case, document, absolute, frame,
content are all the same. I've added a test that performs a zoom in and
zoom out at a non-0 scroll offset.

Bug: 808552
Change-Id: Iea512e69ac5af349ad66e866314e9f9ebb2571a7
Reviewed-on: https://chromium-review.googlesource.com/907343
Reviewed-by: Steve Kobes <skobes@chromium.org>
Commit-Queue: David Bokan <bokan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#535827}
4 files changed