[Chromium] Expose deviceScaleFactor to WebKit API
authorfsamuel@chromium.org <fsamuel@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Nov 2011 17:10:03 +0000 (17:10 +0000)
committerfsamuel@chromium.org <fsamuel@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Nov 2011 17:10:03 +0000 (17:10 +0000)
https://bugs.webkit.org/show_bug.cgi?id=70614

Reviewed by Darin Fisher.

This exposes the device scale factor to the Chromium-WebKit API.
This scale factor is the ratio between the current device's DPI
and the target device's DPI.

For details on how this can be accessed from CSS and javascript, please
see here:

http://developer.android.com/guide/webapps/targeting.html#DensityCSS

* public/WebView.h:
* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::deviceScaleFactor):
(WebKit::WebViewImpl::setDeviceScaleFactor):
* src/WebViewImpl.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@99291 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 c454739f0b6716ac2398c62e2abbe013043ceee3..95b1300b49bcf3840a5232825d02da4578684ee2 100644 (file)
@@ -1,3 +1,25 @@
+2011-11-04  Fady Samuel  <fsamuel@chromium.org>
+
+        [Chromium] Expose deviceScaleFactor to WebKit API
+        https://bugs.webkit.org/show_bug.cgi?id=70614
+
+        Reviewed by Darin Fisher.
+
+        This exposes the device scale factor to the Chromium-WebKit API.
+        This scale factor is the ratio between the current device's DPI
+        and the target device's DPI. 
+
+        For details on how this can be accessed from CSS and javascript, please
+        see here:
+
+        http://developer.android.com/guide/webapps/targeting.html#DensityCSS
+
+        * public/WebView.h:
+        * src/WebViewImpl.cpp:
+        (WebKit::WebViewImpl::deviceScaleFactor):
+        (WebKit::WebViewImpl::setDeviceScaleFactor):
+        * src/WebViewImpl.h:
+
 2011-11-03  Adrienne Walker  <enne@google.com>
 
         [chromium] Fix incorrect visibility/scissor rect for threaded compositing
index 75e0bb0343e86384b3c4309fa64edaedcb19f596..1cc4fd1f2f39568ebe8c3abaeedfb359a8a9bc23 100644 (file)
@@ -216,6 +216,12 @@ public:
     // On the other hand, zooming affects layout of the page.
     virtual void scalePage(float scaleFactor, WebPoint origin) = 0;
 
+    // The ratio of the current device's screen DPI to the target device's screen DPI.
+    virtual float deviceScaleFactor() const = 0;
+
+    // Sets the ratio as computed by computeViewportAttributes.
+    virtual void setDeviceScaleFactor(float) = 0;
+
 
     // Fixed Layout --------------------------------------------------------
 
index dee15c9b29a796121a218cd0345c819673a71b6e..e456a950a3403d2b6bc9e4a878bbd84b3f75cf24 100644 (file)
@@ -1854,6 +1854,22 @@ void WebViewImpl::scalePage(float scaleFactor, WebPoint origin)
     page()->setPageScaleFactor(scaleFactor, origin);
 }
 
+float WebViewImpl::deviceScaleFactor() const
+{
+    if (!page())
+        return 1;
+
+    return page()->deviceScaleFactor();
+}
+
+void WebViewImpl::setDeviceScaleFactor(float scaleFactor)
+{
+    if (!page())
+        return;
+
+    page()->setDeviceScaleFactor(scaleFactor);
+}
+
 bool WebViewImpl::isFixedLayoutModeEnabled() const
 {
     if (!page())
index 9911a5f8ac0edb989318eac112a25e570d69e1bf..a9d00426e68fbb07db08d70882fd2308c09c4625 100644 (file)
@@ -159,6 +159,8 @@ public:
                                    double maximumZoomLevel);
     virtual float pageScaleFactor() const;
     virtual void scalePage(float scaleFactor, WebPoint origin);
+    virtual float deviceScaleFactor() const;
+    virtual void setDeviceScaleFactor(float);
     virtual bool isFixedLayoutModeEnabled() const;
     virtual void enableFixedLayoutMode(bool enable);
     virtual WebSize fixedLayoutSize() const;