Log Message
[chromium] Add backend compositor support for rescaling (zooming) textures during zoom animation. https://bugs.webkit.org/show_bug.cgi?id=66472
Source/WebCore: This patch contains plumbing from Internals to WebViewImpl that can be removed at a later time when the zoom animator code is complete. Reviewed by James Robinson. Test: platform/chromium/compositing/zoom-animator-scale-test.html * page/Settings.cpp: (WebCore::Settings::Settings): * page/Settings.h: (WebCore::Settings::setZoomAnimatorScale): (WebCore::Settings::zoomAnimatorScale): * platform/graphics/chromium/LayerRendererChromium.cpp: (WebCore::LayerRendererChromium::LayerRendererChromium): (WebCore::LayerRendererChromium::drawLayersInternal): * platform/graphics/chromium/LayerRendererChromium.h: (WebCore::LayerRendererChromium::setZoomAnimatorScale): * platform/graphics/chromium/cc/CCLayerTreeHost.cpp: (WebCore::CCLayerTreeHost::CCLayerTreeHost): (WebCore::CCLayerTreeHost::commitTo): (WebCore::CCLayerTreeHost::setZoomAnimatorScale): (WebCore::CCLayerTreeHost::updateLayers): * platform/graphics/chromium/cc/CCLayerTreeHost.h: * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp: (WebCore::CCLayerTreeHostImpl::setZoomAnimatorScale): * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h: * testing/Internals.cpp: (WebCore::Internals::setZoomAnimatorScale): * testing/Internals.h: * testing/Internals.idl: Source/WebKit/chromium: This patch contains plumbing from Internals to WebViewImpl that can be removed at a later time when the zoom animator code is complete. Reviewed by James Robinson. * src/WebViewImpl.cpp: (WebKit::WebViewImpl::setZoomLevel): (WebKit::WebViewImpl::setRootLayerNeedsDisplay): LayoutTests: Initial tests for zoomAnimatorChromium backend. Reviewed by James Robinson. * platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.png: Added. * platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.txt: Added. * platform/chromium/compositing/zoom-animator-scale-test.html: Added.
Modified Paths
- trunk/LayoutTests/ChangeLog
- trunk/Source/WebCore/ChangeLog
- trunk/Source/WebCore/page/Settings.cpp
- trunk/Source/WebCore/page/Settings.h
- trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp
- trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp
- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h
- trunk/Source/WebCore/testing/Internals.cpp
- trunk/Source/WebCore/testing/Internals.h
- trunk/Source/WebCore/testing/Internals.idl
- trunk/Source/WebKit/chromium/ChangeLog
- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp
Added Paths
- trunk/LayoutTests/platform/chromium/compositing/zoom-animator-scale-test.html
- trunk/LayoutTests/platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.png
- trunk/LayoutTests/platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.txt
Diff
Modified: trunk/LayoutTests/ChangeLog (94788 => 94789)
--- trunk/LayoutTests/ChangeLog 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/LayoutTests/ChangeLog 2011-09-08 20:31:02 UTC (rev 94789)
@@ -1,3 +1,16 @@
+2011-09-08 W. James MacLean <wjmacl...@chromium.org>
+
+ [chromium] Add backend compositor support for rescaling (zooming) textures during zoom animation.
+ https://bugs.webkit.org/show_bug.cgi?id=66472
+
+ Initial tests for zoomAnimatorChromium backend.
+
+ Reviewed by James Robinson.
+
+ * platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.png: Added.
+ * platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.txt: Added.
+ * platform/chromium/compositing/zoom-animator-scale-test.html: Added.
+
2011-09-08 Csaba Osztrogonác <o...@webkit.org>
[Qt] Unreviewed gardening.
Added: trunk/LayoutTests/platform/chromium/compositing/zoom-animator-scale-test.html (0 => 94789)
--- trunk/LayoutTests/platform/chromium/compositing/zoom-animator-scale-test.html (rev 0)
+++ trunk/LayoutTests/platform/chromium/compositing/zoom-animator-scale-test.html 2011-09-08 20:31:02 UTC (rev 94789)
@@ -0,0 +1,24 @@
+<html>
+ <head>
+ <script>
+ if (window.internals) {
+ window.internals.setForceCompositingMode(document, true);
+ window.internals.setZoomAnimatorScale(document, 1.25);
+ }
+ if (window.layoutTestController) {
+ window.layoutTestController.dumpAsText(true);
+ }
+
+ function doTest() {
+ document.getElementById("aBox").style.backgroundColor = "green";
+ }
+
+ window.addEventListener("load", doTest, false);
+ </script>
+ </head>
+<body>
+ <!-- If successful, the box should enlarge to be 125x125 at (125,125).
+ -->
+ <div id="aBox" style="width:100px; height:100px; position:absolute; left:100px; top:100px; background-color:#FF0000"></div>
+</body>
+</html>
Added: trunk/LayoutTests/platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.png (0 => 94789)
--- trunk/LayoutTests/platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.png (rev 0)
+++ trunk/LayoutTests/platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.png 2011-09-08 20:31:02 UTC (rev 94789)
@@ -0,0 +1,7 @@
+\x89PNG
+
+
+IHDR X ' )tEXtchecksum ff340bdf811048be7f4e8f8f83497749F\x80\xF7\xD3
+\xBFIDATx\x9C\xED\xD8\xD1 BAAO\xCC[\x8C|M\xA2a\xE1]U\xF3\xD9̙\x99 \x9D\xF7\xF6 \x80\xA7X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X 1\x81 X \xB1\xCF\xF6\x80K\x9D\xDFٞp\xA3\xF9\xCE\xF6 \xAE\xE0\xC1 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80ؙ\x99\xED
+ \x8F\xE2\xC1 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88 , \x80\x98\xC0 \x88\xFD\x88\xC4
+\xAB"\xA1\xC4 IEND\xAEB`\x82
\ No newline at end of file
Added: trunk/LayoutTests/platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.txt (0 => 94789)
--- trunk/LayoutTests/platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/chromium-gpu-linux/platform/chromium/compositing/zoom-animator-scale-test-expected.txt 2011-09-08 20:31:02 UTC (rev 94789)
@@ -0,0 +1 @@
+
Modified: trunk/Source/WebCore/ChangeLog (94788 => 94789)
--- trunk/Source/WebCore/ChangeLog 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebCore/ChangeLog 2011-09-08 20:31:02 UTC (rev 94789)
@@ -1,3 +1,39 @@
+2011-09-08 W. James MacLean <wjmacl...@chromium.org>
+
+ [chromium] Add backend compositor support for rescaling (zooming) textures during zoom animation.
+ https://bugs.webkit.org/show_bug.cgi?id=66472
+
+ This patch contains plumbing from Internals to WebViewImpl that can be removed
+ at a later time when the zoom animator code is complete.
+
+ Reviewed by James Robinson.
+
+ Test: platform/chromium/compositing/zoom-animator-scale-test.html
+
+ * page/Settings.cpp:
+ (WebCore::Settings::Settings):
+ * page/Settings.h:
+ (WebCore::Settings::setZoomAnimatorScale):
+ (WebCore::Settings::zoomAnimatorScale):
+ * platform/graphics/chromium/LayerRendererChromium.cpp:
+ (WebCore::LayerRendererChromium::LayerRendererChromium):
+ (WebCore::LayerRendererChromium::drawLayersInternal):
+ * platform/graphics/chromium/LayerRendererChromium.h:
+ (WebCore::LayerRendererChromium::setZoomAnimatorScale):
+ * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
+ (WebCore::CCLayerTreeHost::CCLayerTreeHost):
+ (WebCore::CCLayerTreeHost::commitTo):
+ (WebCore::CCLayerTreeHost::setZoomAnimatorScale):
+ (WebCore::CCLayerTreeHost::updateLayers):
+ * platform/graphics/chromium/cc/CCLayerTreeHost.h:
+ * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
+ (WebCore::CCLayerTreeHostImpl::setZoomAnimatorScale):
+ * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:
+ * testing/Internals.cpp:
+ (WebCore::Internals::setZoomAnimatorScale):
+ * testing/Internals.h:
+ * testing/Internals.idl:
+
2011-09-08 Eric Carlson <eric.carl...@apple.com>
HTMLMediaElement is missing initialTime attribute
Modified: trunk/Source/WebCore/page/Settings.cpp (94788 => 94789)
--- trunk/Source/WebCore/page/Settings.cpp 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebCore/page/Settings.cpp 2011-09-08 20:31:02 UTC (rev 94789)
@@ -216,6 +216,7 @@
, m_mediaPlaybackAllowsInline(true)
, m_passwordEchoEnabled(false)
, m_loadsImagesAutomaticallyTimer(this, &Settings::loadsImagesAutomaticallyTimerFired)
+ , m_zoomAnimatorScale(1)
{
// A Frame may not have been created yet, so we initialize the AtomicString
// hash before trying to use it.
Modified: trunk/Source/WebCore/page/Settings.h (94788 => 94789)
--- trunk/Source/WebCore/page/Settings.h 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebCore/page/Settings.h 2011-09-08 20:31:02 UTC (rev 94789)
@@ -437,7 +437,10 @@
void setForceCompositingMode(bool flag) { m_forceCompositingMode = flag; }
bool forceCompositingMode() { return m_forceCompositingMode; }
-
+
+ void setZoomAnimatorScale(double scale) { m_zoomAnimatorScale = scale; }
+ double zoomAnimatorScale() { return m_zoomAnimatorScale; }
+
void setShouldInjectUserScriptsInInitialEmptyDocument(bool flag) { m_shouldInjectUserScriptsInInitialEmptyDocument = flag; }
bool shouldInjectUserScriptsInInitialEmptyDocument() { return m_shouldInjectUserScriptsInInitialEmptyDocument; }
@@ -596,6 +599,8 @@
static bool gAVFoundationEnabled;
#endif
+ double m_zoomAnimatorScale;
+
#if USE(SAFARI_THEME)
static bool gShouldPaintNativeControls;
#endif
Modified: trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp (94788 => 94789)
--- trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp 2011-09-08 20:31:02 UTC (rev 94789)
@@ -163,6 +163,7 @@
, m_ownerImpl(ownerImpl)
, m_currentRenderSurface(0)
, m_offscreenFramebufferId(0)
+ , m_zoomAnimatorScale(1)
, m_context(context)
, m_defaultRenderSurface(0)
, m_sharedGeometryQuad(FloatRect(-0.5f, -0.5f, 1.0f, 1.0f))
@@ -294,13 +295,14 @@
CCLayerList renderSurfaceLayerList;
renderSurfaceLayerList.append(rootDrawLayer);
- TransformationMatrix identityMatrix;
+ TransformationMatrix zoomMatrix;
+ zoomMatrix.scale3d(m_zoomAnimatorScale, m_zoomAnimatorScale, 1);
m_defaultRenderSurface = rootDrawLayer->renderSurface();
m_defaultRenderSurface->clearLayerList();
{
TRACE_EVENT("LayerRendererChromium::drawLayersInternal::calcDrawEtc", this, 0);
- CCLayerTreeHostCommon::calculateDrawTransformsAndVisibility(rootDrawLayer, rootDrawLayer, identityMatrix, identityMatrix, renderSurfaceLayerList, m_defaultRenderSurface->layerList(), &m_layerSorter, m_capabilities.maxTextureSize);
+ CCLayerTreeHostCommon::calculateDrawTransformsAndVisibility(rootDrawLayer, rootDrawLayer, zoomMatrix, zoomMatrix, renderSurfaceLayerList, m_defaultRenderSurface->layerList(), &m_layerSorter, m_capabilities.maxTextureSize);
}
// The GL viewport covers the entire visible area, including the scrollbars.
Modified: trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h (94788 => 94789)
--- trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h 2011-09-08 20:31:02 UTC (rev 94789)
@@ -110,6 +110,8 @@
// puts backbuffer onscreen
void present();
+ void setZoomAnimatorScale(double factor) { m_zoomAnimatorScale = factor; }
+
unsigned createLayerTexture();
void deleteLayerTexture(unsigned);
@@ -196,6 +198,7 @@
CCRenderSurface* m_currentRenderSurface;
unsigned m_offscreenFramebufferId;
+ double m_zoomAnimatorScale;
// Store values that are shared between instances of each layer type
// associated with this instance of the compositor. Since there can be
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp (94788 => 94789)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp 2011-09-08 20:31:02 UTC (rev 94789)
@@ -54,6 +54,7 @@
, m_frameNumber(0)
, m_nonCompositedContentHost(NonCompositedContentHost::create(m_client->createRootLayerPainter()))
, m_settings(settings)
+ , m_zoomAnimatorScale(1)
, m_visible(true)
{
}
@@ -115,6 +116,7 @@
m_updateList.clear();
hostImpl->setVisible(m_visible);
+ hostImpl->setZoomAnimatorScale(m_zoomAnimatorScale);
hostImpl->setViewport(viewportSize());
// Synchronize trees, if one exists at all...
@@ -182,6 +184,16 @@
return m_proxy->layerRendererCapabilities();
}
+void CCLayerTreeHost::setZoomAnimatorScale(double zoom)
+{
+ bool zoomChanged = m_zoomAnimatorScale != zoom;
+
+ m_zoomAnimatorScale = zoom;
+
+ if (zoomChanged)
+ setNeedsCommitAndRedraw();
+}
+
void CCLayerTreeHost::setNeedsCommitAndRedraw()
{
#if USE(THREADED_COMPOSITING)
@@ -278,11 +290,11 @@
RenderSurfaceChromium* rootRenderSurface = rootLayer->renderSurface();
rootRenderSurface->clearLayerList();
- TransformationMatrix identityMatrix;
-
+ TransformationMatrix zoomMatrix;
+ zoomMatrix.scale3d(m_zoomAnimatorScale, m_zoomAnimatorScale, 1);
{
TRACE_EVENT("CCLayerTreeHost::updateLayers::calcDrawEtc", this, 0);
- CCLayerTreeHostCommon::calculateDrawTransformsAndVisibility(rootLayer, rootLayer, identityMatrix, identityMatrix, m_updateList, rootRenderSurface->layerList(), layerRendererCapabilities().maxTextureSize);
+ CCLayerTreeHostCommon::calculateDrawTransformsAndVisibility(rootLayer, rootLayer, zoomMatrix, zoomMatrix, m_updateList, rootRenderSurface->layerList(), layerRendererCapabilities().maxTextureSize);
}
paintLayerContents(m_updateList);
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h (94788 => 94789)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h 2011-09-08 20:31:02 UTC (rev 94789)
@@ -130,6 +130,7 @@
int frameNumber() const { return m_frameNumber; }
void invalidateRootLayerRect(const IntRect& dirtyRect);
+ void setZoomAnimatorScale(double);
const LayerRendererCapabilities& layerRendererCapabilities() const;
@@ -187,6 +188,7 @@
CCSettings m_settings;
IntSize m_viewportSize;
+ double m_zoomAnimatorScale;
bool m_visible;
};
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp (94788 => 94789)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp 2011-09-08 20:31:02 UTC (rev 94789)
@@ -155,4 +155,9 @@
m_layerRenderer->viewportChanged();
}
+void CCLayerTreeHostImpl::setZoomAnimatorScale(double zoom)
+{
+ m_layerRenderer->setZoomAnimatorScale(zoom);
}
+
+}
Modified: trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h (94788 => 94789)
--- trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.h 2011-09-08 20:31:02 UTC (rev 94789)
@@ -75,6 +75,7 @@
void setViewport(const IntSize& viewportSize);
const IntSize& viewportSize() const { return m_viewportSize; }
+ void setZoomAnimatorScale(double);
protected:
explicit CCLayerTreeHostImpl(const CCSettings&);
Modified: trunk/Source/WebCore/testing/Internals.cpp (94788 => 94789)
--- trunk/Source/WebCore/testing/Internals.cpp 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebCore/testing/Internals.cpp 2011-09-08 20:31:02 UTC (rev 94789)
@@ -243,6 +243,16 @@
document->settings()->setForceCompositingMode(enabled);
}
+void Internals::setZoomAnimatorScale(Document *document, double scale, ExceptionCode& ec)
+{
+ if (!document || !document->settings()) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+
+ document->settings()->setZoomAnimatorScale(scale);
+}
+
void Internals::setPasswordEchoEnabled(Document* document, bool enabled, ExceptionCode& ec)
{
if (!document || !document->settings()) {
Modified: trunk/Source/WebCore/testing/Internals.h (94788 => 94789)
--- trunk/Source/WebCore/testing/Internals.h 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebCore/testing/Internals.h 2011-09-08 20:31:02 UTC (rev 94789)
@@ -77,6 +77,7 @@
PassRefPtr<Range> markerRangeForNode(Node*, unsigned, ExceptionCode&);
void setForceCompositingMode(Document*, bool enabled, ExceptionCode&);
+ void setZoomAnimatorScale(Document*, double scale, ExceptionCode&);
void setPasswordEchoEnabled(Document*, bool enabled, ExceptionCode&);
void setPasswordEchoDurationInSeconds(Document*, double durationInSeconds, ExceptionCode&);
Modified: trunk/Source/WebCore/testing/Internals.idl (94788 => 94789)
--- trunk/Source/WebCore/testing/Internals.idl 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebCore/testing/Internals.idl 2011-09-08 20:31:02 UTC (rev 94789)
@@ -51,6 +51,7 @@
Range markerRangeForNode(in Node node, in unsigned long index) raises(DOMException);
void setForceCompositingMode(in Document document, in boolean enabled) raises(DOMException);
+ void setZoomAnimatorScale(in Document document, in double scale) raises(DOMException);
void setPasswordEchoEnabled(in Document document, in boolean enabled) raises(DOMException);
void setPasswordEchoDurationInSeconds(in Document document, in double durationInSeconds) raises(DOMException);
Modified: trunk/Source/WebKit/chromium/ChangeLog (94788 => 94789)
--- trunk/Source/WebKit/chromium/ChangeLog 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebKit/chromium/ChangeLog 2011-09-08 20:31:02 UTC (rev 94789)
@@ -1,3 +1,17 @@
+2011-09-08 W. James MacLean <wjmacl...@chromium.org>
+
+ [chromium] Add backend compositor support for rescaling (zooming) textures during zoom animation.
+ https://bugs.webkit.org/show_bug.cgi?id=66472
+
+ This patch contains plumbing from Internals to WebViewImpl that can be removed
+ at a later time when the zoom animator code is complete.
+
+ Reviewed by James Robinson.
+
+ * src/WebViewImpl.cpp:
+ (WebKit::WebViewImpl::setZoomLevel):
+ (WebKit::WebViewImpl::setRootLayerNeedsDisplay):
+
2011-09-08 Scott Byer <scottb...@chromium.org>
Compile in ScrollAnimator for Chromium on all platforms by default.
Modified: trunk/Source/WebKit/chromium/src/WebViewImpl.cpp (94788 => 94789)
--- trunk/Source/WebKit/chromium/src/WebViewImpl.cpp 2011-09-08 20:23:53 UTC (rev 94788)
+++ trunk/Source/WebKit/chromium/src/WebViewImpl.cpp 2011-09-08 20:31:02 UTC (rev 94789)
@@ -1823,6 +1823,9 @@
double WebViewImpl::setZoomLevel(bool textOnly, double zoomLevel)
{
+ if (m_layerTreeHost)
+ m_layerTreeHost->setZoomAnimatorScale(1);
+
if (zoomLevel < m_minimumZoomLevel)
m_zoomLevel = m_minimumZoomLevel;
else if (zoomLevel > m_maximumZoomLevel)
@@ -2563,6 +2566,8 @@
void WebViewImpl::setRootLayerNeedsDisplay()
{
+ if (m_layerTreeHost)
+ m_layerTreeHost->setZoomAnimatorScale(m_page->settings()->zoomAnimatorScale());
#if USE(THREADED_COMPOSITING)
if (m_layerTreeHost)
m_layerTreeHost->setNeedsCommitAndRedraw();
_______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes