Title: [100508] trunk/Source
Revision
100508
Author
commit-qu...@webkit.org
Date
2011-11-16 14:37:55 -0800 (Wed, 16 Nov 2011)

Log Message

[chromium] Improvements for page scale delta during commit
https://bugs.webkit.org/show_bug.cgi?id=72471

Patch by Alexandre Elias <ael...@google.com> on 2011-11-16
Reviewed by James Robinson.

Page scale now follows the same commit flow as scroll position:
the delta is folded into m_pageScale at BFAC time, and a "sent" value
is preserved for temporary use until the commit finishes.

I also merged setPageScaleFactor and setPageScaleFactorLimits into one
function on the impl side.  The reason is that setPageFactor must
be applied after the limits are updated, but on the other hand setting
the limits first may cause an unnecessary clamp of the scale delta.
Merging the methods avoids this bind.

No new tests. (planning to add later: https://bugs.webkit.org/show_bug.cgi?id=71529)

Source/WebCore:

* platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
(WebCore::CCLayerTreeHost::finishCommitOnImplThread):
(WebCore::CCLayerTreeHost::applyScrollAndScale):
* platform/graphics/chromium/cc/CCLayerTreeHostCommon.h:
* platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
(WebCore::CCLayerTreeHostImpl::CCLayerTreeHostImpl):
(WebCore::CCLayerTreeHostImpl::setPageScaleFactorAndLimits):
(WebCore::CCLayerTreeHostImpl::adjustScrollsForPageScaleChange):
(WebCore::CCLayerTreeHostImpl::setScaleDelta):
(WebCore::CCLayerTreeHostImpl::applyScaleDeltaToScrollLayer):
(WebCore::CCLayerTreeHostImpl::scrollRootLayer):
(WebCore::CCLayerTreeHostImpl::processScrollDeltas):
* platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:

Source/WebKit/chromium:

* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::applyScrollAndScale):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (100507 => 100508)


--- trunk/Source/WebCore/ChangeLog	2011-11-16 22:34:41 UTC (rev 100507)
+++ trunk/Source/WebCore/ChangeLog	2011-11-16 22:37:55 UTC (rev 100508)
@@ -1,3 +1,36 @@
+2011-11-16  Alexandre Elias  <ael...@google.com>
+
+        [chromium] Improvements for page scale delta during commit
+        https://bugs.webkit.org/show_bug.cgi?id=72471
+
+        Reviewed by James Robinson.
+
+        Page scale now follows the same commit flow as scroll position:
+        the delta is folded into m_pageScale at BFAC time, and a "sent" value
+        is preserved for temporary use until the commit finishes.
+
+        I also merged setPageScaleFactor and setPageScaleFactorLimits into one
+        function on the impl side.  The reason is that setPageFactor must
+        be applied after the limits are updated, but on the other hand setting
+        the limits first may cause an unnecessary clamp of the scale delta.
+        Merging the methods avoids this bind.
+
+        No new tests. (planning to add later: https://bugs.webkit.org/show_bug.cgi?id=71529)
+
+        * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
+        (WebCore::CCLayerTreeHost::finishCommitOnImplThread):
+        (WebCore::CCLayerTreeHost::applyScrollAndScale):
+        * platform/graphics/chromium/cc/CCLayerTreeHostCommon.h:
+        * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
+        (WebCore::CCLayerTreeHostImpl::CCLayerTreeHostImpl):
+        (WebCore::CCLayerTreeHostImpl::setPageScaleFactorAndLimits):
+        (WebCore::CCLayerTreeHostImpl::adjustScrollsForPageScaleChange):
+        (WebCore::CCLayerTreeHostImpl::setScaleDelta):
+        (WebCore::CCLayerTreeHostImpl::applyScaleDeltaToScrollLayer):
+        (WebCore::CCLayerTreeHostImpl::scrollRootLayer):
+        (WebCore::CCLayerTreeHostImpl::processScrollDeltas):
+        * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:
+
 2011-11-16  Joshua Bell  <jsb...@chromium.org>
 
         IndexedDB: Reduce nested key depth threshold, re-enable flaky test

Modified: trunk/Source/WebCore/platform/graphics/chromium/LayerChromium.h (100507 => 100508)


--- trunk/Source/WebCore/platform/graphics/chromium/LayerChromium.h	2011-11-16 22:34:41 UTC (rev 100507)
+++ trunk/Source/WebCore/platform/graphics/chromium/LayerChromium.h	2011-11-16 22:37:55 UTC (rev 100508)
@@ -138,7 +138,7 @@
 
     IntSize scrollDelta() const { return IntSize(); }
 
-    float scaleDelta() const { return 1; }
+    float pageScaleDelta() const { return 1; }
 
     bool doubleSided() const { return m_doubleSided; }
     void setDoubleSided(bool doubleSided) { m_doubleSided = doubleSided; setNeedsCommit(); }

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp (100507 => 100508)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp	2011-11-16 22:34:41 UTC (rev 100507)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp	2011-11-16 22:37:55 UTC (rev 100508)
@@ -52,7 +52,7 @@
     , m_usesLayerClipping(false)
     , m_isNonCompositedContent(false)
     , m_drawsContent(false)
-    , m_scaleDelta(1)
+    , m_pageScaleDelta(1)
     , m_targetRenderSurface(0)
     , m_drawDepth(0)
     , m_drawOpacity(0)
@@ -405,10 +405,10 @@
     }
 }
 
