Title: [92811] trunk/Source/WebKit/chromium
Revision
92811
Author
[email protected]
Date
2011-08-10 18:17:16 -0700 (Wed, 10 Aug 2011)

Log Message

[chromium] Update WebScrollbar so that it works with overlay scrollbars on Lion
https://bugs.webkit.org/show_bug.cgi?id=66008

Reviewed by James Robinson.

* WebKit.gyp:
* public/WebScrollbar.h:
* public/WebScrollbarClient.h:
* src/ScrollbarGroup.cpp: Added.
(WebKit::ScrollbarGroup::ScrollbarGroup):
(WebKit::ScrollbarGroup::~ScrollbarGroup):
(WebKit::ScrollbarGroup::scrollbarCreated):
(WebKit::ScrollbarGroup::scrollbarDestroyed):
(WebKit::ScrollbarGroup::setLastMousePosition):
(WebKit::ScrollbarGroup::scrollSize):
(WebKit::ScrollbarGroup::scrollPosition):
(WebKit::ScrollbarGroup::setScrollOffset):
(WebKit::ScrollbarGroup::invalidateScrollbarRect):
(WebKit::ScrollbarGroup::invalidateScrollCornerRect):
(WebKit::ScrollbarGroup::isActive):
(WebKit::ScrollbarGroup::enclosingScrollableArea):
(WebKit::ScrollbarGroup::isScrollCornerVisible):
(WebKit::ScrollbarGroup::getTickmarks):
(WebKit::ScrollbarGroup::convertFromContainingViewToScrollbar):
(WebKit::ScrollbarGroup::horizontalScrollbar):
(WebKit::ScrollbarGroup::verticalScrollbar):
(WebKit::ScrollbarGroup::minimumScrollPosition):
(WebKit::ScrollbarGroup::maximumScrollPosition):
(WebKit::ScrollbarGroup::visibleHeight):
(WebKit::ScrollbarGroup::visibleWidth):
(WebKit::ScrollbarGroup::contentsSize):
(WebKit::ScrollbarGroup::overhangAmount):
(WebKit::ScrollbarGroup::currentMousePosition):
(WebKit::ScrollbarGroup::shouldSuspendScrollAnimations):
(WebKit::ScrollbarGroup::scrollbarStyleChanged):
(WebKit::ScrollbarGroup::isOnActivePage):
(WebKit::ScrollbarGroup::disconnectFromPage):
* src/ScrollbarGroup.h: Added.
(WebKit::ScrollbarGroup::scrollCornerRect):
* src/WebPluginContainerImpl.cpp:
(WebKit::WebPluginContainerImpl::paint):
(WebKit::WebPluginContainerImpl::reportGeometry):
(WebKit::WebPluginContainerImpl::scrollbarGroup):
(WebKit::WebPluginContainerImpl::willStartLiveResize):
(WebKit::WebPluginContainerImpl::willEndLiveResize):
(WebKit::WebPluginContainerImpl::handleMouseEvent):
* src/WebPluginContainerImpl.h:
* src/WebScrollbarImpl.cpp:
(WebKit::WebScrollbar::createForPlugin):
(WebKit::WebScrollbarImpl::WebScrollbarImpl):
(WebKit::WebScrollbarImpl::~WebScrollbarImpl):
(WebKit::WebScrollbarImpl::setScrollOffset):
(WebKit::WebScrollbarImpl::invalidateScrollbarRect):
(WebKit::WebScrollbarImpl::getTickmarks):
(WebKit::WebScrollbarImpl::convertFromContainingViewToScrollbar):
(WebKit::WebScrollbarImpl::scrollbarStyleChanged):
(WebKit::WebScrollbarImpl::isOverlay):
(WebKit::WebScrollbarImpl::setValue):
(WebKit::WebScrollbarImpl::scroll):
(WebKit::WebScrollbarImpl::onMouseMove):
(WebKit::WebScrollbarImpl::onMouseLeave):
(WebKit::WebScrollbarImpl::onMouseWheel):
(WebKit::WebScrollbarImpl::onKeyDown):
* src/WebScrollbarImpl.h:
(WebKit::WebScrollbarImpl::scrollOffset):
(WebKit::WebScrollbarImpl::scrollbar):
* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::willStartLiveResize):
(WebKit::WebViewImpl::willEndLiveResize):

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebKit/chromium/ChangeLog (92810 => 92811)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-08-11 01:08:42 UTC (rev 92810)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-08-11 01:17:16 UTC (rev 92811)
@@ -1,3 +1,75 @@
+2011-08-10  John Abd-El-Malek  <[email protected]>
+
+        [chromium] Update WebScrollbar so that it works with overlay scrollbars on Lion
+        https://bugs.webkit.org/show_bug.cgi?id=66008
+
+        Reviewed by James Robinson.
+
+        * WebKit.gyp:
+        * public/WebScrollbar.h:
+        * public/WebScrollbarClient.h:
+        * src/ScrollbarGroup.cpp: Added.
+        (WebKit::ScrollbarGroup::ScrollbarGroup):
+        (WebKit::ScrollbarGroup::~ScrollbarGroup):
+        (WebKit::ScrollbarGroup::scrollbarCreated):
+        (WebKit::ScrollbarGroup::scrollbarDestroyed):
+        (WebKit::ScrollbarGroup::setLastMousePosition):
+        (WebKit::ScrollbarGroup::scrollSize):
+        (WebKit::ScrollbarGroup::scrollPosition):
+        (WebKit::ScrollbarGroup::setScrollOffset):
+        (WebKit::ScrollbarGroup::invalidateScrollbarRect):
+        (WebKit::ScrollbarGroup::invalidateScrollCornerRect):
+        (WebKit::ScrollbarGroup::isActive):
+        (WebKit::ScrollbarGroup::enclosingScrollableArea):
+        (WebKit::ScrollbarGroup::isScrollCornerVisible):
+        (WebKit::ScrollbarGroup::getTickmarks):
+        (WebKit::ScrollbarGroup::convertFromContainingViewToScrollbar):
+        (WebKit::ScrollbarGroup::horizontalScrollbar):
+        (WebKit::ScrollbarGroup::verticalScrollbar):
+        (WebKit::ScrollbarGroup::minimumScrollPosition):
+        (WebKit::ScrollbarGroup::maximumScrollPosition):
+        (WebKit::ScrollbarGroup::visibleHeight):
+        (WebKit::ScrollbarGroup::visibleWidth):
+        (WebKit::ScrollbarGroup::contentsSize):
+        (WebKit::ScrollbarGroup::overhangAmount):
+        (WebKit::ScrollbarGroup::currentMousePosition):
+        (WebKit::ScrollbarGroup::shouldSuspendScrollAnimations):
+        (WebKit::ScrollbarGroup::scrollbarStyleChanged):
+        (WebKit::ScrollbarGroup::isOnActivePage):
+        (WebKit::ScrollbarGroup::disconnectFromPage):
+        * src/ScrollbarGroup.h: Added.
+        (WebKit::ScrollbarGroup::scrollCornerRect):
+        * src/WebPluginContainerImpl.cpp:
+        (WebKit::WebPluginContainerImpl::paint):
+        (WebKit::WebPluginContainerImpl::reportGeometry):
+        (WebKit::WebPluginContainerImpl::scrollbarGroup):
+        (WebKit::WebPluginContainerImpl::willStartLiveResize):
+        (WebKit::WebPluginContainerImpl::willEndLiveResize):
+        (WebKit::WebPluginContainerImpl::handleMouseEvent):
+        * src/WebPluginContainerImpl.h:
+        * src/WebScrollbarImpl.cpp:
+        (WebKit::WebScrollbar::createForPlugin):
+        (WebKit::WebScrollbarImpl::WebScrollbarImpl):
+        (WebKit::WebScrollbarImpl::~WebScrollbarImpl):
+        (WebKit::WebScrollbarImpl::setScrollOffset):
+        (WebKit::WebScrollbarImpl::invalidateScrollbarRect):
+        (WebKit::WebScrollbarImpl::getTickmarks):
+        (WebKit::WebScrollbarImpl::convertFromContainingViewToScrollbar):
+        (WebKit::WebScrollbarImpl::scrollbarStyleChanged):
+        (WebKit::WebScrollbarImpl::isOverlay):
+        (WebKit::WebScrollbarImpl::setValue):
+        (WebKit::WebScrollbarImpl::scroll):
+        (WebKit::WebScrollbarImpl::onMouseMove):
+        (WebKit::WebScrollbarImpl::onMouseLeave):
+        (WebKit::WebScrollbarImpl::onMouseWheel):
+        (WebKit::WebScrollbarImpl::onKeyDown):
+        * src/WebScrollbarImpl.h:
+        (WebKit::WebScrollbarImpl::scrollOffset):
+        (WebKit::WebScrollbarImpl::scrollbar):
+        * src/WebViewImpl.cpp:
+        (WebKit::WebViewImpl::willStartLiveResize):
+        (WebKit::WebViewImpl::willEndLiveResize):
+
 2011-08-10  Dmitry Lomov  <[email protected]>
         
         [Chromium] Decouple implementation of allowFileSystem, openFileSystem and allowDatabase from WebWorkerBase.

