Commit cbb05f39 authored by David Bokan's avatar David Bokan Committed by Commit Bot

Fix nullptr crash in DocumentToFrame

This CL checks for a null LayoutView before dereferencing it.

Also cleaned up some uses of "absolute" coordinates to the more modern
"frame".

Bug: 890961
Change-Id: Ib130981f2b5af508769f44456e957785ea8cf437
Reviewed-on: https://chromium-review.googlesource.com/c/1258603
Commit-Queue: David Bokan <bokan@chromium.org>
Reviewed-by: default avatarPhilip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#596401}
parent ced26a6d
......@@ -3238,14 +3238,21 @@ IntPoint LocalFrameView::RootFrameToDocument(
FloatPoint LocalFrameView::RootFrameToDocument(
const FloatPoint& point_in_root_frame) {
ScrollableArea* layout_viewport = LayoutViewport();
if (!layout_viewport)
return point_in_root_frame;
FloatPoint local_frame = ConvertFromRootFrame(point_in_root_frame);
return local_frame + LayoutViewport()->GetScrollOffset();
return local_frame + layout_viewport->GetScrollOffset();
}
DoublePoint LocalFrameView::DocumentToFrame(
const DoublePoint& point_in_document) const {
return point_in_document -
GetLayoutView()->GetScrollableArea()->GetScrollOffset();
ScrollableArea* layout_viewport = LayoutViewport();
if (!layout_viewport)
return point_in_document;
return point_in_document - layout_viewport->GetScrollOffset();
}
FloatPoint LocalFrameView::DocumentToFrame(
......@@ -3255,8 +3262,11 @@ FloatPoint LocalFrameView::DocumentToFrame(
LayoutPoint LocalFrameView::DocumentToFrame(
const LayoutPoint& point_in_document) const {
return point_in_document -
LayoutSize(GetLayoutView()->GetScrollableArea()->GetScrollOffset());
ScrollableArea* layout_viewport = LayoutViewport();
if (!layout_viewport)
return point_in_document;
return point_in_document - LayoutSize(layout_viewport->GetScrollOffset());
}
LayoutRect LocalFrameView::DocumentToFrame(
......@@ -3267,15 +3277,18 @@ LayoutRect LocalFrameView::DocumentToFrame(
}
LayoutPoint LocalFrameView::FrameToDocument(
const LayoutPoint& point_in_absolute) const {
return point_in_absolute +
LayoutSize(GetLayoutView()->GetScrollableArea()->GetScrollOffset());
const LayoutPoint& point_in_frame) const {
ScrollableArea* layout_viewport = LayoutViewport();
if (!layout_viewport)
return point_in_frame;
return point_in_frame + LayoutSize(layout_viewport->GetScrollOffset());
}
LayoutRect LocalFrameView::FrameToDocument(
const LayoutRect& rect_in_absolute) const {
return LayoutRect(FrameToDocument(rect_in_absolute.Location()),
rect_in_absolute.Size());
const LayoutRect& rect_in_frame) const {
return LayoutRect(FrameToDocument(rect_in_frame.Location()),
rect_in_frame.Size());
}
IntRect LocalFrameView::ConvertToContainingEmbeddedContentView(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment