Title: [135459] trunk
Revision
135459
Author
commit-qu...@webkit.org
Date
2012-11-21 17:06:26 -0800 (Wed, 21 Nov 2012)

Log Message

[chromium] Device scale factor should be no-op when applyDeviceScaleFactorInCompositor == 0
https://bugs.webkit.org/show_bug.cgi?id=100061

Patch by Tien-Ren Chen <trc...@chromium.org> on 2012-11-21
Reviewed by Adam Barth.

On Android we're using a different pixel scaling implementation
(WebCore::Settings::applyDefaultDeviceScaleFactorInCompositor() == 0) than other
platforms. In this mode, we don't make use of device-independent pixels. Device
scale factor is provided to WebKit and get merged into page scale factor. Other
than that device scale factor should have no effects on rendering.

Source/WebKit/chromium:

* src/PageWidgetDelegate.cpp:
(WebKit::PageWidgetDelegate::paint):
* src/PageWidgetDelegate.h:
* src/WebPagePopupImpl.cpp:
(WebKit::WebPagePopupImpl::paint):
* src/WebViewImpl.cpp:
(WebKit::WebViewImpl::paint):
(WebKit::WebViewImpl::shouldApplyDeviceScaleFactorInCompositor):
(WebKit):
* src/WebViewImpl.h:
(WebViewImpl):

Tools:

* DumpRenderTree/chromium/WebPreferences.cpp:
(WebPreferences::applyTo):

Modified Paths

Diff

Modified: trunk/Source/WebKit/chromium/ChangeLog (135458 => 135459)


--- trunk/Source/WebKit/chromium/ChangeLog	2012-11-22 00:50:26 UTC (rev 135458)
+++ trunk/Source/WebKit/chromium/ChangeLog	2012-11-22 01:06:26 UTC (rev 135459)
@@ -1,5 +1,30 @@
 2012-11-21  Tien-Ren Chen  <trc...@chromium.org>
 
+        [chromium] Device scale factor should be no-op when applyDeviceScaleFactorInCompositor == 0
+        https://bugs.webkit.org/show_bug.cgi?id=100061
+
+        Reviewed by Adam Barth.
+
+        On Android we're using a different pixel scaling implementation
+        (WebCore::Settings::applyDefaultDeviceScaleFactorInCompositor() == 0) than other
+        platforms. In this mode, we don't make use of device-independent pixels. Device
+        scale factor is provided to WebKit and get merged into page scale factor. Other
+        than that device scale factor should have no effects on rendering.
+
+        * src/PageWidgetDelegate.cpp:
+        (WebKit::PageWidgetDelegate::paint):
+        * src/PageWidgetDelegate.h:
+        * src/WebPagePopupImpl.cpp:
+        (WebKit::WebPagePopupImpl::paint):
+        * src/WebViewImpl.cpp:
+        (WebKit::WebViewImpl::paint):
+        (WebKit::WebViewImpl::shouldApplyDeviceScaleFactorInCompositor):
+        (WebKit):
+        * src/WebViewImpl.h:
+        (WebViewImpl):
+
+2012-11-21  Tien-Ren Chen  <trc...@chromium.org>
+
         Use m_webView->size() for viewport update
         https://bugs.webkit.org/show_bug.cgi?id=102764
 

Modified: trunk/Source/WebKit/chromium/src/PageWidgetDelegate.cpp (135458 => 135459)


--- trunk/Source/WebKit/chromium/src/PageWidgetDelegate.cpp	2012-11-22 00:50:26 UTC (rev 135458)
+++ trunk/Source/WebKit/chromium/src/PageWidgetDelegate.cpp	2012-11-22 01:06:26 UTC (rev 135459)
@@ -81,15 +81,17 @@
     view->updateLayoutAndStyleIfNeededRecursive();
 }
 
-void PageWidgetDelegate::paint(Page* page, PageOverlayList* overlays, WebCanvas* canvas, const WebRect& rect, CanvasBackground background)
+void PageWidgetDelegate::paint(Page* page, PageOverlayList* overlays, WebCanvas* canvas, const WebRect& rect, CanvasBackground background, bool applyDeviceScale)
 {
     if (rect.isEmpty())
         return;
     GraphicsContextBuilder builder(canvas);
     GraphicsContext& gc = builder.context();
     gc.platformContext()->setDrawingToImageBuffer(background == Opaque ? false : true);
-    gc.applyDeviceScaleFactor(page->deviceScaleFactor());
-    gc.platformContext()->setDeviceScaleFactor(page->deviceScaleFactor());
+    if (applyDeviceScale) {
+        gc.applyDeviceScaleFactor(page->deviceScaleFactor());
+        gc.platformContext()->setDeviceScaleFactor(page->deviceScaleFactor());
+    }
     IntRect dirtyRect(rect);
     gc.save();
     FrameView* view = mainFrameView(page);

Modified: trunk/Source/WebKit/chromium/src/PageWidgetDelegate.h (135458 => 135459)


--- trunk/Source/WebKit/chromium/src/PageWidgetDelegate.h	2012-11-22 00:50:26 UTC (rev 135458)
+++ trunk/Source/WebKit/chromium/src/PageWidgetDelegate.h	2012-11-22 01:06:26 UTC (rev 135459)
@@ -79,7 +79,7 @@
     };
     static void animate(WebCore::Page*, double monotonicFrameBeginTime);
     static void layout(WebCore::Page*);
-    static void paint(WebCore::Page*, PageOverlayList*, WebCanvas*, const WebRect&, CanvasBackground);
+    static void paint(WebCore::Page*, PageOverlayList*, WebCanvas*, const WebRect&, CanvasBackground, bool applyDeviceScale);
     static bool handleInputEvent(WebCore::Page*, PageWidgetEventHandler&, const WebInputEvent&);
 
 private:

Modified: trunk/Source/WebKit/chromium/src/WebPagePopupImpl.cpp (135458 => 135459)


--- trunk/Source/WebKit/chromium/src/WebPagePopupImpl.cpp	2012-11-22 00:50:26 UTC (rev 135458)
+++ trunk/Source/WebKit/chromium/src/WebPagePopupImpl.cpp	2012-11-22 01:06:26 UTC (rev 135459)
@@ -44,6 +44,7 @@
 #include "Settings.h"
 #include "WebInputEventConversion.h"
 #include "WebPagePopup.h"
+#include "WebSettingsImpl.h"
 #include "WebViewClient.h"
 #include "WebViewImpl.h"
 #include "WebWidgetClient.h"
@@ -242,7 +243,7 @@
 
 void WebPagePopupImpl::paint(WebCanvas* canvas, const WebRect& rect, PaintOptions)
 {
-    PageWidgetDelegate::paint(m_page.get(), 0, canvas, rect, PageWidgetDelegate::Opaque);
+    PageWidgetDelegate::paint(m_page.get(), 0, canvas, rect, PageWidgetDelegate::Opaque, m_webView->settingsImpl()->applyDeviceScaleFactorInCompositor());
 }
 
 void WebPagePopupImpl::resize(const WebSize& newSize)

Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.cpp (135458 => 135459)


--- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2012-11-22 00:50:26 UTC (rev 135458)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.cpp	2012-11-22 01:06:26 UTC (rev 135459)
@@ -1834,7 +1834,7 @@
         }
 
         double paintStart = currentTime();
-        PageWidgetDelegate::paint(m_page.get(), pageOverlays(), canvas, rect, isTransparent() ? PageWidgetDelegate::Translucent : PageWidgetDelegate::Opaque);
+        PageWidgetDelegate::paint(m_page.get(), pageOverlays(), canvas, rect, isTransparent() ? PageWidgetDelegate::Translucent : PageWidgetDelegate::Opaque, m_webSettings->applyDeviceScaleFactorInCompositor());
         double paintEnd = currentTime();
         double pixelsPerSec = (rect.width * rect.height) / (paintEnd - paintStart);
         WebKit::Platform::current()->histogramCustomCounts("Renderer4.SoftwarePaintDurationMS", (paintEnd - paintStart) * 1000, 0, 120, 30);

Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.h (135458 => 135459)


--- trunk/Source/WebKit/chromium/src/WebViewImpl.h	2012-11-22 00:50:26 UTC (rev 135458)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.h	2012-11-22 01:06:26 UTC (rev 135459)
@@ -599,6 +599,7 @@
     LinkHighlight* linkHighlight() { return m_linkHighlight.get(); }
 #endif
 
+    WebSettingsImpl* settingsImpl();
 
 private:
     bool computePageScaleFactorLimits();
@@ -678,8 +679,6 @@
     virtual bool handleKeyEvent(const WebKeyboardEvent&) OVERRIDE;
     virtual bool handleCharEvent(const WebKeyboardEvent&) OVERRIDE;
 
-    WebSettingsImpl* settingsImpl();
-
     WebViewClient* m_client;
     WebAutofillClient* m_autofillClient;
     WebPermissionClient* m_permissionClient;

Modified: trunk/Tools/ChangeLog (135458 => 135459)


--- trunk/Tools/ChangeLog	2012-11-22 00:50:26 UTC (rev 135458)
+++ trunk/Tools/ChangeLog	2012-11-22 01:06:26 UTC (rev 135459)
@@ -1,3 +1,19 @@
+2012-11-21  Tien-Ren Chen  <trc...@chromium.org>
+
+        [chromium] Device scale factor should be no-op when applyDeviceScaleFactorInCompositor == 0
+        https://bugs.webkit.org/show_bug.cgi?id=100061
+
+        Reviewed by Adam Barth.
+
+        On Android we're using a different pixel scaling implementation
+        (WebCore::Settings::applyDefaultDeviceScaleFactorInCompositor() == 0) than other
+        platforms. In this mode, we don't make use of device-independent pixels. Device
+        scale factor is provided to WebKit and get merged into page scale factor. Other
+        than that device scale factor should have no effects on rendering.
+
+        * DumpRenderTree/chromium/WebPreferences.cpp:
+        (WebPreferences::applyTo):
+
 2012-11-21  Fady Samuel  <fsam...@chromium.org>
 
         Clear MousePressed state on context menu to avoid initiating a drag

Modified: trunk/Tools/DumpRenderTree/chromium/WebPreferences.cpp (135458 => 135459)


--- trunk/Tools/DumpRenderTree/chromium/WebPreferences.cpp	2012-11-22 00:50:26 UTC (rev 135458)
+++ trunk/Tools/DumpRenderTree/chromium/WebPreferences.cpp	2012-11-22 01:06:26 UTC (rev 135459)
@@ -238,7 +238,6 @@
     settings->setDeferredImageDecodingEnabled(deferredImageDecodingEnabled);
     settings->setMediaPlaybackRequiresUserGesture(mediaPlaybackRequiresUserGesture);
     settings->setMockScrollbarsEnabled(mockScrollbarsEnabled);
-    settings->setApplyDeviceScaleFactorInCompositor(forceCompositingMode);
     settings->setShouldRespectImageOrientation(shouldRespectImageOrientation);
 
     // Fixed values.
@@ -258,4 +257,5 @@
     settings->setValidationMessageTimerMagnification(-1);
     settings->setVisualWordMovementEnabled(false);
     settings->setPasswordEchoEnabled(false);
+    settings->setApplyDeviceScaleFactorInCompositor(true);
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to