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

Side by Side Diff: third_party/WebKit/Source/core/frame/FrameView.cpp

Issue 2499853002: Fixed clip resize for document.rootScroller with inertTopControls (Closed)
Patch Set: Fixed issues + Rebase Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999 Lars Knoll <knoll@kde.org> 3 * 1999 Lars Knoll <knoll@kde.org>
4 * 1999 Antti Koivisto <koivisto@kde.org> 4 * 1999 Antti Koivisto <koivisto@kde.org>
5 * 2000 Dirk Mueller <mueller@kde.org> 5 * 2000 Dirk Mueller <mueller@kde.org>
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com)
8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com)
9 * Copyright (C) 2009 Google Inc. All rights reserved. 9 * Copyright (C) 2009 Google Inc. All rights reserved.
10 * 10 *
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 // TODO(wjmaclean): find out why scrollbars fail to resize for complex 515 // TODO(wjmaclean): find out why scrollbars fail to resize for complex
516 // subframes after changing the zoom level. For now always calling 516 // subframes after changing the zoom level. For now always calling
517 // updateScrollbarsIfNeeded() here fixes the issue, but it would be good to 517 // updateScrollbarsIfNeeded() here fixes the issue, but it would be good to
518 // discover the deeper cause of this. http://crbug.com/607987. 518 // discover the deeper cause of this. http://crbug.com/607987.
519 updateScrollbarsIfNeeded(); 519 updateScrollbarsIfNeeded();
520 520
521 frameRectsChanged(); 521 frameRectsChanged();
522 522
523 updateParentScrollableAreaSet(); 523 updateParentScrollableAreaSet();
524 524
525 if (LayoutViewItem layoutView = this->layoutViewItem()) {
526 // TODO(majidvp): It seems that this only needs to be called when size
527 // is updated ignoring any change in the location.
528 if (layoutView.usesCompositing())
529 layoutView.compositor()->frameViewDidChangeSize();
530 }
531
532 if (frameSizeChanged) { 525 if (frameSizeChanged) {
533 viewportSizeChanged(newRect.width() != oldRect.width(), 526 viewportSizeChanged(newRect.width() != oldRect.width(),
534 newRect.height() != oldRect.height()); 527 newRect.height() != oldRect.height());
535 528
536 if (m_frame->isMainFrame()) 529 if (m_frame->isMainFrame())
537 m_frame->host()->visualViewport().mainFrameDidChangeSize(); 530 m_frame->host()->visualViewport().mainFrameDidChangeSize();
538 531
539 frame().loader().restoreScrollPositionAndViewState(); 532 frame().loader().restoreScrollPositionAndViewState();
540 } 533 }
541 } 534 }
(...skipping 973 matching lines...) Expand 10 before | Expand all | Expand 10 after
1515 1508
1516 if (ScrollingCoordinator* scrollingCoordinator = 1509 if (ScrollingCoordinator* scrollingCoordinator =
1517 this->scrollingCoordinator()) 1510 this->scrollingCoordinator())
1518 scrollingCoordinator->frameViewFixedObjectsDidChange(this); 1511 scrollingCoordinator->frameViewFixedObjectsDidChange(this);
1519 } 1512 }
1520 } 1513 }
1521 1514
1522 void FrameView::viewportSizeChanged(bool widthChanged, bool heightChanged) { 1515 void FrameView::viewportSizeChanged(bool widthChanged, bool heightChanged) {
1523 DCHECK(widthChanged || heightChanged); 1516 DCHECK(widthChanged || heightChanged);
1524 1517
1518 if (LayoutViewItem layoutView = this->layoutViewItem()) {
1519 if (layoutView.usesCompositing())
1520 layoutView.compositor()->frameViewDidChangeSize();
1521 }
1522
1523 // Ensure the root scroller compositing layers update geometry in response to
1524 // the URL bar resizing.
1525 if (m_frame->isMainFrame()) {
1526 m_frame->document()
1527 ->frameHost()
1528 ->globalRootScrollerController()
1529 .mainFrameViewResized();
1530 }
1531
1525 showOverlayScrollbars(); 1532 showOverlayScrollbars();
1526 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { 1533 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) {
1527 // The background must be repainted when the FrameView is resized, even if 1534 // The background must be repainted when the FrameView is resized, even if
1528 // the initial containing block does not change (so we can't rely on layout 1535 // the initial containing block does not change (so we can't rely on layout
1529 // to issue the invalidation). This is because the background fills the 1536 // to issue the invalidation). This is because the background fills the
1530 // main GraphicsLayer, which takes the size of the layout viewport. 1537 // main GraphicsLayer, which takes the size of the layout viewport.
1531 // TODO(skobes): Paint non-fixed backgrounds into the scrolling contents 1538 // TODO(skobes): Paint non-fixed backgrounds into the scrolling contents
1532 // layer and avoid this invalidation (http://crbug.com/568847). 1539 // layer and avoid this invalidation (http://crbug.com/568847).
1533 LayoutViewItem lvi = layoutViewItem(); 1540 LayoutViewItem lvi = layoutViewItem();
1534 if (!lvi.isNull()) 1541 if (!lvi.isNull())
(...skipping 1993 matching lines...) Expand 10 before | Expand all | Expand 10 after
3528 3535
3529 void FrameView::didAddScrollbar(Scrollbar& scrollbar, 3536 void FrameView::didAddScrollbar(Scrollbar& scrollbar,
3530 ScrollbarOrientation orientation) { 3537 ScrollbarOrientation orientation) {
3531 ScrollableArea::didAddScrollbar(scrollbar, orientation); 3538 ScrollableArea::didAddScrollbar(scrollbar, orientation);
3532 } 3539 }
3533 3540
3534 void FrameView::setBrowserControlsViewportAdjustment(float adjustment) { 3541 void FrameView::setBrowserControlsViewportAdjustment(float adjustment) {
3535 m_browserControlsViewportAdjustment = adjustment; 3542 m_browserControlsViewportAdjustment = adjustment;
3536 } 3543 }
3537 3544
3545 PaintLayer* FrameView::layer() const {
3546 LayoutViewItem layoutView = layoutViewItem();
3547 if (layoutView.isNull() || !layoutView.compositor())
3548 return nullptr;
3549
3550 return layoutView.compositor()->rootLayer();
3551 }
3552
3538 IntSize FrameView::maximumScrollOffsetInt() const { 3553 IntSize FrameView::maximumScrollOffsetInt() const {
3539 // Make the same calculation as in CC's LayerImpl::MaxScrollOffset() 3554 // Make the same calculation as in CC's LayerImpl::MaxScrollOffset()
3540 // FIXME: We probably shouldn't be storing the bounds in a float. 3555 // FIXME: We probably shouldn't be storing the bounds in a float.
3541 // crbug.com/422331. 3556 // crbug.com/422331.
3542 IntSize visibleSize = 3557 IntSize visibleSize =
3543 visibleContentSize(ExcludeScrollbars) + browserControlsSize(); 3558 visibleContentSize(ExcludeScrollbars) + browserControlsSize();
3544 IntSize contentBounds = contentsSize(); 3559 IntSize contentBounds = contentsSize();
3545 IntSize maximumOffset = 3560 IntSize maximumOffset =
3546 toIntSize(-scrollOrigin() + (contentBounds - visibleSize)); 3561 toIntSize(-scrollOrigin() + (contentBounds - visibleSize));
3547 return maximumOffset.expandedTo(minimumScrollOffsetInt()); 3562 return maximumOffset.expandedTo(minimumScrollOffsetInt());
(...skipping 1031 matching lines...) Expand 10 before | Expand all | Expand 10 after
4579 DCHECK(m_frame->isMainFrame()); 4594 DCHECK(m_frame->isMainFrame());
4580 return m_initialViewportSize.width(); 4595 return m_initialViewportSize.width();
4581 } 4596 }
4582 4597
4583 int FrameView::initialViewportHeight() const { 4598 int FrameView::initialViewportHeight() const {
4584 DCHECK(m_frame->isMainFrame()); 4599 DCHECK(m_frame->isMainFrame());
4585 return m_initialViewportSize.height(); 4600 return m_initialViewportSize.height();
4586 } 4601 }
4587 4602
4588 } // namespace blink 4603 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698