<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[128134] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/128134">128134</a></dd>
<dt>Author</dt> <dd>bdakin@apple.com</dd>
<dt>Date</dt> <dd>2012-09-10 17:37:06 -0700 (Mon, 10 Sep 2012)</dd>
</dl>

<h3>Log Message</h3>
<pre>https://bugs.webkit.org/show_bug.cgi?id=96158
Need API to suppress scrollbar animations
-and corresponding-
&lt;rdar://problem/12210972&gt;

Reviewed by Sam Weinig.

Source/WebCore: 

This patch re-names ScrollableAre::isOnActivePage() to 
ScrollableArea::scrollbarsCanBeActive(). The new name better reflects 
how the function is actually used, and it allows us to use the same 
function for the new API that has been added to WebKit2. Now when a 
client has used that API to indicate that scrollbars should be 
suppressed, ScrollableArea::scrollbarsCanBeActive() will return 
false.

Page has a new member variable which indicated whether scrollbar 
animations for all scrollbars associated with that page should be 
suppressed. Whenever it is set to true (meaning the animations 
should be suppressed), Page iterates through all of the 
ScrollableAreas to tell each one to finishCurrentScrollAnimations().
* WebCore.exp.in:
* page/Page.cpp:
(WebCore::Page::Page):
(WebCore::Page::setShouldSuppressScrollbarAnimations):
(WebCore):
* page/Page.h:
(WebCore::Page::shouldSuppressScrollbarAnimations):
(Page):

FrameView::isOnActivePage() is renamed to scrollbarsCanBeActive () 
and it will now return false if the Page says that scrollbar 
animations should be suppressed. 
* page/FrameView.cpp:
(WebCore::FrameView::scrollbarsCanBeActive):

scrollbarsCanBeActive() must now be a public member of FrameView so  
that it can be called from RenderLayer and RenderListBox.
* page/FrameView.h:
(FrameView):

New ScrollAnimator function calls hideOverlayScrollers.
* platform/ScrollAnimator.h:
(WebCore::ScrollAnimator::finishCurrentScrollAnimations):
(ScrollAnimator):
* platform/ScrollableArea.cpp:
(WebCore::ScrollableArea::finishCurrentScrollAnimations):
(WebCore):
* platform/ScrollableArea.h:
(ScrollableArea):
* platform/mac/ScrollAnimatorMac.h:
(ScrollAnimatorMac):
(WebCore::ScrollAnimatorMac::finishCurrentScrollAnimations):

Re-name. isOnActivePage() -&gt; scrollbarsCanBeActive()
(WebCore::FrameView::setAnimatorsAreActive):
(WebCore::FrameView::notifyPageThatContentAreaWillPaint):
* platform/mac/ScrollAnimatorMac.mm:
(-[WebScrollbarPainterControllerDelegate scrollerImpPair:setContentAreaNeedsDisplayInRect:]):
(WebCore::ScrollAnimatorMac::contentAreaWillPaint):
(WebCore::ScrollAnimatorMac::mouseEnteredContentArea):
(WebCore::ScrollAnimatorMac::mouseExitedContentArea):
(WebCore::ScrollAnimatorMac::mouseMovedInContentArea):
(WebCore::ScrollAnimatorMac::mouseEnteredScrollbar):
(WebCore::ScrollAnimatorMac::mouseExitedScrollbar):
(WebCore::ScrollAnimatorMac::willStartLiveResize):
(WebCore::ScrollAnimatorMac::contentsResized):
(WebCore::ScrollAnimatorMac::willEndLiveResize):
(WebCore::ScrollAnimatorMac::contentAreaDidShow):
(WebCore::ScrollAnimatorMac::contentAreaDidHide):
(WebCore::ScrollAnimatorMac::didBeginScrollGesture):
(WebCore::ScrollAnimatorMac::didEndScrollGesture):
(WebCore::ScrollAnimatorMac::mayBeginScrollGesture):
(WebCore):
(WebCore::ScrollAnimatorMac::notifyContentAreaScrolled):
(WebCore::ScrollAnimatorMac::updateScrollerStyle):
* rendering/RenderLayer.cpp:

RenderLayer and RenderListBox should call into FrameView's 
scrollbarsCanBeActive() so that they also return false when Page:: 
shouldSuppressScrollbarAnimations() is true.
(WebCore::RenderLayer::scrollbarsCanBeActive):
* rendering/RenderLayer.h:
(RenderLayer):
* rendering/RenderListBox.cpp:
(WebCore::RenderListBox::scrollbarsCanBeActive):
* rendering/RenderListBox.h:

This is the one caller of ScrollableArea:: scrollbarsCanBeActive() 
that needs to distinguish between the scrollbar-suppressing scenario 
and the in-the-page-cache scenario.
* page/FocusController.cpp:
(WebCore::FocusController::setContainingWindowIsVisible):

Source/WebKit/chromium: 

ScrollableArea::isOnActivePage() has been re-named to
ScrollableArea:: scrollbarsCanBeActive().
* src/ScrollbarGroup.cpp:
(WebKit::ScrollbarGroup::scrollbarsCanBeActive):
* src/ScrollbarGroup.h:
* tests/GraphicsLayerChromiumTest.cpp:
* tests/ScrollAnimatorNoneTest.cpp:
(MockScrollableArea):

Source/WebKit/win: 

ScrollableArea::isOnActivePage() has been re-named to
ScrollableArea:: scrollbarsCanBeActive().
* WebScrollBar.cpp:
(WebScrollBar::scrollbarsCanBeActive):
* WebScrollBar.h:
(WebScrollBar):

Source/WebKit2: 

Add suppressScrollbarAnimations as a WebCreationParameter.
* Shared/WebPageCreationParameters.h:
(WebPageCreationParameters):

New API. Calls into the web process for the setter but not the 
getter.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetSuppressScrollbarAnimations):
(WKPageAreScrollbarAnimationsSuppressed):
* UIProcess/API/C/WKPage.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
(WebKit::WebPageProxy::setSuppressScrollbarAnimations):
(WebKit):
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
(WebPageProxy):
(WebKit::WebPageProxy::areScrollbarAnimationsSuppressed):
* WebProcess/WebPage/WebPage.messages.in:

Call into WebCore.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setSuppressScrollbarAnimations):
(WebKit):
* WebProcess/WebPage/WebPage.h:
(WebPage):

