Index: third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp |
diff --git a/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp b/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp |
index 5b9880da1de221909a6418e50b6d87150edbf9a0..9768a4e66bc8573ec6f2f0f31419c83faa4ed4ae 100644 |
--- a/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp |
+++ b/third_party/WebKit/Source/platform/scroll/ScrollableArea.cpp |
@@ -73,7 +73,7 @@ float ScrollableArea::minFractionToStepWhenPaging() |
int ScrollableArea::maxOverlapBetweenPages() |
{ |
- static int maxOverlapBetweenPages = ScrollbarTheme::theme()->maxOverlapBetweenPages(); |
+ static int maxOverlapBetweenPages = ScrollbarTheme::theme().maxOverlapBetweenPages(); |
return maxOverlapBetweenPages; |
} |
@@ -101,20 +101,20 @@ void ScrollableArea::clearScrollAnimators() |
m_programmaticScrollAnimator.clear(); |
} |
-ScrollAnimatorBase* ScrollableArea::scrollAnimator() const |
+ScrollAnimatorBase& ScrollableArea::scrollAnimator() const |
{ |
if (!m_scrollAnimator) |
m_scrollAnimator = ScrollAnimatorBase::create(const_cast<ScrollableArea*>(this)); |
- return m_scrollAnimator.get(); |
+ return *m_scrollAnimator; |
} |
-ProgrammaticScrollAnimator* ScrollableArea::programmaticScrollAnimator() const |
+ProgrammaticScrollAnimator& ScrollableArea::programmaticScrollAnimator() const |
{ |
if (!m_programmaticScrollAnimator) |
m_programmaticScrollAnimator = ProgrammaticScrollAnimator::create(const_cast<ScrollableArea*>(this)); |
- return m_programmaticScrollAnimator.get(); |
+ return *m_programmaticScrollAnimator; |
} |
void ScrollableArea::setScrollOrigin(const IntPoint& origin) |
@@ -163,7 +163,7 @@ ScrollResultOneDimensional ScrollableArea::userScroll(ScrollDirectionPhysical di |
if (direction == ScrollUp || direction == ScrollLeft) |
delta = -delta; |
- return scrollAnimator()->userScroll(orientation, granularity, step, delta); |
+ return scrollAnimator().userScroll(orientation, granularity, step, delta); |
} |
void ScrollableArea::setScrollPosition(const DoublePoint& position, ScrollType scrollType, ScrollBehavior behavior) |
@@ -190,9 +190,9 @@ void ScrollableArea::setScrollPositionSingleAxis(ScrollbarOrientation orientatio |
{ |
DoublePoint newPosition; |
if (orientation == HorizontalScrollbar) |
- newPosition = DoublePoint(position, scrollAnimator()->currentPosition().y()); |
+ newPosition = DoublePoint(position, scrollAnimator().currentPosition().y()); |
else |
- newPosition = DoublePoint(scrollAnimator()->currentPosition().x(), position); |
+ newPosition = DoublePoint(scrollAnimator().currentPosition().x(), position); |
// TODO(bokan): Note, this doesn't use the derived class versions since this method is currently used |
// exclusively by code that adjusts the position by the scroll origin and the derived class versions |
@@ -205,24 +205,24 @@ void ScrollableArea::programmaticScrollHelper(const DoublePoint& position, Scrol |
cancelScrollAnimation(); |
if (scrollBehavior == ScrollBehaviorSmooth) |
- programmaticScrollAnimator()->animateToOffset(toFloatPoint(position)); |
+ programmaticScrollAnimator().animateToOffset(toFloatPoint(position)); |
else |
- programmaticScrollAnimator()->scrollToOffsetWithoutAnimation(toFloatPoint(position)); |
+ programmaticScrollAnimator().scrollToOffsetWithoutAnimation(toFloatPoint(position)); |
} |
void ScrollableArea::userScrollHelper(const DoublePoint& position, ScrollBehavior scrollBehavior) |
{ |
cancelProgrammaticScrollAnimation(); |
- double x = userInputScrollable(HorizontalScrollbar) ? position.x() : scrollAnimator()->currentPosition().x(); |
- double y = userInputScrollable(VerticalScrollbar) ? position.y() : scrollAnimator()->currentPosition().y(); |
+ double x = userInputScrollable(HorizontalScrollbar) ? position.x() : scrollAnimator().currentPosition().x(); |
+ double y = userInputScrollable(VerticalScrollbar) ? position.y() : scrollAnimator().currentPosition().y(); |
// Smooth user scrolls (keyboard, wheel clicks) are handled via the userScroll method. |
// TODO(bokan): The userScroll method should probably be modified to call this method |
// and ScrollAnimatorBase to have a simpler animateToOffset method like the |
// ProgrammaticScrollAnimator. |
ASSERT(scrollBehavior == ScrollBehaviorInstant); |
- scrollAnimator()->scrollToOffsetWithoutAnimation(FloatPoint(x, y)); |
+ scrollAnimator().scrollToOffsetWithoutAnimation(FloatPoint(x, y)); |
} |
LayoutRect ScrollableArea::scrollIntoView(const LayoutRect& rectInContent, const ScrollAlignment& alignX, const ScrollAlignment& alignY, ScrollType) |
@@ -248,20 +248,20 @@ void ScrollableArea::scrollPositionChanged(const DoublePoint& position, ScrollTy |
if (Scrollbar* horizontalScrollbar = this->horizontalScrollbar()) { |
horizontalScrollbar->offsetDidChange(); |
if (horizontalScrollbar->isOverlayScrollbar() && !hasLayerForHorizontalScrollbar()) |
- setScrollbarNeedsPaintInvalidation(horizontalScrollbar); |
+ setScrollbarNeedsPaintInvalidation(HorizontalScrollbar); |
} |
if (verticalScrollbar) { |
verticalScrollbar->offsetDidChange(); |
if (verticalScrollbar->isOverlayScrollbar() && !hasLayerForVerticalScrollbar()) |
- setScrollbarNeedsPaintInvalidation(verticalScrollbar); |
+ setScrollbarNeedsPaintInvalidation(VerticalScrollbar); |
} |
if (scrollPositionDouble() != oldPosition) { |
// FIXME: Pass in DoubleSize. crbug.com/414283. |
- scrollAnimator()->notifyContentAreaScrolled(toFloatSize(scrollPositionDouble() - oldPosition)); |
+ scrollAnimator().notifyContentAreaScrolled(toFloatSize(scrollPositionDouble() - oldPosition)); |
} |
- scrollAnimator()->setCurrentPosition(toFloatPoint(position)); |
+ scrollAnimator().setCurrentPosition(toFloatPoint(position)); |
} |
bool ScrollableArea::scrollBehaviorFromString(const String& behaviorString, ScrollBehavior& behavior) |
@@ -326,14 +326,14 @@ void ScrollableArea::mouseMovedInContentArea() const |
scrollAnimator->mouseMovedInContentArea(); |
} |
-void ScrollableArea::mouseEnteredScrollbar(Scrollbar* scrollbar) const |
+void ScrollableArea::mouseEnteredScrollbar(Scrollbar& scrollbar) const |
{ |
- scrollAnimator()->mouseEnteredScrollbar(scrollbar); |
+ scrollAnimator().mouseEnteredScrollbar(scrollbar); |
} |
-void ScrollableArea::mouseExitedScrollbar(Scrollbar* scrollbar) const |
+void ScrollableArea::mouseExitedScrollbar(Scrollbar& scrollbar) const |
{ |
- scrollAnimator()->mouseExitedScrollbar(scrollbar); |
+ scrollAnimator().mouseExitedScrollbar(scrollbar); |
} |
void ScrollableArea::contentAreaDidShow() const |
@@ -354,23 +354,23 @@ void ScrollableArea::finishCurrentScrollAnimations() const |
scrollAnimator->finishCurrentScrollAnimations(); |
} |
-void ScrollableArea::didAddScrollbar(Scrollbar* scrollbar, ScrollbarOrientation orientation) |
+void ScrollableArea::didAddScrollbar(Scrollbar& scrollbar, ScrollbarOrientation orientation) |
{ |
if (orientation == VerticalScrollbar) |
- scrollAnimator()->didAddVerticalScrollbar(scrollbar); |
+ scrollAnimator().didAddVerticalScrollbar(scrollbar); |
else |
- scrollAnimator()->didAddHorizontalScrollbar(scrollbar); |
+ scrollAnimator().didAddHorizontalScrollbar(scrollbar); |
// <rdar://problem/9797253> AppKit resets the scrollbar's style when you attach a scrollbar |
setScrollbarOverlayStyle(scrollbarOverlayStyle()); |
} |
-void ScrollableArea::willRemoveScrollbar(Scrollbar* scrollbar, ScrollbarOrientation orientation) |
+void ScrollableArea::willRemoveScrollbar(Scrollbar& scrollbar, ScrollbarOrientation orientation) |
{ |
if (orientation == VerticalScrollbar) |
- scrollAnimator()->willRemoveVerticalScrollbar(scrollbar); |
+ scrollAnimator().willRemoveVerticalScrollbar(scrollbar); |
else |
- scrollAnimator()->willRemoveHorizontalScrollbar(scrollbar); |
+ scrollAnimator().willRemoveHorizontalScrollbar(scrollbar); |
} |
void ScrollableArea::contentsResized() |
@@ -393,30 +393,24 @@ void ScrollableArea::setScrollbarOverlayStyle(ScrollbarOverlayStyle overlayStyle |
m_scrollbarOverlayStyle = overlayStyle; |
if (Scrollbar* scrollbar = horizontalScrollbar()) { |
- ScrollbarTheme::theme()->updateScrollbarOverlayStyle(scrollbar); |
- setScrollbarNeedsPaintInvalidation(scrollbar); |
+ ScrollbarTheme::theme().updateScrollbarOverlayStyle(*scrollbar); |
+ setScrollbarNeedsPaintInvalidation(HorizontalScrollbar); |
} |
if (Scrollbar* scrollbar = verticalScrollbar()) { |
- ScrollbarTheme::theme()->updateScrollbarOverlayStyle(scrollbar); |
- setScrollbarNeedsPaintInvalidation(scrollbar); |
+ ScrollbarTheme::theme().updateScrollbarOverlayStyle(*scrollbar); |
+ setScrollbarNeedsPaintInvalidation(VerticalScrollbar); |
} |
} |
-void ScrollableArea::setScrollbarNeedsPaintInvalidation(Scrollbar* scrollbar) |
+void ScrollableArea::setScrollbarNeedsPaintInvalidation(ScrollbarOrientation orientation) |
{ |
- if (scrollbar == horizontalScrollbar()) { |
+ if (orientation == HorizontalScrollbar) |
m_horizontalScrollbarNeedsPaintInvalidation = true; |
- scrollControlWasSetNeedsPaintInvalidation(); |
- return; |
- } |
- if (scrollbar == verticalScrollbar()) { |
+ else |
m_verticalScrollbarNeedsPaintInvalidation = true; |
- scrollControlWasSetNeedsPaintInvalidation(); |
- return; |
- } |
- // Otherwise the scrollbar is just created and has not been set as either |
- // horizontalScrollbar() or verticalScrollbar(). |
+ |
+ scrollControlWasSetNeedsPaintInvalidation(); |
} |
void ScrollableArea::setScrollCornerNeedsPaintInvalidation() |