Chromium Code Reviews| Index: Source/platform/scroll/Scrollbar.cpp |
| diff --git a/Source/platform/scroll/Scrollbar.cpp b/Source/platform/scroll/Scrollbar.cpp |
| index 96b5f79c464d7bc95264e673f493a4a203a6ad2d..c5345546665bee971fe687852191fa39179c5aa0 100644 |
| --- a/Source/platform/scroll/Scrollbar.cpp |
| +++ b/Source/platform/scroll/Scrollbar.cpp |
| @@ -43,9 +43,9 @@ |
| namespace blink { |
| -PassRefPtr<Scrollbar> Scrollbar::create(ScrollableArea* scrollableArea, ScrollbarOrientation orientation, ScrollbarControlSize size) |
| +PassRefPtrWillBeRawPtr<Scrollbar> Scrollbar::create(ScrollableArea* scrollableArea, ScrollbarOrientation orientation, ScrollbarControlSize size) |
| { |
| - return adoptRef(new Scrollbar(scrollableArea, orientation, size)); |
| + return adoptRefWillBeNoop(new Scrollbar(scrollableArea, orientation, size)); |
| } |
| Scrollbar::Scrollbar(ScrollableArea* scrollableArea, ScrollbarOrientation orientation, ScrollbarControlSize controlSize, ScrollbarTheme* theme) |
| @@ -81,6 +81,11 @@ Scrollbar::Scrollbar(ScrollableArea* scrollableArea, ScrollbarOrientation orient |
| Widget::setFrameRect(IntRect(0, 0, thickness, thickness)); |
| m_currentPos = scrollableAreaCurrentPos(); |
| + |
| +#if ENABLE(OILPAN) |
| + if (m_scrollableArea) |
| + m_animator = m_scrollableArea->scrollAnimator(); |
| +#endif |
| } |
| Scrollbar::~Scrollbar() |
| @@ -88,6 +93,16 @@ Scrollbar::~Scrollbar() |
| stopTimerIfNeeded(); |
| m_theme->unregisterScrollbar(this); |
| + |
| +#if ENABLE(OILPAN) |
| + if (!m_animator) |
| + return; |
| + |
|
haraken
2014/09/26 09:19:25
Shall we add ASSERT(m_scrollableArea) ?
sof
2014/09/28 21:11:25
Sure, why not.
|
| + if (m_orientation == VerticalScrollbar) |
| + m_animator->willRemoveVerticalScrollbar(this); |
| + else |
| + m_animator->willRemoveHorizontalScrollbar(this); |
| +#endif |
| } |
| void Scrollbar::removeFromParent() |
| @@ -144,6 +159,14 @@ void Scrollbar::offsetDidChange() |
| setPressedPos(m_pressedPos + theme()->thumbPosition(this) - oldThumbPosition); |
| } |
| +void Scrollbar::disconnectFromScrollableArea() |
| +{ |
| + m_scrollableArea = nullptr; |
| +#if ENABLE(OILPAN) |
| + m_animator = nullptr; |
| +#endif |
| +} |
| + |
| void Scrollbar::setProportion(int visibleSize, int totalSize) |
| { |
| if (visibleSize == m_visibleSize && totalSize == m_totalSize) |