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

Unified Diff: third_party/WebKit/Source/core/frame/FrameView.cpp

Issue 2900513002: Move CalculateScrollbarModes from FrameView to LayoutView. (Closed)
Patch Set: Created 3 years, 7 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
Index: third_party/WebKit/Source/core/frame/FrameView.cpp
diff --git a/third_party/WebKit/Source/core/frame/FrameView.cpp b/third_party/WebKit/Source/core/frame/FrameView.cpp
index 11c41db3be93caf59a8d4ff6bf59eb1944a034a0..fe753a86be634ddff099998f25b59c9f800ca524 100644
--- a/third_party/WebKit/Source/core/frame/FrameView.cpp
+++ b/third_party/WebKit/Source/core/frame/FrameView.cpp
@@ -782,73 +782,6 @@ void FrameView::AdjustViewSizeAndLayout() {
}
}
-void FrameView::CalculateScrollbarModesFromOverflowStyle(
- const ComputedStyle* style,
- ScrollbarMode& h_mode,
- ScrollbarMode& v_mode) const {
- h_mode = v_mode = kScrollbarAuto;
-
- EOverflow overflow_x = style->OverflowX();
- EOverflow overflow_y = style->OverflowY();
-
- if (!ShouldIgnoreOverflowHidden()) {
- if (overflow_x == EOverflow::kHidden)
- h_mode = kScrollbarAlwaysOff;
- if (overflow_y == EOverflow::kHidden)
- v_mode = kScrollbarAlwaysOff;
- }
-
- if (overflow_x == EOverflow::kScroll)
- h_mode = kScrollbarAlwaysOn;
- if (overflow_y == EOverflow::kScroll)
- v_mode = kScrollbarAlwaysOn;
-}
-
-void FrameView::CalculateScrollbarModes(ScrollbarMode& h_mode,
- ScrollbarMode& v_mode) const {
-#define RETURN_SCROLLBAR_MODE(mode) \
- { \
- h_mode = v_mode = mode; \
- return; \
- }
-
- // Setting scrolling="no" on an iframe element disables scrolling.
- if (frame_->Owner() &&
- frame_->Owner()->ScrollingMode() == kScrollbarAlwaysOff)
- RETURN_SCROLLBAR_MODE(kScrollbarAlwaysOff);
-
- // Framesets can't scroll.
- Node* body = frame_->GetDocument()->body();
- if (isHTMLFrameSetElement(body) && body->GetLayoutObject())
- RETURN_SCROLLBAR_MODE(kScrollbarAlwaysOff);
-
- // Scrollbars can be disabled by FrameView::setCanHaveScrollbars.
- if (!can_have_scrollbars_)
- RETURN_SCROLLBAR_MODE(kScrollbarAlwaysOff);
-
- // This will be the LayoutObject for either the body element or the html
- // element (see Document::viewportDefiningElement).
- LayoutObject* viewport = ViewportLayoutObject();
- if (!viewport || !viewport->Style())
- RETURN_SCROLLBAR_MODE(kScrollbarAuto);
-
- if (viewport->IsSVGRoot()) {
- // Don't allow overflow to affect <img> and css backgrounds
- if (ToLayoutSVGRoot(viewport)->IsEmbeddedThroughSVGImage())
- RETURN_SCROLLBAR_MODE(kScrollbarAuto);
-
- // FIXME: evaluate if we can allow overflow for these cases too.
- // Overflow is always hidden when stand-alone SVG documents are embedded.
- if (ToLayoutSVGRoot(viewport)
- ->IsEmbeddedThroughFrameContainingSVGDocument())
- RETURN_SCROLLBAR_MODE(kScrollbarAlwaysOff);
- }
-
- CalculateScrollbarModesFromOverflowStyle(viewport->Style(), h_mode, v_mode);
-
-#undef RETURN_SCROLLBAR_MODE
-}
-
void FrameView::UpdateAcceleratedCompositingSettings() {
if (LayoutViewItem layout_view_item = this->GetLayoutViewItem())
layout_view_item.Compositor()->UpdateAcceleratedCompositingSettings();
@@ -1271,7 +1204,7 @@ void FrameView::UpdateLayout() {
ScrollbarMode h_mode;
ScrollbarMode v_mode;
- CalculateScrollbarModes(h_mode, v_mode);
+ GetLayoutView()->CalculateScrollbarModes(h_mode, v_mode);
// Now set our scrollbar state for the layout.
ScrollbarMode current_h_mode = HorizontalScrollbarMode();
@@ -2777,7 +2710,7 @@ FrameView::ScrollingReasons FrameView::GetScrollingReasons() const {
// Cover #3 and #4.
ScrollbarMode horizontal_mode;
ScrollbarMode vertical_mode;
- CalculateScrollbarModes(horizontal_mode, vertical_mode);
+ GetLayoutView()->CalculateScrollbarModes(horizontal_mode, vertical_mode);
if (horizontal_mode == kScrollbarAlwaysOff &&
vertical_mode == kScrollbarAlwaysOff)
return kNotScrollableExplicitlyDisabled;

Powered by Google App Engine
This is Rietveld 408576698