Modified: trunk/Source/WebKit/chromium/DEPS (92810 => 92811)


--- trunk/Source/WebKit/chromium/DEPS	2011-08-11 01:08:42 UTC (rev 92810)
+++ trunk/Source/WebKit/chromium/DEPS	2011-08-11 01:17:16 UTC (rev 92811)
@@ -32,7 +32,7 @@
 
 vars = {
   'chromium_svn': 'http://src.chromium.org/svn/trunk/src',
-  'chromium_rev': '96009'
+  'chromium_rev': '96244'
 }
 
 deps = {

Modified: trunk/Source/WebKit/chromium/WebKit.gyp (92810 => 92811)


--- trunk/Source/WebKit/chromium/WebKit.gyp	2011-08-11 01:08:42 UTC (rev 92810)
+++ trunk/Source/WebKit/chromium/WebKit.gyp	2011-08-11 01:17:16 UTC (rev 92811)
@@ -398,6 +398,8 @@
                 'src/PlatformMessagePortChannel.cpp',
                 'src/PlatformMessagePortChannel.h',
                 'src/ResourceHandle.cpp',
+                'src/ScrollbarGroup.cpp',
+                'src/ScrollbarGroup.h',
                 'src/SharedWorkerRepository.cpp',
                 'src/SocketStreamHandle.cpp',
                 'src/SpeechInputClientImpl.cpp',

Modified: trunk/Source/WebKit/chromium/public/WebScrollbar.h (92810 => 92811)


--- trunk/Source/WebKit/chromium/public/WebScrollbar.h	2011-08-11 01:08:42 UTC (rev 92810)
+++ trunk/Source/WebKit/chromium/public/WebScrollbar.h	2011-08-11 01:17:16 UTC (rev 92811)
@@ -34,9 +34,13 @@
 #include "WebCanvas.h"
 #include "WebCommon.h"
 
+// TODO(jam): take this out once Chrome rolls this revision of WebKit.
+#define WEBSCROLLBAR_SUPPORTS_OVERLAY
+
 namespace WebKit {
 
 class WebInputEvent;
+class WebPluginContainer;
 class WebScrollbarClient;
 struct WebRect;
 
@@ -59,14 +63,20 @@
         ScrollByPixel
     };
 
-    // Creates a WebScrollbar.
-    WEBKIT_EXPORT static WebScrollbar* create(WebScrollbarClient*, Orientation);
+    // Creates a WebScrollbar for use by a plugin. The plugin container and
+    // client are guaranteed to outlive this object.
+    WEBKIT_EXPORT static WebScrollbar* createForPlugin(Orientation,
+                                                       WebPluginContainer*,
+                                                       WebScrollbarClient*);
 
     virtual ~WebScrollbar() {}
 
     // Gets the thickness of the scrollbar in pixels.
     WEBKIT_EXPORT static int defaultThickness();
 
+    // Return true if this is an overlay scrollbar.
+    virtual bool isOverlay() const = 0;
+
     // Sets the rectangle of the scrollbar.
     virtual void setLocation(const WebRect&) = 0;
 

Modified: trunk/Source/WebKit/chromium/public/WebScrollbarClient.h (92810 => 92811)


--- trunk/Source/WebKit/chromium/public/WebScrollbarClient.h	2011-08-11 01:08:42 UTC (rev 92810)
+++ trunk/Source/WebKit/chromium/public/WebScrollbarClient.h	2011-08-11 01:17:16 UTC (rev 92811)
@@ -40,6 +40,7 @@
 class WebScrollbarClient {
 public:
     virtual void valueChanged(WebScrollbar*) = 0;
+    virtual void overlayChanged(WebScrollbar*) = 0;
     virtual void invalidateScrollbarRect(WebScrollbar*, const WebRect&) = 0;
     virtual void getTickmarks(WebScrollbar*, WebVector<WebRect>*) const = 0;
 };

Added: trunk/Source/WebKit/chromium/src/ScrollbarGroup.cpp (0 => 92811)


--- trunk/Source/WebKit/chromium/src/ScrollbarGroup.cpp	                        (rev 0)
+++ trunk/Source/WebKit/chromium/src/ScrollbarGroup.cpp	2011-08-11 01:17:16 UTC (rev 92811)
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "ScrollbarGroup.h"
+
+#include "Page.h"
+#include "Scrollbar.h"
+#include "ScrollbarTheme.h"
+#include "WebRect.h"
+#include "WebScrollbarImpl.h"
+
+using namespace WebCore;
+
+namespace WebKit {
+
+ScrollbarGroup::ScrollbarGroup(Page* page)
+    : m_page(page)
+    , m_horizontalScrollbar(0)
+    , m_verticalScrollbar(0)
+{
+    m_page->addScrollableArea(this);
+}
+
+ScrollbarGroup::~ScrollbarGroup()
+{
+    ASSERT(!m_horizontalScrollbar);
+    ASSERT(!m_verticalScrollbar);
+    if (m_page)
+        m_page->removeScrollableArea(this);
+}
+
+void ScrollbarGroup::scrollbarCreated(WebScrollbarImpl* scrollbar)
+{
+    if (scrollbar->scrollbar()->orientation() == HorizontalScrollbar) {
+        ASSERT(!m_horizontalScrollbar);
+        m_horizontalScrollbar = scrollbar;
+        didAddHorizontalScrollbar(scrollbar->scrollbar());
+    } else {
+        ASSERT(!m_verticalScrollbar);
+        m_verticalScrollbar = scrollbar;
+        didAddVerticalScrollbar(scrollbar->scrollbar());
+    }
+}
+
+void ScrollbarGroup::scrollbarDestroyed(WebScrollbarImpl* scrollbar)
+{
+    if (scrollbar == m_horizontalScrollbar) {
+        willRemoveHorizontalScrollbar(scrollbar->scrollbar());
+        m_horizontalScrollbar = 0;
+    } else {
+        ASSERT(scrollbar == m_verticalScrollbar);
+        willRemoveVerticalScrollbar(scrollbar->scrollbar());
+        m_verticalScrollbar = 0;
+    }
+}
+
+void ScrollbarGroup::setLastMousePosition(const IntPoint& point)
+{
+    m_lastMousePosition = point;
+}
+
+int ScrollbarGroup::scrollSize(WebCore::ScrollbarOrientation orientation) const
+{
+    WebScrollbarImpl* webScrollbar = orientation == HorizontalScrollbar ? m_horizontalScrollbar : m_verticalScrollbar;
+    if (!webScrollbar)
+        return 0;
+    Scrollbar* scrollbar = webScrollbar->scrollbar();
+    return scrollbar->totalSize() - scrollbar->visibleSize();
+}
+
+int ScrollbarGroup::scrollPosition(Scrollbar* scrollbar) const
+{
+    WebScrollbarImpl* webScrollbar = scrollbar->orientation() == HorizontalScrollbar ? m_horizontalScrollbar : m_verticalScrollbar;
+    if (!webScrollbar)
+        return 0;
+    return webScrollbar->scrollOffset();
+}
+
+void ScrollbarGroup::setScrollOffset(const IntPoint& offset)
+{
+    if (m_horizontalScrollbar && m_horizontalScrollbar->scrollOffset() != offset.x())
+        m_horizontalScrollbar->setScrollOffset(offset.x());
+    else if (m_verticalScrollbar && m_verticalScrollbar->scrollOffset() != offset.y())
+        m_verticalScrollbar->setScrollOffset(offset.y());
+}
+
+void ScrollbarGroup::invalidateScrollbarRect(Scrollbar* scrollbar, const IntRect& rect)
+{
+    if (m_horizontalScrollbar && scrollbar == m_horizontalScrollbar->scrollbar())
+        m_horizontalScrollbar->invalidateScrollbarRect(rect);
+    else if (m_verticalScrollbar && scrollbar == m_verticalScrollbar->scrollbar())
+        m_verticalScrollbar->invalidateScrollbarRect(rect);
+}
+
+void ScrollbarGroup::invalidateScrollCornerRect(const IntRect&)
+{
+}
+
+bool ScrollbarGroup::isActive() const
+{
+    return true;
+}
+
+ScrollableArea* ScrollbarGroup::enclosingScrollableArea() const
+{
+    // FIXME: Return a parent scrollable area that can be scrolled.
+    return 0;
+}
+
+bool ScrollbarGroup::isScrollCornerVisible() const
+{
+    return false;
+}
+
+void ScrollbarGroup::getTickmarks(Vector<IntRect>& tickmarks) const
+{
+    if (m_verticalScrollbar)
+        m_verticalScrollbar->getTickmarks(tickmarks);
+}
+
+IntPoint ScrollbarGroup::convertFromContainingViewToScrollbar(const Scrollbar* scrollbar, const IntPoint& parentPoint) const
+{
+    if (m_horizontalScrollbar && scrollbar == m_horizontalScrollbar->scrollbar())
+        return m_horizontalScrollbar->convertFromContainingViewToScrollbar(parentPoint);
+    if (m_verticalScrollbar && scrollbar == m_verticalScrollbar->scrollbar())
+        return m_verticalScrollbar->convertFromContainingViewToScrollbar(parentPoint);
+    WEBKIT_ASSERT_NOT_REACHED();
+    return IntPoint();
+}
+
+Scrollbar* ScrollbarGroup::horizontalScrollbar() const
+{
+    return m_horizontalScrollbar ? m_horizontalScrollbar->scrollbar() : 0;
+}
+
+Scrollbar* ScrollbarGroup::verticalScrollbar() const
+{
+    return m_verticalScrollbar ? m_verticalScrollbar->scrollbar() : 0;
+}
+
+IntPoint ScrollbarGroup::scrollPosition() const
+{
+    int x = m_horizontalScrollbar ? m_horizontalScrollbar->scrollOffset() : 0;
+    int y = m_verticalScrollbar ? m_verticalScrollbar->scrollOffset() : 0;
+    return IntPoint(x, y);
+}
+
+IntPoint ScrollbarGroup::minimumScrollPosition() const
+{
+    return IntPoint();
+}
+
+IntPoint ScrollbarGroup::maximumScrollPosition() const
+{
+    return IntPoint(contentsSize().width() - visibleWidth(), contentsSize().height() - visibleHeight());
+}
+
+int ScrollbarGroup::visibleHeight() const
+{
+    if (m_verticalScrollbar)
+        return m_verticalScrollbar->scrollbar()->height();
+    if (m_horizontalScrollbar)
+        return m_horizontalScrollbar->scrollbar()->height();
+    WEBKIT_ASSERT_NOT_REACHED();
+    return 0;
+}
+
+int ScrollbarGroup::visibleWidth() const
+{
+    if (m_horizontalScrollbar)
+        return m_horizontalScrollbar->scrollbar()->width();
+    if (m_verticalScrollbar)
+        return m_verticalScrollbar->scrollbar()->width();
+    WEBKIT_ASSERT_NOT_REACHED();
+    return 0;
+}
+
+IntSize ScrollbarGroup::contentsSize() const
+{
+    IntSize size;
+    if (m_horizontalScrollbar)
+        size.setWidth(m_horizontalScrollbar->scrollbar()->totalSize());
+    else if (m_verticalScrollbar) {
+        size.setWidth(m_verticalScrollbar->scrollbar()->x());
+        if (m_verticalScrollbar->scrollbar()->isOverlayScrollbar())
+            size.expand(WebScrollbar::defaultThickness(), 0);
+    }
+    if (m_verticalScrollbar)
+        size.setHeight(m_verticalScrollbar->scrollbar()->totalSize());
+    else if (m_horizontalScrollbar) {
+        size.setHeight(m_horizontalScrollbar->scrollbar()->y());
+        if (m_horizontalScrollbar->scrollbar()->isOverlayScrollbar())
+            size.expand(0, WebScrollbar::defaultThickness());
+    }
+    return size;
+}
+
+IntSize ScrollbarGroup::overhangAmount() const
+{
+    return IntSize();
+}
+
+IntPoint ScrollbarGroup::currentMousePosition() const
+{
+    return m_lastMousePosition;
+}
+
+bool ScrollbarGroup::shouldSuspendScrollAnimations() const
+{
+    return false;
+}
+
+void ScrollbarGroup::scrollbarStyleChanged()
+{
+    if (m_horizontalScrollbar)
+        m_horizontalScrollbar->scrollbarStyleChanged();
+    if (m_verticalScrollbar)
+        m_verticalScrollbar->scrollbarStyleChanged();
+}
+
+bool ScrollbarGroup::isOnActivePage() const
+{
+    return true;
+}
+
+void ScrollbarGroup::disconnectFromPage()
+{
+    m_page = 0;
+}
+
+} // namespace WebKit

Added: trunk/Source/WebKit/chromium/src/ScrollbarGroup.h (0 => 92811)


--- trunk/Source/WebKit/chromium/src/ScrollbarGroup.h	                        (rev 0)
+++ trunk/Source/WebKit/chromium/src/ScrollbarGroup.h	2011-08-11 01:17:16 UTC (rev 92811)
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2011 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ScrollbarGroup_h
+#define ScrollbarGroup_h
+
+#include "ScrollableArea.h"
+
+#include <wtf/RefPtr.h>
+
+namespace WebCore {
+class Page;
+}
+
+namespace WebKit {
+
+class WebScrollbarImpl;
+
+class ScrollbarGroup : public WebCore::ScrollableArea {
+public:
+    explicit ScrollbarGroup(WebCore::Page*);
+    ~ScrollbarGroup();
+
+    void scrollbarCreated(WebScrollbarImpl*);
+    void scrollbarDestroyed(WebScrollbarImpl*);
+    void setLastMousePosition(const WebCore::IntPoint&);
+
+    // WebCore::ScrollableArea methods
+    virtual int scrollSize(WebCore::ScrollbarOrientation) const;
+    virtual int scrollPosition(WebCore::Scrollbar*) const;
+    virtual void setScrollOffset(const WebCore::IntPoint&);
+    virtual void invalidateScrollbarRect(WebCore::Scrollbar*, const WebCore::IntRect&);
+    virtual void invalidateScrollCornerRect(const WebCore::IntRect&);
+    virtual bool isActive() const;
+    virtual ScrollableArea* enclosingScrollableArea() const;
+    virtual WebCore::IntRect scrollCornerRect() const { return WebCore::IntRect(); }
+    virtual bool isScrollCornerVisible() const;
+    virtual void getTickmarks(Vector<WebCore::IntRect>&) const;
+    virtual WebCore::IntPoint convertFromContainingViewToScrollbar(const WebCore::Scrollbar*, const WebCore::IntPoint& parentPoint) const;
+    virtual WebCore::Scrollbar* horizontalScrollbar() const;
+    virtual WebCore::Scrollbar* verticalScrollbar() const;
+    virtual WebCore::IntPoint scrollPosition() const;
+    virtual WebCore::IntPoint minimumScrollPosition() const;
+    virtual WebCore::IntPoint maximumScrollPosition() const;
+    virtual int visibleHeight() const;
+    virtual int visibleWidth() const;
+    virtual WebCore::IntSize contentsSize() const;
+    virtual WebCore::IntSize overhangAmount() const;
+    virtual WebCore::IntPoint currentMousePosition() const;
+    virtual bool shouldSuspendScrollAnimations() const;
+    virtual void scrollbarStyleChanged();
+    virtual bool isOnActivePage() const;
+    virtual void disconnectFromPage();
+
+private:
+    WebCore::Page* m_page;
+    WebCore::IntPoint m_lastMousePosition;
+    WebScrollbarImpl* m_horizontalScrollbar;
+    WebScrollbarImpl* m_verticalScrollbar;
+};
+
+} // namespace WebKit
+
+#endif

Modified: trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.cpp (92810 => 92811)


--- trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.cpp	2011-08-11 01:08:42 UTC (rev 92810)
+++ trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.cpp	2011-08-11 01:17:16 UTC (rev 92811)
@@ -34,6 +34,7 @@
 #include "Chrome.h"
 #include "ChromeClientImpl.h"
 #include "PluginLayerChromium.h"
+#include "ScrollbarGroup.h"
 #include "WebClipboard.h"
 #include "WebCursorInfo.h"
 #include "WebDataSourceImpl.h"
@@ -69,7 +70,9 @@
 #include "MouseEvent.h"
 #include "Page.h"
 #include "RenderBox.h"
+#include "ScrollAnimator.h"
 #include "ScrollView.h"
+#include "ScrollbarTheme.h"
 #include "UserGestureIndicator.h"
 #include "WheelEvent.h"
 
@@ -91,6 +94,14 @@
 
 void WebPluginContainerImpl::paint(GraphicsContext* gc, const IntRect& damageRect)
 {
+    if (gc->updatingControlTints() && m_scrollbarGroup) {
+        // See comment in FrameView::updateControlTints().
+        if (m_scrollbarGroup->horizontalScrollbar())
+            m_scrollbarGroup->horizontalScrollbar()->invalidate();
+        if (m_scrollbarGroup->verticalScrollbar())
+            m_scrollbarGroup->verticalScrollbar()->invalidate();
+    }
+
     if (gc->paintingDisabled())
         return;
 
@@ -306,6 +317,9 @@
     calculateGeometry(frameRect(), windowRect, clipRect, cutOutRects);
 
     m_webPlugin->updateGeometry(windowRect, clipRect, cutOutRects, isVisible());
+
+    if (m_scrollbarGroup)
+        m_scrollbarGroup->scrollAnimator()->contentsResized();
 }
 
 void WebPluginContainerImpl::setBackingTextureId(unsigned id)
@@ -437,6 +451,26 @@
 }
 #endif
 