This ScrollableArea area function is re-named by this patch in 
WebCore.
* WebProcess/Plugins/PDF/BuiltInPDFView.h:
* WebProcess/Plugins/PDF/BuiltInPDFView.mm:
(WebKit::BuiltInPDFView::scrollbarsCanBeActive):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCoreexpin">trunk/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#trunkSourceWebCorepageFocusControllercpp">trunk/Source/WebCore/page/FocusController.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFrameViewcpp">trunk/Source/WebCore/page/FrameView.cpp</a></li>
<li><a href="#trunkSourceWebCorepageFrameViewh">trunk/Source/WebCore/page/FrameView.h</a></li>
<li><a href="#trunkSourceWebCorepagePagecpp">trunk/Source/WebCore/page/Page.cpp</a></li>
<li><a href="#trunkSourceWebCorepagePageh">trunk/Source/WebCore/page/Page.h</a></li>
<li><a href="#trunkSourceWebCoreplatformScrollAnimatorh">trunk/Source/WebCore/platform/ScrollAnimator.h</a></li>
<li><a href="#trunkSourceWebCoreplatformScrollableAreacpp">trunk/Source/WebCore/platform/ScrollableArea.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformScrollableAreah">trunk/Source/WebCore/platform/ScrollableArea.h</a></li>
<li><a href="#trunkSourceWebCoreplatformchromiumFramelessScrollViewcpp">trunk/Source/WebCore/platform/chromium/FramelessScrollView.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformchromiumFramelessScrollViewh">trunk/Source/WebCore/platform/chromium/FramelessScrollView.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmacScrollAnimatorMach">trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.h</a></li>
<li><a href="#trunkSourceWebCoreplatformmacScrollAnimatorMacmm">trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.mm</a></li>
<li><a href="#trunkSourceWebCoreplatformwinPopupMenuWincpp">trunk/Source/WebCore/platform/win/PopupMenuWin.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformwinPopupMenuWinh">trunk/Source/WebCore/platform/win/PopupMenuWin.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayercpp">trunk/Source/WebCore/rendering/RenderLayer.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerh">trunk/Source/WebCore/rendering/RenderLayer.h</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderListBoxcpp">trunk/Source/WebCore/rendering/RenderListBox.cpp</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderListBoxh">trunk/Source/WebCore/rendering/RenderListBox.h</a></li>
<li><a href="#trunkSourceWebKitchromiumChangeLog">trunk/Source/WebKit/chromium/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitchromiumsrcScrollbarGroupcpp">trunk/Source/WebKit/chromium/src/ScrollbarGroup.cpp</a></li>
<li><a href="#trunkSourceWebKitchromiumsrcScrollbarGrouph">trunk/Source/WebKit/chromium/src/ScrollbarGroup.h</a></li>
<li><a href="#trunkSourceWebKitchromiumtestsGraphicsLayerChromiumTestcpp">trunk/Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.cpp</a></li>
<li><a href="#trunkSourceWebKitchromiumtestsScrollAnimatorNoneTestcpp">trunk/Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinWebScrollBarcpp">trunk/Source/WebKit/win/WebScrollBar.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebScrollBarh">trunk/Source/WebKit/win/WebScrollBar.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedWebPageCreationParametersh">trunk/Source/WebKit2/Shared/WebPageCreationParameters.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPagecpp">trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICWKPageh">trunk/Source/WebKit2/UIProcess/API/C/WKPage.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcesswinWebPopupMenuProxyWinh">trunk/Source/WebKit2/UIProcess/win/WebPopupMenuProxyWin.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFBuiltInPDFViewh">trunk/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFBuiltInPDFViewmm">trunk/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagemessagesin">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/ChangeLog        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -1,3 +1,98 @@
</span><ins>+2012-09-10  Beth Dakin  &lt;bdakin@apple.com&gt;
+
+        https://bugs.webkit.org/show_bug.cgi?id=96158
+        Need API to suppress scrollbar animations
+        -and corresponding-
+        &lt;rdar://problem/12210972&gt;
+
+        Reviewed by Sam Weinig.
+
+        This patch re-names ScrollableAre::isOnActivePage() to 
+        ScrollableArea::scrollbarsCanBeActive(). The new name better reflects 
+        how the function is actually used, and it allows us to use the same 
+        function for the new API that has been added to WebKit2. Now when a 
+        client has used that API to indicate that scrollbars should be 
+        suppressed, ScrollableArea::scrollbarsCanBeActive() will return 
+        false.
+
+        Page has a new member variable which indicated whether scrollbar 
+        animations for all scrollbars associated with that page should be 
+        suppressed. Whenever it is set to true (meaning the animations 
+        should be suppressed), Page iterates through all of the 
+        ScrollableAreas to tell each one to finishCurrentScrollAnimations().
+        * WebCore.exp.in:
+        * page/Page.cpp:
+        (WebCore::Page::Page):
+        (WebCore::Page::setShouldSuppressScrollbarAnimations):
+        (WebCore):
+        * page/Page.h:
+        (WebCore::Page::shouldSuppressScrollbarAnimations):
+        (Page):
+
+        FrameView::isOnActivePage() is renamed to scrollbarsCanBeActive () 
+        and it will now return false if the Page says that scrollbar 
+        animations should be suppressed. 
+        * page/FrameView.cpp:
+        (WebCore::FrameView::scrollbarsCanBeActive):
+
+        scrollbarsCanBeActive() must now be a public member of FrameView so  
+        that it can be called from RenderLayer and RenderListBox.
+        * page/FrameView.h:
+        (FrameView):
+
+        New ScrollAnimator function calls hideOverlayScrollers.
+        * platform/ScrollAnimator.h:
+        (WebCore::ScrollAnimator::finishCurrentScrollAnimations):
+        (ScrollAnimator):
+        * platform/ScrollableArea.cpp:
+        (WebCore::ScrollableArea::finishCurrentScrollAnimations):
+        (WebCore):
+        * platform/ScrollableArea.h:
+        (ScrollableArea):
+        * platform/mac/ScrollAnimatorMac.h:
+        (ScrollAnimatorMac):
+        (WebCore::ScrollAnimatorMac::finishCurrentScrollAnimations):
+
+        Re-name. isOnActivePage() -&gt; scrollbarsCanBeActive()
+        (WebCore::FrameView::setAnimatorsAreActive):
+        (WebCore::FrameView::notifyPageThatContentAreaWillPaint):
+        * platform/mac/ScrollAnimatorMac.mm:
+        (-[WebScrollbarPainterControllerDelegate scrollerImpPair:setContentAreaNeedsDisplayInRect:]):
+        (WebCore::ScrollAnimatorMac::contentAreaWillPaint):
+        (WebCore::ScrollAnimatorMac::mouseEnteredContentArea):
+        (WebCore::ScrollAnimatorMac::mouseExitedContentArea):
+        (WebCore::ScrollAnimatorMac::mouseMovedInContentArea):
+        (WebCore::ScrollAnimatorMac::mouseEnteredScrollbar):
+        (WebCore::ScrollAnimatorMac::mouseExitedScrollbar):
+        (WebCore::ScrollAnimatorMac::willStartLiveResize):
+        (WebCore::ScrollAnimatorMac::contentsResized):
+        (WebCore::ScrollAnimatorMac::willEndLiveResize):
+        (WebCore::ScrollAnimatorMac::contentAreaDidShow):
+        (WebCore::ScrollAnimatorMac::contentAreaDidHide):
+        (WebCore::ScrollAnimatorMac::didBeginScrollGesture):
+        (WebCore::ScrollAnimatorMac::didEndScrollGesture):
+        (WebCore::ScrollAnimatorMac::mayBeginScrollGesture):
+        (WebCore):
+        (WebCore::ScrollAnimatorMac::notifyContentAreaScrolled):
+        (WebCore::ScrollAnimatorMac::updateScrollerStyle):
+        * rendering/RenderLayer.cpp:
+
+        RenderLayer and RenderListBox should call into FrameView's 
+        scrollbarsCanBeActive() so that they also return false when Page:: 
+        shouldSuppressScrollbarAnimations() is true.
+        (WebCore::RenderLayer::scrollbarsCanBeActive):
+        * rendering/RenderLayer.h:
+        (RenderLayer):
+        * rendering/RenderListBox.cpp:
+        (WebCore::RenderListBox::scrollbarsCanBeActive):
+        * rendering/RenderListBox.h:
+
+        This is the one caller of ScrollableArea:: scrollbarsCanBeActive() 
+        that needs to distinguish between the scrollbar-suppressing scenario 
+        and the in-the-page-cache scenario.
+        * page/FocusController.cpp:
+        (WebCore::FocusController::setContainingWindowIsVisible):
+
</ins><span class="cx"> 2012-09-10  James Robinson  &lt;jamesr@chromium.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r127837.
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/WebCore.exp.in        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -683,6 +683,7 @@
</span><span class="cx"> __ZN7WebCore4Page31setCustomHTMLTokenizerTimeDelayEd
</span><span class="cx"> __ZN7WebCore4Page32setMemoryCacheClientCallsEnabledEb
</span><span class="cx"> __ZN7WebCore4Page35resumeActiveDOMObjectsAndAnimationsEv
</span><ins>+__ZN7WebCore4Page36setShouldSuppressScrollbarAnimationsEb
</ins><span class="cx"> __ZN7WebCore4Page36suspendActiveDOMObjectsAndAnimationsEv
</span><span class="cx"> __ZN7WebCore4Page37setInLowQualityImageInterpolationModeEb
</span><span class="cx"> __ZN7WebCore4Page43setRelevantRepaintedObjectsCounterThresholdEy
</span></span></pre></div>
<a id="trunkSourceWebCorepageFocusControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FocusController.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FocusController.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/page/FocusController.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -708,7 +708,7 @@
</span><span class="cx"> 
</span><span class="cx">         for (HashSet&lt;ScrollableArea*&gt;::const_iterator it = scrollableAreas-&gt;begin(), end = scrollableAreas-&gt;end(); it != end; ++it) {
</span><span class="cx">             ScrollableArea* scrollableArea = *it;
</span><del>-            ASSERT(scrollableArea-&gt;isOnActivePage());
</del><ins>+            ASSERT(scrollableArea-&gt;scrollbarsCanBeActive() || m_page-&gt;shouldSuppressScrollbarAnimations());
</ins><span class="cx"> 
</span><span class="cx">             contentAreaDidShowOrHide(scrollableArea, containingWindowIsVisible);
</span><span class="cx">         }
</span></span></pre></div>
<a id="trunkSourceWebCorepageFrameViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FrameView.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FrameView.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/page/FrameView.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -2745,14 +2745,22 @@
</span><span class="cx">     page-&gt;chrome()-&gt;client()-&gt;notifyScrollerThumbIsVisibleInRect(scrollerThumb);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool FrameView::isOnActivePage() const
</del><ins>+bool FrameView::scrollbarsCanBeActive() const
</ins><span class="cx"> {
</span><span class="cx">     if (!m_frame)
</span><span class="cx">         return false;
</span><ins>+
</ins><span class="cx">     if (m_frame-&gt;view() != this)
</span><span class="cx">         return false;
</span><ins>+
+    if (Page* page = m_frame-&gt;page()) {
+        if (page-&gt;shouldSuppressScrollbarAnimations())
+            return false;
+    }
+
</ins><span class="cx">     if (Document* document = m_frame-&gt;document())
</span><span class="cx">         return !document-&gt;inPageCache();
</span><ins>+
</ins><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -2838,7 +2846,7 @@
</span><span class="cx">     for (HashSet&lt;ScrollableArea*&gt;::const_iterator it = m_scrollableAreas-&gt;begin(), end = m_scrollableAreas-&gt;end(); it != end; ++it) {
</span><span class="cx">         ScrollableArea* scrollableArea = *it;
</span><span class="cx"> 
</span><del>-        ASSERT(scrollableArea-&gt;isOnActivePage());
</del><ins>+        ASSERT(scrollableArea-&gt;scrollbarsCanBeActive());
</ins><span class="cx">         scrollableArea-&gt;scrollAnimator()-&gt;setIsActive();
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -2857,7 +2865,7 @@
</span><span class="cx">     for (HashSet&lt;ScrollableArea*&gt;::const_iterator it = m_scrollableAreas-&gt;begin(), end = m_scrollableAreas-&gt;end(); it != end; ++it) {
</span><span class="cx">         ScrollableArea* scrollableArea = *it;
</span><span class="cx"> 
</span><del>-        if (!scrollableArea-&gt;isOnActivePage())
</del><ins>+        if (!scrollableArea-&gt;scrollbarsCanBeActive())
</ins><span class="cx">             continue;
</span><span class="cx"> 
</span><span class="cx">         scrollableArea-&gt;contentAreaWillPaint();
</span></span></pre></div>
<a id="trunkSourceWebCorepageFrameViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/FrameView.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/FrameView.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/page/FrameView.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -320,6 +320,8 @@
</span><span class="cx"> 
</span><span class="cx">     virtual IntPoint currentMousePosition() const;
</span><span class="cx"> 
</span><ins>+    virtual bool scrollbarsCanBeActive() const OVERRIDE;
+
</ins><span class="cx">     // FIXME: Remove this method once plugin loading is decoupled from layout.
</span><span class="cx">     void flushAnyPendingPostLayoutTasks();
</span><span class="cx"> 
</span><span class="lines">@@ -410,7 +412,6 @@
</span><span class="cx">     virtual void getTickmarks(Vector&lt;IntRect&gt;&amp;) const OVERRIDE;
</span><span class="cx">     virtual void scrollTo(const IntSize&amp;) OVERRIDE;
</span><span class="cx">     virtual void setVisibleScrollerThumbRect(const IntRect&amp;) OVERRIDE;
</span><del>-    virtual bool isOnActivePage() const OVERRIDE;
</del><span class="cx">     virtual ScrollableArea* enclosingScrollableArea() const OVERRIDE;
</span><span class="cx">     virtual IntRect scrollableAreaBoundingBox() const OVERRIDE;
</span><span class="cx">     virtual bool scrollAnimatorEnabled() const OVERRIDE;
</span></span></pre></div>
<a id="trunkSourceWebCorepagePagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Page.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Page.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/page/Page.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -144,6 +144,7 @@
</span><span class="cx">     , m_mediaVolume(1)
</span><span class="cx">     , m_pageScaleFactor(1)
</span><span class="cx">     , m_deviceScaleFactor(1)
</span><ins>+    , m_suppressScrollbarAnimations(false)
</ins><span class="cx">     , m_javaScriptURLsAreAllowed(true)
</span><span class="cx">     , m_didLoadUserStyleSheet(false)
</span><span class="cx">     , m_userStyleSheetModificationTime(0)
</span><span class="lines">@@ -693,6 +694,46 @@
</span><span class="cx">     pageCache()-&gt;markPagesForFullStyleRecalc(this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void Page::setShouldSuppressScrollbarAnimations(bool suppressAnimations)
+{
+    if (suppressAnimations == m_suppressScrollbarAnimations)
+        return;
+
+    if (!suppressAnimations) {
+        // If animations are not going to be suppressed anymore, then there is nothing to do here but
+        // change the cached value.
+        m_suppressScrollbarAnimations = suppressAnimations;
+        return;
+    }
+
+    // On the other hand, if we are going to start suppressing animations, then we need to make sure we
+    // finish any current scroll animations first.
+    FrameView* view = mainFrame()-&gt;view();
+    if (!view)
+        return;
+
+    view-&gt;finishCurrentScrollAnimations();
+    
+    for (Frame* frame = mainFrame(); frame; frame = frame-&gt;tree()-&gt;traverseNext()) {
+        FrameView* frameView = frame-&gt;view();
+        if (!frameView)
+            continue;
+
+        const HashSet&lt;ScrollableArea*&gt;* scrollableAreas = frameView-&gt;scrollableAreas();
+        if (!scrollableAreas)
+            continue;
+
+        for (HashSet&lt;ScrollableArea*&gt;::const_iterator it = scrollableAreas-&gt;begin(), end = scrollableAreas-&gt;end(); it != end; ++it) {
+            ScrollableArea* scrollableArea = *it;
+            ASSERT(scrollableArea-&gt;scrollbarsCanBeActive());
+
+            scrollableArea-&gt;finishCurrentScrollAnimations();
+        }
+    }
+
+    m_suppressScrollbarAnimations = suppressAnimations;
+}
+
</ins><span class="cx"> void Page::setPagination(const Pagination&amp; pagination)
</span><span class="cx"> {
</span><span class="cx">     if (m_pagination == pagination)
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Page.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Page.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/page/Page.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -247,6 +247,9 @@
</span><span class="cx">         float deviceScaleFactor() const { return m_deviceScaleFactor; }
</span><span class="cx">         void setDeviceScaleFactor(float);
</span><span class="cx"> 
</span><ins>+        bool shouldSuppressScrollbarAnimations() const { return m_suppressScrollbarAnimations; }
+        void setShouldSuppressScrollbarAnimations(bool suppressAnimations);
+
</ins><span class="cx">         // Page and FrameView both store a Pagination value. Page::pagination() is set only by API,
</span><span class="cx">         // and FrameView::pagination() is set only by CSS. Page::pagination() will affect all
</span><span class="cx">         // FrameViews in the page cache, but FrameView::pagination() only affects the current
</span><span class="lines">@@ -396,6 +399,8 @@
</span><span class="cx">         float m_pageScaleFactor;
</span><span class="cx">         float m_deviceScaleFactor;
</span><span class="cx"> 
</span><ins>+        bool m_suppressScrollbarAnimations;
+
</ins><span class="cx">         Pagination m_pagination;
</span><span class="cx"> 
</span><span class="cx">         bool m_javaScriptURLsAreAllowed;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformScrollAnimatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ScrollAnimator.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ScrollAnimator.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/platform/ScrollAnimator.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -83,6 +83,8 @@
</span><span class="cx">     virtual void contentAreaDidShow() const { }
</span><span class="cx">     virtual void contentAreaDidHide() const { }
</span><span class="cx"> 
</span><ins>+    virtual void finishCurrentScrollAnimations() { }
+
</ins><span class="cx">     virtual void didAddVerticalScrollbar(Scrollbar*) { }
</span><span class="cx">     virtual void willRemoveVerticalScrollbar(Scrollbar*) { }
</span><span class="cx">     virtual void didAddHorizontalScrollbar(Scrollbar*) { }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformScrollableAreacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ScrollableArea.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ScrollableArea.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/platform/ScrollableArea.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -256,6 +256,12 @@
</span><span class="cx">         scrollAnimator-&gt;contentAreaDidHide();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void ScrollableArea::finishCurrentScrollAnimations() const
+{
+    if (ScrollAnimator* scrollAnimator = existingScrollAnimator())
+        scrollAnimator-&gt;finishCurrentScrollAnimations();
+}
+
</ins><span class="cx"> void ScrollableArea::didAddVerticalScrollbar(Scrollbar* scrollbar)
</span><span class="cx"> {
</span><span class="cx">     scrollAnimator()-&gt;didAddVerticalScrollbar(scrollbar);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformScrollableAreah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ScrollableArea.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ScrollableArea.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/platform/ScrollableArea.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -81,6 +81,8 @@
</span><span class="cx">     void contentAreaDidShow() const;
</span><span class="cx">     void contentAreaDidHide() const;
</span><span class="cx"> 
</span><ins>+    void finishCurrentScrollAnimations() const;
+
</ins><span class="cx">     void didAddVerticalScrollbar(Scrollbar*);
</span><span class="cx">     void willRemoveVerticalScrollbar(Scrollbar*);
</span><span class="cx">     virtual void didAddHorizontalScrollbar(Scrollbar*);
</span><span class="lines">@@ -147,7 +149,7 @@
</span><span class="cx">     virtual void scrollbarStyleChanged(int /*newStyle*/, bool /*forceUpdate*/) { }
</span><span class="cx">     virtual void setVisibleScrollerThumbRect(const IntRect&amp;) { }
</span><span class="cx"> 
</span><del>-    virtual bool isOnActivePage() const = 0;
</del><ins>+    virtual bool scrollbarsCanBeActive() const = 0;
</ins><span class="cx">     
</span><span class="cx">     // Note that this only returns scrollable areas that can actually be scrolled.
</span><span class="cx">     virtual ScrollableArea* enclosingScrollableArea() const = 0;
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformchromiumFramelessScrollViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/chromium/FramelessScrollView.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/chromium/FramelessScrollView.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/platform/chromium/FramelessScrollView.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx">     return 0;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool FramelessScrollView::isOnActivePage() const
</del><ins>+bool FramelessScrollView::scrollbarsCanBeActive() const
</ins><span class="cx"> {
</span><span class="cx">     return isActive();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformchromiumFramelessScrollViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/chromium/FramelessScrollView.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/chromium/FramelessScrollView.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/platform/chromium/FramelessScrollView.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx">         virtual void invalidateScrollbarRect(Scrollbar*, const IntRect&amp;) OVERRIDE;
</span><span class="cx">         virtual bool isActive() const OVERRIDE;
</span><span class="cx">         virtual ScrollableArea* enclosingScrollableArea() const OVERRIDE;
</span><del>-        virtual bool isOnActivePage() const OVERRIDE;
</del><ins>+        virtual bool scrollbarsCanBeActive() const OVERRIDE;
</ins><span class="cx">         virtual IntRect scrollableAreaBoundingBox() const OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">         // Widget public methods:
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacScrollAnimatorMach"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -112,6 +112,8 @@
</span><span class="cx">     void didEndScrollGesture() const;
</span><span class="cx">     void mayBeginScrollGesture() const;
</span><span class="cx"> 
</span><ins>+    virtual void finishCurrentScrollAnimations();
+
</ins><span class="cx">     virtual void didAddVerticalScrollbar(Scrollbar*);
</span><span class="cx">     virtual void willRemoveVerticalScrollbar(Scrollbar*);
</span><span class="cx">     virtual void didAddHorizontalScrollbar(Scrollbar*);
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformmacScrollAnimatorMacmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.mm (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.mm        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/platform/mac/ScrollAnimatorMac.mm        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -263,7 +263,7 @@
</span><span class="cx">     if (!_scrollableArea)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (!_scrollableArea-&gt;isOnActivePage())
</del><ins>+    if (!_scrollableArea-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     _scrollableArea-&gt;scrollAnimator()-&gt;contentAreaWillPaint();
</span><span class="lines">@@ -739,7 +739,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollAnimatorMac::contentAreaWillPaint() const
</span><span class="cx"> {
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable())
</span><span class="cx">         [m_scrollbarPainterController.get() contentAreaWillDraw];
</span><span class="lines">@@ -747,7 +747,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollAnimatorMac::mouseEnteredContentArea() const
</span><span class="cx"> {
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable())
</span><span class="cx">         [m_scrollbarPainterController.get() mouseEnteredContentArea];
</span><span class="lines">@@ -755,7 +755,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollAnimatorMac::mouseExitedContentArea() const
</span><span class="cx"> {
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable())
</span><span class="cx">         [m_scrollbarPainterController.get() mouseExitedContentArea];
</span><span class="lines">@@ -763,7 +763,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollAnimatorMac::mouseMovedInContentArea() const
</span><span class="cx"> {
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable())
</span><span class="cx">         [m_scrollbarPainterController.get() mouseMovedInContentArea];
</span><span class="lines">@@ -775,7 +775,7 @@
</span><span class="cx">     if (recommendedScrollerStyle() != NSScrollerStyleLegacy)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable()) {
</span><span class="lines">@@ -792,7 +792,7 @@
</span><span class="cx">     if (recommendedScrollerStyle() != NSScrollerStyleLegacy)
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable()) {
</span><span class="lines">@@ -805,7 +805,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollAnimatorMac::willStartLiveResize()
</span><span class="cx"> {
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable())
</span><span class="cx">         [m_scrollbarPainterController.get() startLiveResize];
</span><span class="lines">@@ -813,7 +813,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollAnimatorMac::contentsResized() const
</span><span class="cx"> {
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable())
</span><span class="cx">         [m_scrollbarPainterController.get() contentAreaDidResize];
</span><span class="lines">@@ -821,7 +821,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollAnimatorMac::willEndLiveResize()
</span><span class="cx"> {
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable())
</span><span class="cx">         [m_scrollbarPainterController.get() endLiveResize];
</span><span class="lines">@@ -829,7 +829,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollAnimatorMac::contentAreaDidShow() const
</span><span class="cx"> {
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable())
</span><span class="cx">         [m_scrollbarPainterController.get() windowOrderedIn];
</span><span class="lines">@@ -837,7 +837,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollAnimatorMac::contentAreaDidHide() const
</span><span class="cx"> {
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable())
</span><span class="cx">         [m_scrollbarPainterController.get() windowOrderedOut];
</span><span class="lines">@@ -845,7 +845,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollAnimatorMac::didBeginScrollGesture() const
</span><span class="cx"> {
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable())
</span><span class="cx">         [m_scrollbarPainterController.get() beginScrollGesture];
</span><span class="lines">@@ -853,7 +853,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollAnimatorMac::didEndScrollGesture() const
</span><span class="cx"> {
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx">     if (isScrollbarOverlayAPIAvailable())
</span><span class="cx">         [m_scrollbarPainterController.get() endScrollGesture];
</span><span class="lines">@@ -861,7 +861,7 @@
</span><span class="cx"> 
</span><span class="cx"> void ScrollAnimatorMac::mayBeginScrollGesture() const
</span><span class="cx"> {
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         return;
</span><span class="cx">     if (!isScrollbarOverlayAPIAvailable())
</span><span class="cx">         return;
</span><span class="lines">@@ -870,6 +870,13 @@
</span><span class="cx">     [m_scrollbarPainterController.get() contentAreaScrolled];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void ScrollAnimatorMac::finishCurrentScrollAnimations()
+{
+    if (isScrollbarOverlayAPIAvailable()) {
+        [m_scrollbarPainterController.get() hideOverlayScrollers];
+    }
+}
+
</ins><span class="cx"> void ScrollAnimatorMac::didAddVerticalScrollbar(Scrollbar* scrollbar)
</span><span class="cx"> {
</span><span class="cx">     if (!isScrollbarOverlayAPIAvailable())
</span><span class="lines">@@ -964,7 +971,7 @@
</span><span class="cx">     // This function is called when a page is going into the page cache, but the page 
</span><span class="cx">     // isn't really scrolling in that case. We should only pass the message on to the
</span><span class="cx">     // ScrollbarPainterController when we're really scrolling on an active page.
</span><del>-    if (scrollableArea()-&gt;isOnActivePage())
</del><ins>+    if (scrollableArea()-&gt;scrollbarsCanBeActive())
</ins><span class="cx">         sendContentAreaScrolledSoon();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1170,7 +1177,7 @@
</span><span class="cx">     if (!isScrollbarOverlayAPIAvailable())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><del>-    if (!scrollableArea()-&gt;isOnActivePage()) {
</del><ins>+    if (!scrollableArea()-&gt;scrollbarsCanBeActive()) {
</ins><span class="cx">         m_needsScrollerStyleUpdate = true;
</span><span class="cx">         return;
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformwinPopupMenuWincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/win/PopupMenuWin.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/win/PopupMenuWin.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/platform/win/PopupMenuWin.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -741,7 +741,7 @@
</span><span class="cx">     return m_windowRect.size();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool PopupMenuWin::isOnActivePage() const
</del><ins>+bool PopupMenuWin::scrollbarsCanBeActive() const
</ins><span class="cx"> {
</span><span class="cx">     return m_showPopup;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformwinPopupMenuWinh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/win/PopupMenuWin.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/win/PopupMenuWin.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/platform/win/PopupMenuWin.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx">     virtual int visibleHeight() const OVERRIDE;
</span><span class="cx">     virtual int visibleWidth() const OVERRIDE;
</span><span class="cx">     virtual IntSize contentsSize() const OVERRIDE;
</span><del>-    virtual bool isOnActivePage() const OVERRIDE;
</del><ins>+    virtual bool scrollbarsCanBeActive() const OVERRIDE;
</ins><span class="cx">     virtual IntRect scrollableAreaBoundingBox() const OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     // NOTE: This should only be called by the overriden setScrollOffset from ScrollableArea.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -2210,9 +2210,12 @@
</span><span class="cx">     return view-&gt;frameView()-&gt;shouldSuspendScrollAnimations();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool RenderLayer::isOnActivePage() const
</del><ins>+bool RenderLayer::scrollbarsCanBeActive() const
</ins><span class="cx"> {
</span><del>-    return !m_renderer-&gt;document()-&gt;inPageCache();
</del><ins>+    RenderView* view = renderer()-&gt;view();
+    if (!view)
+        return false;
+    return view-&gt;frameView()-&gt;scrollbarsCanBeActive();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> IntPoint RenderLayer::currentMousePosition() const
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayer.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayer.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/rendering/RenderLayer.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -805,7 +805,7 @@
</span><span class="cx">     virtual IntSize overhangAmount() const;
</span><span class="cx">     virtual IntPoint currentMousePosition() const;
</span><span class="cx">     virtual bool shouldSuspendScrollAnimations() const;
</span><del>-    virtual bool isOnActivePage() const;
</del><ins>+    virtual bool scrollbarsCanBeActive() const;
</ins><span class="cx">     virtual IntRect scrollableAreaBoundingBox() const OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     // Rectangle encompassing the scroll corner and resizer rect.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderListBoxcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderListBox.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderListBox.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/rendering/RenderListBox.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -821,9 +821,12 @@
</span><span class="cx">     return view-&gt;frameView()-&gt;shouldSuspendScrollAnimations();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool RenderListBox::isOnActivePage() const
</del><ins>+bool RenderListBox::scrollbarsCanBeActive() const
</ins><span class="cx"> {
</span><del>-    return !document()-&gt;inPageCache();
</del><ins>+    RenderView* view = this-&gt;view();
+    if (!view)
+        return false;
+    return view-&gt;frameView()-&gt;scrollbarsCanBeActive();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> ScrollableArea* RenderListBox::enclosingScrollableArea() const
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderListBoxh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderListBox.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderListBox.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebCore/rendering/RenderListBox.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx">     virtual int visibleWidth() const OVERRIDE;
</span><span class="cx">     virtual IntPoint currentMousePosition() const OVERRIDE;
</span><span class="cx">     virtual bool shouldSuspendScrollAnimations() const OVERRIDE;
</span><del>-    virtual bool isOnActivePage() const OVERRIDE;
</del><ins>+    virtual bool scrollbarsCanBeActive() const OVERRIDE;
</ins><span class="cx"> 
</span><span class="cx">     virtual ScrollableArea* enclosingScrollableArea() const OVERRIDE;
</span><span class="cx">     virtual IntRect scrollableAreaBoundingBox() const OVERRIDE;
</span></span></pre></div>
<a id="trunkSourceWebKitchromiumChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/chromium/ChangeLog (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/chromium/ChangeLog        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit/chromium/ChangeLog        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2012-09-10  Beth Dakin  &lt;bdakin@apple.com&gt;
+
+        https://bugs.webkit.org/show_bug.cgi?id=96158
+        Need API to suppress scrollbar animations
+        -and corresponding-
+        &lt;rdar://problem/12210972&gt;
+
+        Reviewed by Sam Weinig.
+
+        ScrollableArea::isOnActivePage() has been re-named to
+        ScrollableArea:: scrollbarsCanBeActive().
+        * src/ScrollbarGroup.cpp:
+        (WebKit::ScrollbarGroup::scrollbarsCanBeActive):
+        * src/ScrollbarGroup.h:
+        * tests/GraphicsLayerChromiumTest.cpp:
+        * tests/ScrollAnimatorNoneTest.cpp:
+        (MockScrollableArea):
+
</ins><span class="cx"> 2012-09-10  Dan Alcantara  &lt;dfalcantara@chromium.org&gt;
</span><span class="cx"> 
</span><span class="cx">         [chromium, android] Reloading a page with a different user agent can cause the page to be zoomed in
</span></span></pre></div>
<a id="trunkSourceWebKitchromiumsrcScrollbarGroupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/chromium/src/ScrollbarGroup.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/chromium/src/ScrollbarGroup.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit/chromium/src/ScrollbarGroup.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -263,7 +263,7 @@
</span><span class="cx">         m_verticalScrollbar-&gt;scrollbarStyleChanged();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool ScrollbarGroup::isOnActivePage() const
</del><ins>+bool ScrollbarGroup::scrollbarsCanBeActive() const
</ins><span class="cx"> {
</span><span class="cx">     return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKitchromiumsrcScrollbarGrouph"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/chromium/src/ScrollbarGroup.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/chromium/src/ScrollbarGroup.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit/chromium/src/ScrollbarGroup.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -72,7 +72,7 @@
</span><span class="cx">     virtual WebCore::IntPoint currentMousePosition() const OVERRIDE;
</span><span class="cx">     virtual bool shouldSuspendScrollAnimations() const OVERRIDE;
</span><span class="cx">     virtual void scrollbarStyleChanged(int newStyle, bool forceUpdate) OVERRIDE;
</span><del>-    virtual bool isOnActivePage() const OVERRIDE;
</del><ins>+    virtual bool scrollbarsCanBeActive() const OVERRIDE;
</ins><span class="cx">     virtual WebCore::IntRect scrollableAreaBoundingBox() const OVERRIDE;
</span><span class="cx"> 
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceWebKitchromiumtestsGraphicsLayerChromiumTestcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit/chromium/tests/GraphicsLayerChromiumTest.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -133,7 +133,7 @@
</span><span class="cx">     virtual int visibleWidth() const OVERRIDE { return 10; }
</span><span class="cx">     virtual int visibleHeight() const OVERRIDE { return 10; }
</span><span class="cx">     virtual IntSize contentsSize() const OVERRIDE { return IntSize(100, 100); }
</span><del>-    virtual bool isOnActivePage() const OVERRIDE { return false; }
</del><ins>+    virtual bool scrollbarsCanBeActive() const OVERRIDE { return false; }
</ins><span class="cx">     virtual ScrollableArea* enclosingScrollableArea() const OVERRIDE { return 0; }
</span><span class="cx">     virtual IntRect scrollableAreaBoundingBox() const OVERRIDE { return IntRect(); }
</span><span class="cx">     virtual void invalidateScrollbarRect(Scrollbar*, const IntRect&amp;) OVERRIDE { }
</span></span></pre></div>
<a id="trunkSourceWebKitchromiumtestsScrollAnimatorNoneTestcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit/chromium/tests/ScrollAnimatorNoneTest.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx">     MOCK_CONST_METHOD1(visibleContentRect, IntRect(bool));
</span><span class="cx">     MOCK_CONST_METHOD0(contentsSize, IntSize());
</span><span class="cx">     MOCK_CONST_METHOD0(overhangAmount, IntSize());
</span><del>-    MOCK_CONST_METHOD0(isOnActivePage, bool());
</del><ins>+    MOCK_CONST_METHOD0(scrollbarsCanBeActive, bool());
</ins><span class="cx">     MOCK_CONST_METHOD0(scrollableAreaBoundingBox, IntRect());
</span><span class="cx"> 
</span><span class="cx">     virtual IntPoint scrollPosition() const OVERRIDE { return IntPoint(); }
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit/win/ChangeLog        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2012-09-10  Beth Dakin  &lt;bdakin@apple.com&gt;
+
+        https://bugs.webkit.org/show_bug.cgi?id=96158
+        Need API to suppress scrollbar animations
+        -and corresponding-
+        &lt;rdar://problem/12210972&gt;
+
+        Reviewed by Sam Weinig.
+
+        ScrollableArea::isOnActivePage() has been re-named to
+        ScrollableArea:: scrollbarsCanBeActive().
+        * WebScrollBar.cpp:
+        (WebScrollBar::scrollbarsCanBeActive):
+        * WebScrollBar.h:
+        (WebScrollBar):
+
</ins><span class="cx"> 2012-09-10  Dominic Mazzoni  &lt;dmazzoni@google.com&gt;
</span><span class="cx"> 
</span><span class="cx">         AX: Update Windows port accessible role mappings to fix some tests
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebScrollBarcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebScrollBar.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebScrollBar.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit/win/WebScrollBar.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -300,7 +300,7 @@
</span><span class="cx">     return m_scrollBar-&gt;frameRect().size();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool WebScrollBar::isOnActivePage() const
</del><ins>+bool WebScrollBar::scrollbarsCanBeActive() const
</ins><span class="cx"> {
</span><span class="cx">     return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebScrollBarh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebScrollBar.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebScrollBar.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit/win/WebScrollBar.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -120,7 +120,7 @@
</span><span class="cx">     virtual int visibleHeight() const OVERRIDE;
</span><span class="cx">     virtual int visibleWidth() const OVERRIDE;
</span><span class="cx">     virtual WebCore::IntSize contentsSize() const OVERRIDE;
</span><del>-    virtual bool isOnActivePage() const OVERRIDE;
</del><ins>+    virtual bool scrollbarsCanBeActive() const OVERRIDE;
</ins><span class="cx">     virtual WebCore::IntRect scrollableAreaBoundingBox() const OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     // FIXME: We should provide a way to set this value.
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit2/ChangeLog        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -1,3 +1,45 @@
</span><ins>+2012-09-10  Beth Dakin  &lt;bdakin@apple.com&gt;
+
+        https://bugs.webkit.org/show_bug.cgi?id=96158
+        Need API to suppress scrollbar animations
+        -and corresponding-
+        &lt;rdar://problem/12210972&gt;
+
+        Reviewed by Sam Weinig.
+
+        Add suppressScrollbarAnimations as a WebCreationParameter.
+        * Shared/WebPageCreationParameters.h:
+        (WebPageCreationParameters):
+
+        New API. Calls into the web process for the setter but not the 
+        getter.
+        * UIProcess/API/C/WKPage.cpp:
+        (WKPageSetSuppressScrollbarAnimations):
+        (WKPageAreScrollbarAnimationsSuppressed):
+        * UIProcess/API/C/WKPage.h:
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::WebPageProxy):
+        (WebKit::WebPageProxy::setSuppressScrollbarAnimations):
+        (WebKit):
+        (WebKit::WebPageProxy::creationParameters):
+        * UIProcess/WebPageProxy.h:
+        (WebPageProxy):
+        (WebKit::WebPageProxy::areScrollbarAnimationsSuppressed):
+        * WebProcess/WebPage/WebPage.messages.in:
+
+        Call into WebCore.
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::setSuppressScrollbarAnimations):
+        (WebKit):
+        * WebProcess/WebPage/WebPage.h:
+        (WebPage):
+
+        This ScrollableArea area function is re-named by this patch in 
+        WebCore.
+        * WebProcess/Plugins/PDF/BuiltInPDFView.h:
+        * WebProcess/Plugins/PDF/BuiltInPDFView.mm:
+        (WebKit::BuiltInPDFView::scrollbarsCanBeActive):
+
</ins><span class="cx"> 2012-09-10  James Robinson  &lt;jamesr@chromium.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r127837.
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebPageCreationParametersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebPageCreationParameters.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebPageCreationParameters.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit2/Shared/WebPageCreationParameters.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -67,6 +67,8 @@
</span><span class="cx">     bool useFixedLayout;
</span><span class="cx">     WebCore::IntSize fixedLayoutSize;
</span><span class="cx"> 
</span><ins>+    bool suppressScrollbarAnimations;
+
</ins><span class="cx">     WebCore::Pagination::Mode paginationMode;
</span><span class="cx">     bool paginationBehavesLikeColumns;
</span><span class="cx">     double pageLength;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -340,6 +340,16 @@
</span><span class="cx">     return toImpl(pageRef)-&gt;hasVerticalScrollbar();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WKPageSetSuppressScrollbarAnimations(WKPageRef pageRef, bool suppressAnimations)
+{
+    toImpl(pageRef)-&gt;setSuppressScrollbarAnimations(suppressAnimations);
+}
+
+bool WKPageAreScrollbarAnimationsSuppressed(WKPageRef pageRef)
+{
+    return toImpl(pageRef)-&gt;areScrollbarAnimationsSuppressed();
+}
+
</ins><span class="cx"> bool WKPageIsPinnedToLeftSide(WKPageRef pageRef)
</span><span class="cx"> {
</span><span class="cx">     return toImpl(pageRef)-&gt;isPinnedToLeftSide();
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICWKPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPage.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/C/WKPage.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPage.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -422,6 +422,9 @@
</span><span class="cx"> WK_EXPORT bool WKPageHasHorizontalScrollbar(WKPageRef page);
</span><span class="cx"> WK_EXPORT bool WKPageHasVerticalScrollbar(WKPageRef page);
</span><span class="cx"> 
</span><ins>+WK_EXPORT void WKPageSetSuppressScrollbarAnimations(WKPageRef page, bool suppressAnimations);
+WK_EXPORT bool WKPageAreScrollbarAnimationsSuppressed(WKPageRef page);
+
</ins><span class="cx"> WK_EXPORT bool WKPageIsPinnedToLeftSide(WKPageRef page);
</span><span class="cx"> WK_EXPORT bool WKPageIsPinnedToRightSide(WKPageRef page);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -183,6 +183,7 @@
</span><span class="cx">     , m_drawsTransparentBackground(false)
</span><span class="cx">     , m_areMemoryCacheClientCallsEnabled(true)
</span><span class="cx">     , m_useFixedLayout(false)
</span><ins>+    , m_suppressScrollbarAnimations(false)
</ins><span class="cx">     , m_paginationMode(Pagination::Unpaginated)
</span><span class="cx">     , m_paginationBehavesLikeColumns(false)
</span><span class="cx">     , m_pageLength(0)
</span><span class="lines">@@ -1502,6 +1503,18 @@
</span><span class="cx">     m_process-&gt;send(Messages::WebPage::SetFixedLayoutSize(size), m_pageID);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebPageProxy::setSuppressScrollbarAnimations(bool suppressAnimations)
+{
+    if (!isValid())
+        return;
+
+    if (suppressAnimations == m_suppressScrollbarAnimations)
+        return;
+
+    m_suppressScrollbarAnimations = suppressAnimations;
+    m_process-&gt;send(Messages::WebPage::SetSuppressScrollbarAnimations(suppressAnimations), m_pageID);
+}
+
</ins><span class="cx"> void WebPageProxy::setPaginationMode(WebCore::Pagination::Mode mode)
</span><span class="cx"> {
</span><span class="cx">     if (mode == m_paginationMode)
</span><span class="lines">@@ -3615,6 +3628,7 @@
</span><span class="cx">     parameters.areMemoryCacheClientCallsEnabled = m_areMemoryCacheClientCallsEnabled;
</span><span class="cx">     parameters.useFixedLayout = m_useFixedLayout;
</span><span class="cx">     parameters.fixedLayoutSize = m_fixedLayoutSize;
</span><ins>+    parameters.suppressScrollbarAnimations = m_suppressScrollbarAnimations;
</ins><span class="cx">     parameters.paginationMode = m_paginationMode;
</span><span class="cx">     parameters.paginationBehavesLikeColumns = m_paginationBehavesLikeColumns;
</span><span class="cx">     parameters.pageLength = m_pageLength;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -486,6 +486,9 @@
</span><span class="cx">     bool hasHorizontalScrollbar() const { return m_mainFrameHasHorizontalScrollbar; }
</span><span class="cx">     bool hasVerticalScrollbar() const { return m_mainFrameHasVerticalScrollbar; }
</span><span class="cx"> 
</span><ins>+    void setSuppressScrollbarAnimations(bool);
+    bool areScrollbarAnimationsSuppressed() const { return m_suppressScrollbarAnimations; }
+
</ins><span class="cx">     bool isPinnedToLeftSide() const { return m_mainFrameIsPinnedToLeftSide; }
</span><span class="cx">     bool isPinnedToRightSide() const { return m_mainFrameIsPinnedToRightSide; }
</span><span class="cx"> 
</span><span class="lines">@@ -1096,6 +1099,8 @@
</span><span class="cx">     bool m_useFixedLayout;
</span><span class="cx">     WebCore::IntSize m_fixedLayoutSize;
</span><span class="cx"> 
</span><ins>+    bool m_suppressScrollbarAnimations;
+
</ins><span class="cx">     WebCore::Pagination::Mode m_paginationMode;
</span><span class="cx">     bool m_paginationBehavesLikeColumns;
</span><span class="cx">     double m_pageLength;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcesswinWebPopupMenuProxyWinh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/win/WebPopupMenuProxyWin.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/win/WebPopupMenuProxyWin.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit2/UIProcess/win/WebPopupMenuProxyWin.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx">     virtual int visibleWidth() const OVERRIDE;
</span><span class="cx">     virtual WebCore::IntSize contentsSize() const OVERRIDE;
</span><span class="cx">     virtual WebCore::IntRect scrollableAreaBoundingBox() const OVERRIDE;
</span><del>-    virtual bool isOnActivePage() const OVERRIDE { return true; }
</del><ins>+    virtual bool scrollbarsCanBeActive() const OVERRIDE { return true; }
</ins><span class="cx"> 
</span><span class="cx">     // NOTE: This should only be called by the overriden setScrollOffset from ScrollableArea.
</span><span class="cx">     void scrollTo(int offset);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFBuiltInPDFViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx">     virtual WebCore::IntSize contentsSize() const OVERRIDE;
</span><span class="cx">     virtual WebCore::Scrollbar* horizontalScrollbar() const OVERRIDE { return m_horizontalScrollbar.get(); }
</span><span class="cx">     virtual WebCore::Scrollbar* verticalScrollbar() const OVERRIDE { return m_verticalScrollbar.get(); }
</span><del>-    virtual bool isOnActivePage() const OVERRIDE;
</del><ins>+    virtual bool scrollbarsCanBeActive() const OVERRIDE;
</ins><span class="cx">     virtual bool shouldSuspendScrollAnimations() const OVERRIDE { return false; } // If we return true, ScrollAnimatorMac will keep cycling a timer forever, waiting for a good time to animate.
</span><span class="cx">     virtual void scrollbarStyleChanged(int newStyle, bool forceUpdate) OVERRIDE;
</span><span class="cx">     // FIXME: Implement the other conversion functions; this one is enough to get scrollbar hit testing working.
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFBuiltInPDFViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.mm (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.mm        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.mm        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -792,7 +792,7 @@
</span><span class="cx">     return m_pdfDocumentSize;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-bool BuiltInPDFView::isOnActivePage() const
</del><ins>+bool BuiltInPDFView::scrollbarsCanBeActive() const
</ins><span class="cx"> {
</span><span class="cx">     return !pluginView()-&gt;frame()-&gt;document()-&gt;inPageCache();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -1124,6 +1124,11 @@
</span><span class="cx">         view-&gt;forceLayout();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebPage::setSuppressScrollbarAnimations(bool suppressAnimations)
+{
+    m_page-&gt;setShouldSuppressScrollbarAnimations(suppressAnimations);
+}
+
</ins><span class="cx"> void WebPage::setPaginationMode(uint32_t mode)
</span><span class="cx"> {
</span><span class="cx">     Pagination pagination = m_page-&gt;pagination();
</span><span class="lines">@@ -3248,7 +3253,7 @@
</span><span class="cx"> 
</span><span class="cx">         for (HashSet&lt;ScrollableArea*&gt;::const_iterator it = scrollableAreas-&gt;begin(), end = scrollableAreas-&gt;end(); it != end; ++it) {
</span><span class="cx">             ScrollableArea* scrollableArea = *it;
</span><del>-            if (!scrollableArea-&gt;isOnActivePage())
</del><ins>+            if (!scrollableArea-&gt;scrollbarsCanBeActive())
</ins><span class="cx">                 continue;
</span><span class="cx"> 
</span><span class="cx">             if (hasEnabledHorizontalScrollbar(scrollableArea))
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -309,6 +309,8 @@
</span><span class="cx">     bool useFixedLayout() const { return m_useFixedLayout; }
</span><span class="cx">     void setFixedLayoutSize(const WebCore::IntSize&amp;);
</span><span class="cx"> 
</span><ins>+    void setSuppressScrollbarAnimations(bool);
+
</ins><span class="cx">     void setPaginationMode(uint32_t /* WebCore::Pagination::Mode */);
</span><span class="cx">     void setPaginationBehavesLikeColumns(bool);
</span><span class="cx">     void setPageLength(double);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagemessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (128133 => 128134)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2012-09-11 00:22:06 UTC (rev 128133)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2012-09-11 00:37:06 UTC (rev 128134)
</span><span class="lines">@@ -140,6 +140,8 @@
</span><span class="cx">     SetUseFixedLayout(bool fixed)
</span><span class="cx">     SetFixedLayoutSize(WebCore::IntSize size)
</span><span class="cx"> 
</span><ins>+    SetSuppressScrollbarAnimations(bool suppressAnimations)
+
</ins><span class="cx">     SetPaginationMode(uint32_t mode);
</span><span class="cx">     SetPaginationBehavesLikeColumns(bool behavesLikeColumns);
</span><span class="cx">     SetPageLength(double pageLength);
</span></span></pre>
</div>
</div>

</body>
</html>