Title: [141171] trunk/Source/WebKit2
Revision
141171
Author
commit-qu...@webkit.org
Date
2013-01-29 15:24:53 -0800 (Tue, 29 Jan 2013)

Log Message

[WK2] Call LayerTreeHost::deviceOrPageScaleFactorChanged() when a device or page scale factor is changed.
https://bugs.webkit.org/show_bug.cgi?id=107802

Patch by Huang Dongsung <luxte...@company100.net> on 2013-01-29
Reviewed by Simon Fraser.

Currently, LayerTreeHostMac and *GTK call deviceOrPageScaleFactorChanged()
of the non compositing GraphicsLayer when a device scale factor is changed.

There are two problems.
1. We don't notify LayerTreeHost when a page scale factor is changed.
2. When using TiledCoreAnimationDrawingAreaProxy, LayerTreeHostMac does
not receive the device scale factor changed callback.

So this patch changes three points.
1. Rename from deviceScaleFactorDidChange() to deviceOrPageScaleFactorChanged()
in LayerTreeHost.
2. WebPage::setDeviceScaleFactor() calls LayerTreeHost::deviceScaleFactorDidChange()
because of dealing with TiledCoreAnimationDrawingAreaProxy.
3. WebPage::pageScaleFactor() calls LayerTreeHost::deviceScaleFactorDidChange()
to call deviceOrPageScaleFactorChanged() of the non compositing GraphicsLayer.

Unfortunately, I couldn't think of a way to test this in an automated fashion.

* WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
(WebKit::CoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged):
* WebProcess/WebPage/DrawingAreaImpl.cpp:
(WebKit::DrawingAreaImpl::updateBackingStoreState):
    Don't call LayerTreeHost::deviceScaleFactorDidChange() because this
    method calls WebPage::setDeviceScaleFactor() and then
    LayerTreeHost::deviceScaleFactorDidChange() is called.
* WebProcess/WebPage/LayerTreeHost.h:
(LayerTreeHost):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::scalePage):
(WebKit::WebPage::setDeviceScaleFactor):
* WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:
(WebKit::LayerTreeHostGtk::deviceOrPageScaleFactorChanged):
* WebProcess/WebPage/gtk/LayerTreeHostGtk.h:
(LayerTreeHostGtk):
* WebProcess/WebPage/mac/LayerTreeHostMac.h:
(LayerTreeHostMac):
* WebProcess/WebPage/mac/LayerTreeHostMac.mm:
(WebKit::LayerTreeHostMac::deviceOrPageScaleFactorChanged):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (141170 => 141171)


--- trunk/Source/WebKit2/ChangeLog	2013-01-29 23:15:17 UTC (rev 141170)
+++ trunk/Source/WebKit2/ChangeLog	2013-01-29 23:24:53 UTC (rev 141171)
@@ -1,3 +1,49 @@
+2013-01-29  Huang Dongsung  <luxte...@company100.net>
+
+        [WK2] Call LayerTreeHost::deviceOrPageScaleFactorChanged() when a device or page scale factor is changed.
+        https://bugs.webkit.org/show_bug.cgi?id=107802
+
+        Reviewed by Simon Fraser.
+
+        Currently, LayerTreeHostMac and *GTK call deviceOrPageScaleFactorChanged()
+        of the non compositing GraphicsLayer when a device scale factor is changed.
+
+        There are two problems.
+        1. We don't notify LayerTreeHost when a page scale factor is changed.
+        2. When using TiledCoreAnimationDrawingAreaProxy, LayerTreeHostMac does
+        not receive the device scale factor changed callback.
+
+        So this patch changes three points.
+        1. Rename from deviceScaleFactorDidChange() to deviceOrPageScaleFactorChanged()
+        in LayerTreeHost.
+        2. WebPage::setDeviceScaleFactor() calls LayerTreeHost::deviceScaleFactorDidChange()
+        because of dealing with TiledCoreAnimationDrawingAreaProxy.
+        3. WebPage::pageScaleFactor() calls LayerTreeHost::deviceScaleFactorDidChange()
+        to call deviceOrPageScaleFactorChanged() of the non compositing GraphicsLayer.
+
+        Unfortunately, I couldn't think of a way to test this in an automated fashion.
+
+        * WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
+        (WebKit::CoordinatedLayerTreeHost::deviceOrPageScaleFactorChanged):
+        * WebProcess/WebPage/DrawingAreaImpl.cpp:
+        (WebKit::DrawingAreaImpl::updateBackingStoreState):
+            Don't call LayerTreeHost::deviceScaleFactorDidChange() because this
+            method calls WebPage::setDeviceScaleFactor() and then
+            LayerTreeHost::deviceScaleFactorDidChange() is called.
+        * WebProcess/WebPage/LayerTreeHost.h:
+        (LayerTreeHost):
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::scalePage):
+        (WebKit::WebPage::setDeviceScaleFactor):
+        * WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp:
+        (WebKit::LayerTreeHostGtk::deviceOrPageScaleFactorChanged):
+        * WebProcess/WebPage/gtk/LayerTreeHostGtk.h:
+        (LayerTreeHostGtk):
+        * WebProcess/WebPage/mac/LayerTreeHostMac.h:
+        (LayerTreeHostMac):
+        * WebProcess/WebPage/mac/LayerTreeHostMac.mm:
+        (WebKit::LayerTreeHostMac::deviceOrPageScaleFactorChanged):
+
 2013-01-29  Anders Carlsson  <ander...@apple.com>
 
         Get rid of MessageID::get()

Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h (141170 => 141171)


--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h	2013-01-29 23:15:17 UTC (rev 141170)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h	2013-01-29 23:24:53 UTC (rev 141171)
@@ -76,7 +76,7 @@
 
     virtual void pauseRendering() { m_isSuspended = true; }
     virtual void resumeRendering() { m_isSuspended = false; scheduleLayerFlush(); }