+
+ScrollbarGroup* WebPluginContainerImpl::scrollbarGroup()
+{
+    if (!m_scrollbarGroup)
+        m_scrollbarGroup = adoptPtr(new ScrollbarGroup(m_element->document()->frame()->page()));
+    return m_scrollbarGroup.get();
+}
+
+void WebPluginContainerImpl::willStartLiveResize()
+{
+    if (m_scrollbarGroup)
+        m_scrollbarGroup->willStartLiveResize();
+}
+
+void WebPluginContainerImpl::willEndLiveResize()
+{
+    if (m_scrollbarGroup)
+        m_scrollbarGroup->willEndLiveResize();
+}
+
 // Private methods -------------------------------------------------------------
 
 WebPluginContainerImpl::WebPluginContainerImpl(WebCore::HTMLPlugInElement* element, WebPlugin* webPlugin)
@@ -476,6 +510,18 @@
             containingFrame->document()->setFocusedNode(m_element);
     }
 
+    if (m_scrollbarGroup) {
+        // This needs to be set before the other callbacks in this scope, since
+        // the scroll animator class might query the position in response.
+        m_scrollbarGroup->setLastMousePosition(IntPoint(event->x(), event->y()));
+        if (event->type() == eventNames().mousemoveEvent)
+            m_scrollbarGroup->scrollAnimator()->mouseMovedInContentArea();
+        else if (event->type() == eventNames().mouseoverEvent)
+            m_scrollbarGroup->scrollAnimator()->mouseEnteredContentArea();
+        else if (event->type() == eventNames().mouseoutEvent)
+            m_scrollbarGroup->scrollAnimator()->mouseExitedContentArea();
+    }
+
     WebCursorInfo cursorInfo;
     if (m_webPlugin->handleInputEvent(webEvent, cursorInfo))
         event->setDefaultHandled();