-void CCLayerImpl::setScaleDelta(float scaleDelta)
+void CCLayerImpl::setPageScaleDelta(float pageScaleDelta)
 {
-    if (m_scaleDelta != scaleDelta) {
-        m_scaleDelta = scaleDelta;
+    if (m_pageScaleDelta != pageScaleDelta) {
+        m_pageScaleDelta = pageScaleDelta;
         noteLayerPropertyChangedForSubtree();
     }
 }

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h (100507 => 100508)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h	2011-11-16 22:34:41 UTC (rev 100507)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h	2011-11-16 22:37:55 UTC (rev 100508)
@@ -160,8 +160,8 @@
     const IntSize& scrollDelta() const { return m_scrollDelta; }
     void setScrollDelta(const IntSize&);
 
-    float scaleDelta() const { return m_scaleDelta; }
-    void setScaleDelta(float);
+    float pageScaleDelta() const { return m_pageScaleDelta; }
+    void setPageScaleDelta(float);
 
     const IntSize& sentScrollDelta() const { return m_sentScrollDelta; }
     void setSentScrollDelta(const IntSize& sentScrollDelta) { m_sentScrollDelta = sentScrollDelta; }
@@ -253,7 +253,7 @@
     IntSize m_scrollDelta;
     IntSize m_sentScrollDelta;
     IntSize m_maxScrollPosition;
-    float m_scaleDelta;
+    float m_pageScaleDelta;
 
     // Properties owned exclusively by this CCLayerImpl.
     // Debugging.

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp (100507 => 100508)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp	2011-11-16 22:34:41 UTC (rev 100507)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp	2011-11-16 22:37:55 UTC (rev 100508)
@@ -131,8 +131,7 @@
     hostImpl->setHaveWheelEventHandlers(m_haveWheelEventHandlers);
     hostImpl->setZoomAnimatorTransform(m_zoomAnimatorTransform);
     hostImpl->setViewport(viewportSize());
-    hostImpl->setPageScale(pageScale());
-    hostImpl->setPageScaleFactorLimits(m_minPageScale, m_maxPageScale);
+    hostImpl->setPageScaleFactorAndLimits(pageScale(), m_minPageScale, m_maxPageScale);
 
     // Synchronize trees, if one exists at all...
     if (rootLayer())
@@ -464,7 +463,7 @@
 
     ASSERT(info.scrolls.size() == 1);
     IntSize scrollDelta = info.scrolls[0].scrollDelta;
-    m_client->applyScrollAndScale(scrollDelta, info.pageScale);
+    m_client->applyScrollAndScale(scrollDelta, info.pageScaleDelta);
 }
 
 void CCLayerTreeHost::startRateLimiter(GraphicsContext3D* context)

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp (100507 => 100508)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp	2011-11-16 22:34:41 UTC (rev 100507)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp	2011-11-16 22:37:55 UTC (rev 100508)
@@ -198,13 +198,13 @@
     TransformationMatrix layerLocalTransform;
     // LT = Tr[origin] * M[zoomAnimator]
     layerLocalTransform.multiply(layer->zoomAnimatorTransform());