-    virtual void deviceScaleFactorDidChange() { }
+    virtual void deviceOrPageScaleFactorChanged() { }
     virtual PassRefPtr<CoordinatedImageBacking> createImageBackingIfNeeded(WebCore::Image*) OVERRIDE;
 
     virtual bool isFlushingLayerChanges() const OVERRIDE { return m_isFlushingLayerChanges; }

Modified: trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp (141170 => 141171)


--- trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp	2013-01-29 23:15:17 UTC (rev 141170)
+++ trunk/Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp	2013-01-29 23:24:53 UTC (rev 141171)
@@ -380,7 +380,6 @@
         m_webPage->scrollMainFrameIfNotAtMaxScrollPosition(scrollOffset);
 
         if (m_layerTreeHost) {
-            m_layerTreeHost->deviceScaleFactorDidChange();
             // Use the previously set page size instead of the argument.
             // It gets adjusted properly when using the fixed layout mode.
             m_layerTreeHost->sizeDidChange(m_webPage->size());

Modified: trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h (141170 => 141171)


--- trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h	2013-01-29 23:15:17 UTC (rev 141170)
+++ trunk/Source/WebKit2/WebProcess/WebPage/LayerTreeHost.h	2013-01-29 23:24:53 UTC (rev 141171)
@@ -70,7 +70,7 @@
     virtual void forceRepaint() = 0;
     virtual bool forceRepaintAsync(uint64_t /*callbackID*/) { return false; }
     virtual void sizeDidChange(const WebCore::IntSize& newSize) = 0;
-    virtual void deviceScaleFactorDidChange() = 0;
+    virtual void deviceOrPageScaleFactorChanged() = 0;
 
     virtual void didInstallPageOverlay() = 0;
     virtual void didUninstallPageOverlay() = 0;

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (141170 => 141171)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2013-01-29 23:15:17 UTC (rev 141170)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2013-01-29 23:24:53 UTC (rev 141171)
@@ -1217,6 +1217,9 @@
     for (HashSet<PluginView*>::const_iterator it = m_pluginViews.begin(), end = m_pluginViews.end(); it != end; ++it)
         (*it)->pageScaleFactorDidChange();
 
+    if (m_drawingArea->layerTreeHost())
+        m_drawingArea->layerTreeHost()->deviceOrPageScaleFactorChanged();
+
     send(Messages::WebPageProxy::PageScaleFactorDidChange(scale));
 }
 
@@ -1247,6 +1250,9 @@
         layoutIfNeeded();
         m_findController.deviceScaleFactorDidChange();
     }
+
+    if (m_drawingArea->layerTreeHost())
+        m_drawingArea->layerTreeHost()->deviceOrPageScaleFactorChanged();
 }
 
 float WebPage::deviceScaleFactor() const

Modified: trunk/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp (141170 => 141171)


--- trunk/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp	2013-01-29 23:15:17 UTC (rev 141170)
+++ trunk/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.cpp	2013-01-29 23:24:53 UTC (rev 141171)
@@ -207,7 +207,7 @@
     compositeLayersToContext(ForResize);
 }
 
-void LayerTreeHostGtk::deviceScaleFactorDidChange()
+void LayerTreeHostGtk::deviceOrPageScaleFactorChanged()
 {
     // Other layers learn of the scale factor change via WebPage::setDeviceScaleFactor.
     m_nonCompositedContentLayer->deviceOrPageScaleFactorChanged();

Modified: trunk/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.h (141170 => 141171)


--- trunk/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.h	2013-01-29 23:15:17 UTC (rev 141170)
+++ trunk/Source/WebKit2/WebProcess/WebPage/gtk/LayerTreeHostGtk.h	2013-01-29 23:24:53 UTC (rev 141171)
@@ -53,7 +53,7 @@
     // LayerTreeHost.
     virtual void invalidate();
     virtual void sizeDidChange(const WebCore::IntSize& newSize);
-    virtual void deviceScaleFactorDidChange();
+    virtual void deviceOrPageScaleFactorChanged();
     virtual void forceRepaint();
     virtual void setRootCompositingLayer(WebCore::GraphicsLayer*);
     virtual void scheduleLayerFlush();

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.h (141170 => 141171)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.h	2013-01-29 23:15:17 UTC (rev 141170)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.h	2013-01-29 23:24:53 UTC (rev 141171)
@@ -54,7 +54,7 @@
     virtual void scrollNonCompositedContents(const WebCore::IntRect& scrollRect, const WebCore::IntSize& scrollOffset) OVERRIDE;
     virtual void forceRepaint() OVERRIDE;
     virtual void sizeDidChange(const WebCore::IntSize& newSize) OVERRIDE;
-    virtual void deviceScaleFactorDidChange() OVERRIDE;
+    virtual void deviceOrPageScaleFactorChanged() OVERRIDE;
 
     virtual void didInstallPageOverlay() OVERRIDE;
     virtual void didUninstallPageOverlay() OVERRIDE;

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm (141170 => 141171)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm	2013-01-29 23:15:17 UTC (rev 141170)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/LayerTreeHostMac.mm	2013-01-29 23:24:53 UTC (rev 141171)
@@ -162,7 +162,7 @@
     [CATransaction synchronize];
 }
 
-void LayerTreeHostMac::deviceScaleFactorDidChange()
+void LayerTreeHostMac::deviceOrPageScaleFactorChanged()
 {
     // Other layers learn of the scale factor change via WebPage::setDeviceScaleFactor.
     m_nonCompositedContentLayer->deviceOrPageScaleFactorChanged();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to