Modified: trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.h (92810 => 92811)


--- trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.h	2011-08-11 01:08:42 UTC (rev 92810)
+++ trunk/Source/WebKit/chromium/src/WebPluginContainerImpl.h	2011-08-11 01:17:16 UTC (rev 92811)
@@ -35,6 +35,7 @@
 #include "WebPluginContainer.h"
 #include "Widget.h"
 
+#include <wtf/OwnPtr.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/Vector.h>
 
@@ -54,6 +55,7 @@
 
 namespace WebKit {
 
+class ScrollbarGroup;
 class WebPlugin;
 class WebPluginLoadObserver;
 
@@ -127,6 +129,11 @@
     virtual WebCore::LayerChromium* platformLayer() const;
 #endif
 
+    ScrollbarGroup* scrollbarGroup();
+
+    void willStartLiveResize();
+    void willEndLiveResize();
+
 private:
     WebPluginContainerImpl(WebCore::HTMLPlugInElement* element, WebPlugin* webPlugin);
     ~WebPluginContainerImpl();
@@ -150,6 +157,10 @@
 #if USE(ACCELERATED_COMPOSITING)
     RefPtr<WebCore::PluginLayerChromium> m_platformLayer;
 #endif
+
+    // The associated scrollbar group object, created lazily. Used for Pepper
+    // scrollbars.
+    OwnPtr<ScrollbarGroup> m_scrollbarGroup;
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/chromium/src/WebScrollbarImpl.cpp (92810 => 92811)


--- trunk/Source/WebKit/chromium/src/WebScrollbarImpl.cpp	2011-08-11 01:08:42 UTC (rev 92810)
+++ trunk/Source/WebKit/chromium/src/WebScrollbarImpl.cpp	2011-08-11 01:17:16 UTC (rev 92811)
@@ -33,26 +33,32 @@
 
 #include "GraphicsContext.h"
 #include "KeyboardCodes.h"
-#include "painting/GraphicsContextBuilder.h"
+#include "ScrollAnimator.h"
+#include "ScrollTypes.h"
 #include "Scrollbar.h"
+#include "ScrollbarGroup.h"
 #include "ScrollbarTheme.h"
-#include "ScrollTypes.h"
 #include "WebCanvas.h"
 #include "WebInputEvent.h"
 #include "WebInputEventConversion.h"
+#include "WebPluginContainerImpl.h"
 #include "WebRect.h"
 #include "WebScrollbarClient.h"
 #include "WebVector.h"
 #include "WebViewImpl.h"
+#include "painting/GraphicsContextBuilder.h"
 
 using namespace std;
 using namespace WebCore;
 
 namespace WebKit {
 
-WebScrollbar* WebScrollbar::create(WebScrollbarClient* client, Orientation orientation)
+WebScrollbar* WebScrollbar::createForPlugin(Orientation orientation,
+                                            WebPluginContainer* pluginContainer,
+                                            WebScrollbarClient* client)
 {
-    return new WebScrollbarImpl(client, orientation);
+    WebPluginContainerImpl* plugin = static_cast<WebPluginContainerImpl*>(pluginContainer);
+    return new WebScrollbarImpl(orientation, plugin->scrollbarGroup(), client);
 }
 
 int WebScrollbar::defaultThickness()
@@ -60,20 +66,64 @@
     return ScrollbarTheme::nativeTheme()->scrollbarThickness();
 }
 
-WebScrollbarImpl::WebScrollbarImpl(WebScrollbarClient* client, Orientation orientation)
-    : m_client(client)
+WebScrollbarImpl::WebScrollbarImpl(Orientation orientation,
+                                   ScrollbarGroup* group,
+                                   WebScrollbarClient* client)
+    : m_group(group)
+    , m_client(client)
     , m_scrollOffset(0)
 {
     m_scrollbar = Scrollbar::createNativeScrollbar(
-        static_cast<ScrollableArea*>(this),
+        static_cast<ScrollableArea*>(m_group),
         static_cast<ScrollbarOrientation>(orientation),
         RegularScrollbar);
+    m_group->scrollbarCreated(this);
 }
 
 WebScrollbarImpl::~WebScrollbarImpl()
 {
+    m_group->scrollbarDestroyed(this);
 }
 
+void WebScrollbarImpl::setScrollOffset(int scrollOffset)
+{
+    m_scrollOffset = scrollOffset;
+    m_client->valueChanged(this);
+}
+
+void WebScrollbarImpl::invalidateScrollbarRect(const IntRect& rect)
+{
+    WebRect webrect(rect);
+    webrect.x += m_scrollbar->x();
+    webrect.y += m_scrollbar->y();
+    m_client->invalidateScrollbarRect(this, webrect);
+}
+
+void WebScrollbarImpl::getTickmarks(Vector<IntRect>& tickmarks) const
+{
+    WebVector<WebRect> ticks;
+    m_client->getTickmarks(const_cast<WebScrollbarImpl*>(this), &ticks);
+    tickmarks.resize(ticks.size());
+    for (size_t i = 0; i < ticks.size(); ++i)
+        tickmarks[i] = ticks[i];
+}
+
+IntPoint WebScrollbarImpl::convertFromContainingViewToScrollbar(const IntPoint& parentPoint) const
+{
+    IntPoint offset(parentPoint.x() - m_scrollbar->x(), parentPoint.y() - m_scrollbar->y());
+    return m_scrollbar->Widget::convertFromContainingView(offset);
+}
+
+void WebScrollbarImpl::scrollbarStyleChanged()
+{
+    m_client->overlayChanged(this);
+}
+
+bool WebScrollbarImpl::isOverlay() const
+{
+    return m_scrollbar->isOverlayScrollbar();
+}
+
 void WebScrollbarImpl::setLocation(const WebRect& rect)
 {
     IntRect oldRect = m_scrollbar->frameRect();
@@ -95,7 +145,7 @@
 
 void WebScrollbarImpl::setValue(int position)
 {
-    ScrollableArea::scrollToOffsetWithoutAnimation(m_scrollbar->orientation(), static_cast<float>(position));
+    m_group->scrollToOffsetWithoutAnimation(m_scrollbar->orientation(), static_cast<float>(position));
 }
 
 void WebScrollbarImpl::setDocumentSize(int size)
@@ -114,7 +164,7 @@
     else
         dir = horizontal ? ScrollLeft : ScrollUp;
 
-    WebCore::ScrollableArea::scroll(dir, static_cast<WebCore::ScrollGranularity>(granularity), multiplier);
+    m_group->scroll(dir, static_cast<WebCore::ScrollGranularity>(granularity), multiplier);
 }
 
 void WebScrollbarImpl::paint(WebCanvas* canvas, const WebRect& rect)
@@ -182,40 +232,27 @@
         return m_scrollbar->mouseMoved(PlatformMouseEventBuilder(m_scrollbar.get(), mousemove));
     }
 
