Convert ScrollableArea ASSERT_NOT_REACHED virtuals
https://bugs.webkit.org/show_bug.cgi?id=93306

Reviewed by Darin Adler.

Source/WebCore:

ASSERT_NOT_REACHED is a bad way to make sure that a virtual function
gets an override, because it only fails at run-time in debug builds.

To fix this, convert the virtuals in ScrollableArea that have
ASSERT_NOT_REACHED to be either pure virtual or implemented directly
in ScrollableArea. Add implementations where necessary to make derived
classes concrete.

Additionally, consistently add OVERRIDE for virtual functions in
derived classes that override ScrollableArea methods.

* WebCore.exp.in:
* page/FrameView.h:
(FrameView):
* platform/ScrollView.h:
(ScrollView):
* platform/ScrollableArea.cpp:
(WebCore::ScrollableArea::scrollPosition):
(WebCore):
(WebCore::ScrollableArea::minimumScrollPosition):
(WebCore::ScrollableArea::maximumScrollPosition):
(WebCore::ScrollableArea::visibleContentRect):
* platform/ScrollableArea.h:
(ScrollableArea):
(WebCore::ScrollableArea::overhangAmount):
* platform/chromium/FramelessScrollView.cpp:
(WebCore::FramelessScrollView::isOnActivePage):
(WebCore):
(WebCore::FramelessScrollView::scrollableAreaBoundingBox):
* platform/chromium/FramelessScrollView.h:
(FramelessScrollView):
* platform/win/PopupMenuWin.cpp:
(WebCore::PopupMenuWin::visibleHeight):
(WebCore):
(WebCore::PopupMenuWin::visibleWidth):
(WebCore::PopupMenuWin::contentsSize):
(WebCore::PopupMenuWin::isOnActivePage):
(WebCore::PopupMenuWin::scrollableAreaBoundingBox):
* platform/win/PopupMenuWin.h:
(PopupMenuWin):
* rendering/RenderListBox.cpp:
* rendering/RenderListBox.h:
(RenderListBox):

Source/WebKit/chromium:

Add implementations where necessary to make derived classes concrete.
Add OVERRIDE for ScrollableArea functions.

* src/ScrollbarGroup.h:
(ScrollbarGroup):
(WebKit::ScrollbarGroup::scrollCornerRect):
* tests/ScrollAnimatorNoneTest.cpp:
(MockScrollableArea):

Source/WebKit/win:

Add implementations where necessary to make derived classes concrete.
Add OVERRIDE for ScrollableArea functions.

* WebScrollBar.cpp:
(WebScrollBar::visibleHeight):
(WebScrollBar::visibleWidth):
(WebScrollBar::contentsSize):
(WebScrollBar::isOnActivePage):
(WebScrollBar::scrollableAreaBoundingBox):
* WebScrollBar.h:
(WebScrollBar):

Source/WebKit2:

Add implementations where necessary to make derived classes concrete.
Add OVERRIDE for ScrollableArea functions.

* UIProcess/win/WebPopupMenuProxyWin.cpp:
(WebKit::WebPopupMenuProxyWin::visibleHeight):
(WebKit):
(WebKit::WebPopupMenuProxyWin::visibleWidth):
(WebKit::WebPopupMenuProxyWin::contentsSize):
(WebKit::WebPopupMenuProxyWin::scrollableAreaBoundingBox):
* UIProcess/win/WebPopupMenuProxyWin.h:
(WebPopupMenuProxyWin):
* WebProcess/Plugins/PDF/BuiltInPDFView.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@126444 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/platform/ScrollableArea.h b/Source/WebCore/platform/ScrollableArea.h
index 5a278a9..721ec32 100644
--- a/Source/WebCore/platform/ScrollableArea.h
+++ b/Source/WebCore/platform/ScrollableArea.h
@@ -133,27 +133,27 @@
     virtual Scrollbar* horizontalScrollbar() const { return 0; }
     virtual Scrollbar* verticalScrollbar() const { return 0; }
 
-    virtual IntPoint scrollPosition() const { ASSERT_NOT_REACHED(); return IntPoint(); }
-    virtual IntPoint minimumScrollPosition() const { ASSERT_NOT_REACHED(); return IntPoint(); }
-    virtual IntPoint maximumScrollPosition() const { ASSERT_NOT_REACHED(); return IntPoint(); }
-    virtual IntRect visibleContentRect(bool /*includeScrollbars*/ = false) const { ASSERT_NOT_REACHED(); return IntRect(); }
-    virtual int visibleHeight() const { ASSERT_NOT_REACHED(); return 0; }
-    virtual int visibleWidth() const { ASSERT_NOT_REACHED(); return 0; }
-    virtual IntSize contentsSize() const { ASSERT_NOT_REACHED(); return IntSize(); }
-    virtual IntSize overhangAmount() const { ASSERT_NOT_REACHED(); return IntSize(); }
+    virtual IntPoint scrollPosition() const;
+    virtual IntPoint minimumScrollPosition() const;
+    virtual IntPoint maximumScrollPosition() const;
+    virtual IntRect visibleContentRect(bool /*includeScrollbars*/ = false) const;
+    virtual int visibleHeight() const = 0;
+    virtual int visibleWidth() const = 0;
+    virtual IntSize contentsSize() const = 0;
+    virtual IntSize overhangAmount() const { return IntSize(); }
     virtual IntPoint currentMousePosition() const { return IntPoint(); }
 
     virtual bool shouldSuspendScrollAnimations() const { return true; }
     virtual void scrollbarStyleChanged(int /*newStyle*/, bool /*forceUpdate*/) { }
     virtual void setVisibleScrollerThumbRect(const IntRect&) { }
 
-    virtual bool isOnActivePage() const { ASSERT_NOT_REACHED(); return true; }
+    virtual bool isOnActivePage() const = 0;
     
     // Note that this only returns scrollable areas that can actually be scrolled.
     virtual ScrollableArea* enclosingScrollableArea() const = 0;
 
     // Returns the bounding box of this scrollable area, in the coordinate system of the enclosing scroll view.
-    virtual IntRect scrollableAreaBoundingBox() const { ASSERT_NOT_REACHED(); return IntRect(); }
+    virtual IntRect scrollableAreaBoundingBox() const = 0;
 
     virtual bool shouldRubberBandInDirection(ScrollDirection) const { return true; }