Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(745)

Unified Diff: third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp

Issue 2841113002: Add convenience methods for PLSA visible client dimensions. (Closed)
Patch Set: comment Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
diff --git a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
index ce48c55fb9b17b064537b3b24b6160eee2b6f83b..1e2d5f0002b72c87c5df4327a4631c231a76aae4 100644
--- a/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
+++ b/third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.cpp
@@ -555,6 +555,31 @@ int PaintLayerScrollableArea::VisibleWidth() const {
return Layer()->size().Width();
}
+LayoutSize PaintLayerScrollableArea::ClientSize() const {
+ if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
+ bool is_main_frame_root_layer =
+ layer_.IsRootLayer() && Box().GetDocument().GetFrame()->IsMainFrame();
+ if (is_main_frame_root_layer) {
+ LayoutSize result(Box().GetFrameView()->GetLayoutSize());
+ result -= IntSize(VerticalScrollbarWidth(), HorizontalScrollbarHeight());
+ return result;
+ }
+ }
+ return LayoutSize(Box().ClientWidth(), Box().ClientHeight());
+}
+
+IntSize PaintLayerScrollableArea::PixelSnappedClientSize() const {
+ if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
+ bool is_main_frame_root_layer =
+ layer_.IsRootLayer() && Box().GetDocument().GetFrame()->IsMainFrame();
+ if (is_main_frame_root_layer) {
+ return ExcludeScrollbars(Box().GetFrameView()->GetLayoutSize());
+ }
+ }
+ return IntSize(Box().PixelSnappedClientWidth(),
+ Box().PixelSnappedClientHeight());
+}
+
IntSize PaintLayerScrollableArea::ContentsSize() const {
return IntSize(PixelSnappedScrollWidth(), PixelSnappedScrollHeight());
}
@@ -827,12 +852,12 @@ void PaintLayerScrollableArea::UpdateAfterLayout() {
// Set up the range (and page step/line step).
if (Scrollbar* horizontal_scrollbar = this->HorizontalScrollbar()) {
- int client_width = Box().PixelSnappedClientWidth();
+ int client_width = PixelSnappedClientSize().Width();
horizontal_scrollbar->SetProportion(client_width,
OverflowRect().Width().ToInt());
}
if (Scrollbar* vertical_scrollbar = this->VerticalScrollbar()) {
- int client_height = Box().PixelSnappedClientHeight();
+ int client_height = PixelSnappedClientSize().Height();
vertical_scrollbar->SetProportion(client_height,
OverflowRect().Height().ToInt());
}
@@ -929,14 +954,14 @@ bool PaintLayerScrollableArea::HasHorizontalOverflow() const {
// converse problem seems to happen much less frequently in practice, so we
// bias the logic towards preventing unwanted horizontal scrollbars, which
// are more common and annoying.
- int client_width = Box().PixelSnappedClientWidth();
+ int client_width = PixelSnappedClientSize().Width();
if (NeedsRelayout() && !HadVerticalScrollbarBeforeRelayout())
client_width += VerticalScrollbarWidth();
return PixelSnappedScrollWidth() > client_width;
}
bool PaintLayerScrollableArea::HasVerticalOverflow() const {
- return PixelSnappedScrollHeight() > Box().PixelSnappedClientHeight();
+ return PixelSnappedScrollHeight() > PixelSnappedClientSize().Height();
}
bool PaintLayerScrollableArea::HasScrollableHorizontalOverflow() const {
@@ -1044,12 +1069,12 @@ bool PaintLayerScrollableArea::UpdateAfterCompositingChange() {
void PaintLayerScrollableArea::UpdateAfterOverflowRecalc() {
UpdateScrollDimensions();
if (Scrollbar* horizontal_scrollbar = this->HorizontalScrollbar()) {
- int client_width = Box().PixelSnappedClientWidth();
+ int client_width = PixelSnappedClientSize().Width();
horizontal_scrollbar->SetProportion(client_width,
OverflowRect().Width().ToInt());
}
if (Scrollbar* vertical_scrollbar = this->VerticalScrollbar()) {
- int client_height = Box().PixelSnappedClientHeight();
+ int client_height = PixelSnappedClientSize().Height();
vertical_scrollbar->SetProportion(client_height,
OverflowRect().Height().ToInt());
}
@@ -1704,10 +1729,9 @@ LayoutRect PaintLayerScrollableArea::ScrollIntoView(
.AbsoluteToLocalQuad(FloatQuad(FloatRect(rect)), kUseTransforms)
.BoundingBox());
local_expose_rect.Move(-Box().BorderLeft(), -Box().BorderTop());
- LayoutRect layer_bounds(
- LayoutPoint(), LayoutSize(Box().ClientWidth(), Box().ClientHeight()));
+ LayoutRect visible_rect(LayoutPoint(), ClientSize());
LayoutRect r = ScrollAlignment::GetRectToExpose(
- layer_bounds, local_expose_rect, align_x, align_y);
+ visible_rect, local_expose_rect, align_x, align_y);
ScrollOffset old_scroll_offset = GetScrollOffset();
ScrollOffset new_scroll_offset(ClampScrollOffset(RoundedIntSize(
@@ -1717,8 +1741,8 @@ LayoutRect PaintLayerScrollableArea::ScrollIntoView(
local_expose_rect.Move(-LayoutSize(scroll_offset_difference));
LayoutRect intersect =
- LocalToAbsolute(Box(), Intersection(layer_bounds, local_expose_rect));
- if (intersect.IsEmpty() && !layer_bounds.IsEmpty() &&
+ LocalToAbsolute(Box(), Intersection(visible_rect, local_expose_rect));
+ if (intersect.IsEmpty() && !visible_rect.IsEmpty() &&
!local_expose_rect.IsEmpty()) {
return LocalToAbsolute(Box(), local_expose_rect);
}
« no previous file with comments | « third_party/WebKit/Source/core/paint/PaintLayerScrollableArea.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698