-    if (m_scrollbar->hoveredPart() != NoPart)
+    if (m_scrollbar->hoveredPart() != NoPart && !m_scrollbar->isOverlayScrollbar())
         m_scrollbar->mouseExited();
     return false;
 }
 
 bool WebScrollbarImpl::onMouseLeave(const WebInputEvent& event)
 {
-    if (m_scrollbar->hoveredPart() == NoPart)
-        return false;
+    if (m_scrollbar->hoveredPart() != NoPart)
+        m_scrollbar->mouseExited();
 
-    return m_scrollbar->mouseExited();
+    return false;
 }
 
 bool WebScrollbarImpl::onMouseWheel(const WebInputEvent& event)
 {
-    // Same logic as in Scrollview.cpp.  If we can move at all, we'll accept the event.
     WebMouseWheelEvent mousewheel = *static_cast<const WebMouseWheelEvent*>(&event);
-    int maxScrollDelta = m_scrollbar->maximum() - m_scrollbar->value();
-    float delta = m_scrollbar->orientation() == HorizontalScrollbar ? mousewheel.deltaX : mousewheel.deltaY;
-    if ((delta < 0 && maxScrollDelta > 0) || (delta > 0 && m_scrollbar->value() > 0)) {
-        if (mousewheel.scrollByPage) {
-            ASSERT(m_scrollbar->orientation() == VerticalScrollbar);
-            bool negative = delta < 0;
-            delta = max(max(static_cast<float>(m_scrollbar->visibleSize()) * Scrollbar::minFractionToStepWhenPaging(), static_cast<float>(m_scrollbar->visibleSize() - Scrollbar::maxOverlapBetweenPages())), 1.0f);
-            if (negative)
-                delta *= -1;
-        }
-        ScrollableArea::scroll((m_scrollbar->orientation() == HorizontalScrollbar) ? WebCore::ScrollLeft : WebCore::ScrollUp, WebCore::ScrollByPixel, delta);
-        return true;
-    }
+    PlatformWheelEventBuilder platformEvent(m_scrollbar.get(), mousewheel);
+    m_group->handleWheelEvent(platformEvent);
+    return platformEvent.isAccepted();
+}
 
