[chromium] Add minimum/maximumPageScaleFactor API and clamp fixes
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 Nov 2011 19:13:25 +0000 (19:13 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 Nov 2011 19:13:25 +0000 (19:13 +0000)
https://bugs.webkit.org/show_bug.cgi?id=72463

Patch by Alexandre Elias <aelias@google.com> on 2011-11-16
Reviewed by Darin Fisher.

We need a way to read back the computed min/max page scale factor in
order to support the software path, and for some application logic
such as zooming in/out when tapping form fields.

I also added a few clamp calls that are needed in some corner cases.

* public/WebView.h:
* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::setPageScaleFactor):
(WebKit::WebViewImpl::setPageScaleFactorLimits):
(WebKit::WebViewImpl::minimumPageScaleFactor):
(WebKit::WebViewImpl::maximumPageScaleFactor):
* src/WebViewImpl.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@100474 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit/chromium/ChangeLog
Source/WebKit/chromium/public/WebView.h
Source/WebKit/chromium/src/WebViewImpl.cpp
Source/WebKit/chromium/src/WebViewImpl.h

index 5bc90d573b1b085d9bb204478525f491f5723912..983004589ab851a02512e2cb0ce43614e88c6a9a 100644 (file)
@@ -1,3 +1,24 @@
+2011-11-16  Alexandre Elias  <aelias@google.com>
+
+        [chromium] Add minimum/maximumPageScaleFactor API and clamp fixes
+        https://bugs.webkit.org/show_bug.cgi?id=72463
+
+        Reviewed by Darin Fisher.
+
+        We need a way to read back the computed min/max page scale factor in
+        order to support the software path, and for some application logic
+        such as zooming in/out when tapping form fields.
+
+        I also added a few clamp calls that are needed in some corner cases.
+
+        * public/WebView.h:
+        * src/WebViewImpl.cpp:
+        (WebKit::WebViewImpl::setPageScaleFactor):
+        (WebKit::WebViewImpl::setPageScaleFactorLimits):
+        (WebKit::WebViewImpl::minimumPageScaleFactor):
+        (WebKit::WebViewImpl::maximumPageScaleFactor):
+        * src/WebViewImpl.h:
+
 2011-11-16  Vsevolod Vlasov  <vsevik@chromium.org>
 
         Web Inspector: Application cache status should be updated after swapCache().
index 1e180e911af8d4c5a13e1453cfb25a8047c09ba1..7bd6c9d29a2d8de0093bcf19daf3dd6a2b7857ee 100644 (file)
@@ -227,6 +227,9 @@ public:
     // again).
     virtual void setPageScaleFactorLimits(float minPageScale, float maxPageScale) = 0;
 
+    virtual float minimumPageScaleFactor() const = 0;
+    virtual float maximumPageScaleFactor() const = 0;
+
     // The ratio of the current device's screen DPI to the target device's screen DPI.
     virtual float deviceScaleFactor() const = 0;
 
index 6f6be47ede76646736cfb0a2b0ed3a491201534e..0c137869c967bfcdd51b19cd26e352d57a8d1ec9 100644 (file)
@@ -1903,7 +1903,8 @@ void WebViewImpl::setPageScaleFactor(float scaleFactor, const WebPoint& origin)
         scaleFactor = 1;
 
     scaleFactor = computePageScaleFactorWithinLimits(scaleFactor);
-    page()->setPageScaleFactor(scaleFactor, origin);
+    WebPoint clampedOrigin = clampOffsetAtScale(origin, scaleFactor);
+    page()->setPageScaleFactor(scaleFactor, clampedOrigin);
 }
 
 float WebViewImpl::deviceScaleFactor() const
@@ -1968,6 +1969,20 @@ void WebViewImpl::setPageScaleFactorLimits(float minPageScale, float maxPageScal
     if (m_layerTreeHost)
         m_layerTreeHost->setPageScaleFactorLimits(m_minimumPageScaleFactor, m_maximumPageScaleFactor);
 #endif
+
+    float clampedScale = computePageScaleFactorWithinLimits(pageScaleFactor());
+    if (clampedScale != pageScaleFactor())
+        setPageScaleFactorPreservingScrollOffset(clampedScale);
+}
+
+float WebViewImpl::minimumPageScaleFactor() const
+{
+    return m_minimumPageScaleFactor;
+}
+
+float WebViewImpl::maximumPageScaleFactor() const
+{
+    return m_maximumPageScaleFactor;
 }
 
 WebSize WebViewImpl::fixedLayoutSize() const
index 8c09bd883802f54763aa3c1a9c86ad98b99f23a9..adcb82f1b4d6b422c26b3536f369932e7e5d71a0 100644 (file)
@@ -161,6 +161,9 @@ public:
     virtual void setPageScaleFactorPreservingScrollOffset(float);
     virtual void setPageScaleFactor(float scaleFactor, const WebPoint& origin);
     virtual void setPageScaleFactorLimits(float minPageScale, float maxPageScale);
+    virtual float minimumPageScaleFactor() const;
+    virtual float maximumPageScaleFactor() const;
+
     virtual float deviceScaleFactor() const;
     virtual void setDeviceScaleFactor(float);
     virtual bool isFixedLayoutModeEnabled() const;