-    // LT = Tr[origin] * M[zoomAnimator] * S[scaleDelta]
-    layerLocalTransform.scale(layer->scaleDelta());
-    // LT = Tr[origin] * M[zoomAnimator] * S[scaleDelta] * Tr[origin2anchor]
+    // LT = Tr[origin] * M[zoomAnimator] * S[pageScaleDelta]
+    layerLocalTransform.scale(layer->pageScaleDelta());
+    // LT = Tr[origin] * M[zoomAnimator] * S[pageScaleDelta] * Tr[origin2anchor]
     layerLocalTransform.translate3d(position.x(), position.y(), layer->anchorPointZ());
-    // LT = Tr[origin] * M[zoomAnimator] * S[scaleDelta] * Tr[origin2anchor] * M[layer]
+    // LT = Tr[origin] * M[zoomAnimator] * S[pageScaleDelta] * Tr[origin2anchor] * M[layer]
     layerLocalTransform.multiply(layer->transform());
-    // LT = Tr[origin] * M[zoomAnimator] * S[scaleDelta] * Tr[origin2anchor] * M[layer] * Tr[anchor2center]
+    // LT = Tr[origin] * M[zoomAnimator] * S[pageScaleDelta] * Tr[origin2anchor] * M[layer] * Tr[anchor2center]
     layerLocalTransform.translate3d(centerOffsetX, centerOffsetY, -layer->anchorPointZ());
 
     TransformationMatrix combinedTransform = parentMatrix;

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.h (100507 => 100508)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.h	2011-11-16 22:34:41 UTC (rev 100507)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostCommon.h	2011-11-16 22:37:55 UTC (rev 100508)
@@ -53,7 +53,7 @@
 
 struct CCScrollAndScaleSet {
     Vector<CCLayerTreeHostCommon::ScrollUpdateInfo> scrolls;
-    float pageScale;
+    float pageScaleDelta;
 };
 
 template<typename LayerType>

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp (100507 => 100508)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp	2011-11-16 22:34:41 UTC (rev 100507)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp	2011-11-16 22:37:55 UTC (rev 100508)
@@ -49,7 +49,8 @@
     , m_visible(true)
     , m_haveWheelEventHandlers(false)
     , m_pageScale(1)
-    , m_scaleDelta(1)
+    , m_pageScaleDelta(1)
+    , m_sentPageScaleDelta(1)
     , m_minPageScale(0)
     , m_maxPageScale(0)
     , m_pinchGestureActive(false)
@@ -194,27 +195,42 @@
     m_layerRenderer->viewportChanged();
 }
 