-    return false;
-    }
-
 bool WebScrollbarImpl::onKeyDown(const WebInputEvent& event)
 {
     WebKeyboardEvent keyboard = *static_cast<const WebKeyboardEvent*>(&event);
@@ -248,100 +285,9 @@
     WebCore::ScrollGranularity scrollGranularity;
     if (WebViewImpl::mapKeyCodeForScroll(keyCode, &scrollDirection, &scrollGranularity)) {
         // Will return false if scroll direction wasn't compatible with this scrollbar.
-        return ScrollableArea::scroll(scrollDirection, scrollGranularity);
+        return m_group->scroll(scrollDirection, scrollGranularity);
     }
     return false;
 }
 
-int WebScrollbarImpl::scrollSize(WebCore::ScrollbarOrientation orientation) const
-{
-    return (orientation == m_scrollbar->orientation()) ? (m_scrollbar->totalSize() - m_scrollbar->visibleSize()) : 0;
-}
-
-int WebScrollbarImpl::scrollPosition(Scrollbar*) const
-{
-    return m_scrollOffset;
-}
-
-void WebScrollbarImpl::setScrollOffset(const IntPoint& offset)
-{
-    if (m_scrollbar->orientation() == HorizontalScrollbar)
-        m_scrollOffset = offset.x();
-    else
-        m_scrollOffset = offset.y();
-
-    m_client->valueChanged(this);
-}
-
-void WebScrollbarImpl::invalidateScrollbarRect(Scrollbar*, const IntRect& rect)
-{
-    WebRect webrect(rect);
-    webrect.x += m_scrollbar->x();
-    webrect.y += m_scrollbar->y();
-    m_client->invalidateScrollbarRect(this, webrect);
-}
-
-void WebScrollbarImpl::invalidateScrollCornerRect(const IntRect&)
-{
-}
-
-bool WebScrollbarImpl::isActive() const
-{
-    return true;
-}
-
-ScrollableArea* WebScrollbarImpl::enclosingScrollableArea() const
-{
-    // FIXME: Return a parent scrollable area that can be scrolled.
-    return 0;
-}
-
-bool WebScrollbarImpl::isScrollCornerVisible() const
-{
-    return false;
-}
-
-void WebScrollbarImpl::getTickmarks(Vector<IntRect>& tickmarks) const
-{
-    WebVector<WebRect> ticks;
-    m_client->getTickmarks(const_cast<WebScrollbarImpl*>(this), &ticks);
-    tickmarks.resize(ticks.size());
-    for (size_t i = 0; i < ticks.size(); ++i)
-        tickmarks[i] = ticks[i];
-}
-
-Scrollbar* WebScrollbarImpl::horizontalScrollbar() const
-{
-    return m_scrollbar->orientation() == HorizontalScrollbar ? m_scrollbar.get() : 0;
-}
-
-Scrollbar* WebScrollbarImpl::verticalScrollbar() const
-{
-    return m_scrollbar->orientation() == VerticalScrollbar ? m_scrollbar.get() : 0;
-}
-
-int WebScrollbarImpl::visibleHeight() const
-{
-    return m_scrollbar->height();
-}
-
-int WebScrollbarImpl::visibleWidth() const
-{
-    return m_scrollbar->width();
-}
-
-IntSize WebScrollbarImpl::contentsSize() const
-{
-    // This isn't technically correct, since we don't have the contentSize. However it's good enough
-    // to make the ScrollAnimator code happy.
-    int thickness = defaultThickness();
-    int length = m_scrollbar->totalSize();
-    return m_scrollbar->orientation() == VerticalScrollbar ? IntSize(thickness, length) : IntSize(length, thickness);
-}
-
-IntSize WebScrollbarImpl::overhangAmount() const
-{
-    return IntSize();
-}
-
 } // namespace WebKit

Modified: trunk/Source/WebKit/chromium/src/WebScrollbarImpl.h (92810 => 92811)


--- trunk/Source/WebKit/chromium/src/WebScrollbarImpl.h	2011-08-11 01:08:42 UTC (rev 92810)
+++ trunk/Source/WebKit/chromium/src/WebScrollbarImpl.h	2011-08-11 01:17:16 UTC (rev 92811)
@@ -31,24 +31,39 @@
 #ifndef WebScrollbarImpl_h
 #define WebScrollbarImpl_h
 
-#include "ScrollableArea.h"
 #include "WebScrollbar.h"
 
 #include <wtf/RefPtr.h>
+#include <wtf/Vector.h>
 
 namespace WebCore {
+class IntPoint;
+class IntRect;
 class Scrollbar;
 }
 
 namespace WebKit {
 
-class WebScrollbarImpl : public WebScrollbar,
-                         public WebCore::ScrollableArea {
+class ScrollbarGroup;
+
+class WebScrollbarImpl : public WebScrollbar {
 public:
-    WebScrollbarImpl(WebScrollbarClient*, Orientation orientation);
+    WebScrollbarImpl(Orientation,
+                     ScrollbarGroup*,                     
+                     WebScrollbarClient*);
     ~WebScrollbarImpl();
 
+    void setScrollOffset(int);
+    void invalidateScrollbarRect(const WebCore::IntRect&);
+    void getTickmarks(Vector<WebCore::IntRect>&) const;
+    WebCore::IntPoint convertFromContainingViewToScrollbar(const WebCore::IntPoint& parentPoint) const;
+    void scrollbarStyleChanged();
+
+    int scrollOffset() { return m_scrollOffset; }
+    WebCore::Scrollbar* scrollbar() { return m_scrollbar.get(); }
+
     // WebKit::WebScrollbar methods
+    virtual bool isOverlay() const;
     virtual void setLocation(const WebRect&);
     virtual int value() const;
     virtual void setValue(int position);
@@ -57,24 +72,6 @@
     virtual void paint(WebCanvas*, const WebRect&);
     virtual bool handleInputEvent(const WebInputEvent&);
 
-    // WebCore::ScrollableArea methods
-    virtual int scrollSize(WebCore::ScrollbarOrientation) const;
-    virtual int scrollPosition(WebCore::Scrollbar*) const;
-    virtual void setScrollOffset(const WebCore::IntPoint&);
-    virtual void invalidateScrollbarRect(WebCore::Scrollbar*, const WebCore::IntRect&);
-    virtual void invalidateScrollCornerRect(const WebCore::IntRect&);
-    virtual bool isActive() const;
-    virtual ScrollableArea* enclosingScrollableArea() const;
-    virtual WebCore::IntRect scrollCornerRect() const { return WebCore::IntRect(); }
-    virtual bool isScrollCornerVisible() const;
-    virtual void getTickmarks(Vector<WebCore::IntRect>&) const;
-    virtual WebCore::Scrollbar* horizontalScrollbar() const;
-    virtual WebCore::Scrollbar* verticalScrollbar() const;
-    virtual int visibleHeight() const;
-    virtual int visibleWidth() const;
-    virtual WebCore::IntSize contentsSize() const;
-    virtual WebCore::IntSize overhangAmount() const;
-
 private:
     bool onMouseDown(const WebInputEvent& event);
     bool onMouseUp(const WebInputEvent& event);
@@ -83,6 +80,7 @@
     bool onMouseWheel(const WebInputEvent& event);
     bool onKeyDown(const WebInputEvent& event);
 
+    ScrollbarGroup* m_group;
     WebScrollbarClient* m_client;
 
     int m_scrollOffset;

Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.cpp (92810 => 92811)


--- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2011-08-11 01:08:42 UTC (rev 92810)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2011-08-11 01:17:16 UTC (rev 92811)
@@ -1008,6 +1008,11 @@
 {
     if (mainFrameImpl() && mainFrameImpl()->frameView())
         mainFrameImpl()->frameView()->willStartLiveResize();
+
+    Frame* frame = mainFrameImpl()->frame();
+    WebPluginContainerImpl* pluginContainer = WebFrameImpl::pluginContainerFromFrame(frame);
+    if (pluginContainer)
+        pluginContainer->willStartLiveResize();
 }
 
 void WebViewImpl::resize(const WebSize& newSize)
@@ -1037,6 +1042,11 @@
 {
     if (mainFrameImpl() && mainFrameImpl()->frameView())
         mainFrameImpl()->frameView()->willEndLiveResize();
+
+    Frame* frame = mainFrameImpl()->frame();
+    WebPluginContainerImpl* pluginContainer = WebFrameImpl::pluginContainerFromFrame(frame);
+    if (pluginContainer)
+        pluginContainer->willEndLiveResize();
 }
 
 void WebViewImpl::animate(double frameBeginTime)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to