-void CCLayerTreeHostImpl::setPageScale(float pageScale)
+void CCLayerTreeHostImpl::setPageScaleFactorAndLimits(float pageScale, float minPageScale, float maxPageScale)
 {
-    if (!pageScale || pageScale == m_pageScale)
+    if (!pageScale)
         return;
 
-    // Maintain constant the product of m_pageScale * m_scaleDelta.
-    float scaleChange = pageScale / m_pageScale;
-    float oldMagnifyScale = m_pageScale * m_scaleDelta;
+    if (m_sentPageScaleDelta == 1 && pageScale == m_pageScale && minPageScale == m_minPageScale && maxPageScale == m_maxPageScale)
+        return;
+
+    m_minPageScale = minPageScale;
+    m_maxPageScale = maxPageScale;
+
+    float pageScaleChange = pageScale / m_pageScale;
     m_pageScale = pageScale;
+    m_sentPageScaleDelta = 1;
 
-    setScaleDelta(oldMagnifyScale / pageScale);
+    // Clamp delta to limits and refresh display matrix.
+    setPageScaleDelta(m_pageScaleDelta);
+    applyPageScaleDeltaToScrollLayer();
 
+    adjustScrollsForPageScaleChange(pageScaleChange);
+}
+
+void CCLayerTreeHostImpl::adjustScrollsForPageScaleChange(float pageScaleChange)
+{
+    if (pageScaleChange == 1)
+        return;
+
     // We also need to convert impl-side scroll deltas to pageScale space.
-    if (m_scrollLayerImpl && m_scrollLayerImpl->scrollable()) {
+    if (m_scrollLayerImpl) {
         IntSize scrollDelta = m_scrollLayerImpl->scrollDelta();
-        scrollDelta.scale(scaleChange);
+        scrollDelta.scale(pageScaleChange);
         m_scrollLayerImpl->setScrollDelta(scrollDelta);
     }
 }
 
-void CCLayerTreeHostImpl::setScaleDelta(float delta)
+void CCLayerTreeHostImpl::setPageScaleDelta(float delta)
 {
     // Clamp to the current min/max limits.
     float finalMagnifyScale = m_pageScale * delta;
@@ -223,24 +239,19 @@
     else if (m_maxPageScale && finalMagnifyScale > m_maxPageScale)
         delta = m_maxPageScale / m_pageScale;
 
-    if (delta == m_scaleDelta)
+    if (delta == m_pageScaleDelta)
         return;
 
-    m_scaleDelta = delta;
+    m_pageScaleDelta = delta;
 
     updateMaxScrollPosition();
-
-    if (m_scrollLayerImpl && m_scrollLayerImpl->scrollable())
-        m_scrollLayerImpl->setScaleDelta(m_scaleDelta);
+    applyPageScaleDeltaToScrollLayer();
 }
 
-void CCLayerTreeHostImpl::setPageScaleFactorLimits(float minPageScale, float maxPageScale)
+void CCLayerTreeHostImpl::applyPageScaleDeltaToScrollLayer()
 {
-    m_minPageScale = minPageScale;
-    m_maxPageScale = maxPageScale;
-
-    // This will clamp m_scaleDelta and apply side effects if clamped.
-    setScaleDelta(m_scaleDelta);
+    if (m_scrollLayerImpl)
+        m_scrollLayerImpl->setPageScaleDelta(m_pageScaleDelta * m_sentPageScaleDelta);
 }
 
 void CCLayerTreeHostImpl::updateMaxScrollPosition()
@@ -249,7 +260,7 @@
         return;
 
     FloatSize viewBounds = m_viewportSize;
-    viewBounds.scale(1 / m_scaleDelta);
+    viewBounds.scale(1 / m_pageScaleDelta);
 
     // TODO(aelias): Hardcoding the first child here is weird. Think of
     // a cleaner way to get the contentBounds on the Impl side.
@@ -274,7 +285,7 @@
 void CCLayerTreeHostImpl::scrollRootLayer(const IntSize& scrollDelta)
 {
     TRACE_EVENT("CCLayerTreeHostImpl::scrollRootLayer", this, 0);
-    if (!m_scrollLayerImpl || !m_scrollLayerImpl->scrollable())
+    if (!m_scrollLayerImpl)
         return;
 
     m_scrollLayerImpl->scrollBy(scrollDelta);
@@ -304,9 +315,9 @@
 
     // Keep the center-of-pinch anchor specified by (x, y) in a stable
     // position over the course of the magnify.
-    FloatPoint prevScaleAnchor(anchor.x() / m_scaleDelta, anchor.y() / m_scaleDelta);
-    setScaleDelta(m_scaleDelta * magnifyDelta);
-    FloatPoint newScaleAnchor(anchor.x() / m_scaleDelta, anchor.y() / m_scaleDelta);
+    FloatPoint prevScaleAnchor(anchor.x() / m_pageScaleDelta, anchor.y() / m_pageScaleDelta);
+    setPageScaleDelta(m_pageScaleDelta * magnifyDelta);
+    FloatPoint newScaleAnchor(anchor.x() / m_pageScaleDelta, anchor.y() / m_pageScaleDelta);
 
     FloatSize move = prevScaleAnchor - newScaleAnchor;
 
@@ -325,14 +336,17 @@
 PassOwnPtr<CCScrollAndScaleSet> CCLayerTreeHostImpl::processScrollDeltas()
 {
     OwnPtr<CCScrollAndScaleSet> scrollInfo = adoptPtr(new CCScrollAndScaleSet());
-    bool didMove = m_scrollLayerImpl && (!m_scrollLayerImpl->scrollDelta().isZero() || m_scaleDelta != 1.0f);
+    bool didMove = m_scrollLayerImpl && (!m_scrollLayerImpl->scrollDelta().isZero() || m_pageScaleDelta != 1.0f);
     if (!didMove || m_pinchGestureActive) {
-        scrollInfo->pageScale = m_pageScale;
+        m_sentPageScaleDelta = scrollInfo->pageScaleDelta = 1;
         return scrollInfo.release();
     }
 
+    m_sentPageScaleDelta = scrollInfo->pageScaleDelta = m_pageScaleDelta;
+    m_pageScale = m_pageScale * m_sentPageScaleDelta;
+    setPageScaleDelta(1);
+
     // FIXME: track scrolls from layers other than the root
-    scrollInfo->pageScale = m_pageScale * m_scaleDelta;
     CCLayerTreeHostCommon::ScrollUpdateInfo scroll;
     scroll.layerId = m_scrollLayerImpl->id();
     scroll.scrollDelta = m_scrollLayerImpl->scrollDelta();
@@ -343,6 +357,8 @@
     m_scrollLayerImpl->setSentScrollDelta(m_scrollLayerImpl->scrollDelta());
     m_scrollLayerImpl->setScrollDelta(IntSize());
 
+    adjustScrollsForPageScaleChange(m_sentPageScaleDelta);
+
     return scrollInfo.release();
 }
 

Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h (100507 => 100508)


--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h	2011-11-16 22:34:41 UTC (rev 100507)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h	2011-11-16 22:37:55 UTC (rev 100508)
@@ -99,9 +99,8 @@
     const IntSize& viewportSize() const { return m_viewportSize; }
     void setZoomAnimatorTransform(const TransformationMatrix&);
 
-    void setPageScale(float);
+    void setPageScaleFactorAndLimits(float pageScale, float minPageScale, float maxPageScale);
     float pageScale() const { return m_pageScale; }
-    void setPageScaleFactorLimits(float minPageScale, float maxPageScale);
 
     const CCSettings& settings() const { return m_settings; }
 
@@ -109,7 +108,6 @@
     virtual void pinchGestureUpdate(float, const IntPoint&);
     virtual void pinchGestureEnd();
     PassOwnPtr<CCScrollAndScaleSet> processScrollDeltas();
-    void updateMaxScrollPosition();
 
 protected:
     CCLayerTreeHostImpl(const CCSettings&, CCLayerTreeHostImplClient*);
@@ -118,7 +116,10 @@
     int m_frameNumber;
 
 private:
-    void setScaleDelta(float);
+    void setPageScaleDelta(float);
+    void applyPageScaleDeltaToScrollLayer();
+    void adjustScrollsForPageScaleChange(float);
+    void updateMaxScrollPosition();
 
     OwnPtr<LayerRendererChromium> m_layerRenderer;
     RefPtr<CCLayerImpl> m_rootLayerImpl;
@@ -129,7 +130,8 @@
     bool m_haveWheelEventHandlers;
 
     float m_pageScale;
-    float m_scaleDelta;
+    float m_pageScaleDelta;
+    float m_sentPageScaleDelta;
     float m_minPageScale, m_maxPageScale;
 
     bool m_pinchGestureActive;

Modified: trunk/Source/WebKit/chromium/ChangeLog (100507 => 100508)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-11-16 22:34:41 UTC (rev 100507)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-11-16 22:37:55 UTC (rev 100508)
@@ -1,3 +1,25 @@
+2011-11-16  Alexandre Elias  <ael...@google.com>
+
+        [chromium] Improvements for page scale delta during commit
+        https://bugs.webkit.org/show_bug.cgi?id=72471
+
+        Reviewed by James Robinson.
+
+        Page scale now follows the same commit flow as scroll position:
+        the delta is folded into m_pageScale at BFAC time, and a "sent" value
+        is preserved for temporary use until the commit finishes.
+
+        I also merged setPageScaleFactor and setPageScaleFactorLimits into one
+        function on the impl side.  The reason is that setPageFactor must
+        be applied after the limits are updated, but on the other hand setting
+        the limits first may cause an unnecessary clamp of the scale delta.
+        Merging the methods avoids this bind.
+
+        No new tests. (planning to add later: https://bugs.webkit.org/show_bug.cgi?id=71529)
+
+        * src/WebViewImpl.cpp:
+        (WebKit::WebViewImpl::applyScrollAndScale):
+
 2011-11-16  Dave Michael  <dmich...@chromium.org>
 
         Fix up chromium API for creating events, initializing message events

Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.cpp (100507 => 100508)


--- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2011-11-16 22:34:41 UTC (rev 100507)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2011-11-16 22:37:55 UTC (rev 100508)
@@ -2792,16 +2792,12 @@
     layout();
 }
 
-void WebViewImpl::applyScrollAndScale(const IntSize& scrollDelta, float scaleFactor)
+void WebViewImpl::applyScrollAndScale(const IntSize& scrollDelta, float pageScaleDelta)
 {
     if (!mainFrameImpl() || !mainFrameImpl()->frameView())
         return;
 
-    float oldScale = pageScaleFactor();
-    if (!oldScale)
-        oldScale = 1;
-
-    if (!scaleFactor || oldScale == scaleFactor)
+    if (pageScaleDelta == 1)
         mainFrameImpl()->frameView()->scrollBy(scrollDelta);
     else {
         // The page scale changed, so apply a scale and scroll in a single
@@ -2811,10 +2807,9 @@
         WebSize scrollOffset = mainFrame()->scrollOffset();
         scrollOffset.width += scrollDelta.width();
         scrollOffset.height += scrollDelta.height();
-        float scaleDelta = scaleFactor / oldScale;
-        WebPoint scaledScrollOffset(scrollOffset.width * scaleDelta,
-                                    scrollOffset.height * scaleDelta);
-        setPageScaleFactor(scaleFactor, scaledScrollOffset);
+        WebPoint scaledScrollOffset(scrollOffset.width * pageScaleDelta,
+                                    scrollOffset.height * pageScaleDelta);
+        setPageScaleFactor(pageScaleFactor() * pageScaleDelta, scaledScrollOffset);
     }
 }
 

Modified: trunk/Source/WebKit/chromium/tests/CCLayerImplTest.cpp (100507 => 100508)


--- trunk/Source/WebKit/chromium/tests/CCLayerImplTest.cpp	2011-11-16 22:34:41 UTC (rev 100507)
+++ trunk/Source/WebKit/chromium/tests/CCLayerImplTest.cpp	2011-11-16 22:37:55 UTC (rev 100508)
@@ -111,7 +111,7 @@
     EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->scrollBy(arbitraryIntSize));
     EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->setScrollDelta(arbitraryIntSize));
     EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->setScrollPosition(arbitraryIntPoint));
-    EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->setScaleDelta(arbitraryNumber));
+    EXECUTE_AND_VERIFY_SUBTREE_CHANGED(root->setPageScaleDelta(arbitraryNumber));
 
     // Changing these properties only affects the layer itself.
     EXECUTE_AND_VERIFY_ONLY_LAYER_CHANGED(root->setContentBounds(arbitraryIntSize));
@@ -149,7 +149,7 @@
     EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setDoubleSided(false)); // constructor initializes it to "true".
     EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setScrollDelta(arbitraryIntSize));
     EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setScrollPosition(arbitraryIntPoint));
-    EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setScaleDelta(arbitraryNumber));
+    EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setPageScaleDelta(arbitraryNumber));
     EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setContentBounds(arbitraryIntSize));
     EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setOpaque(true));
     EXECUTE_AND_VERIFY_SUBTREE_DID_NOT_CHANGE(root->setOpacity(arbitraryNumber));
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to