<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[129826] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/129826">129826</a></dd>
<dt>Author</dt> <dd>aelias@chromium.org</dd>
<dt>Date</dt> <dd>2012-09-27 17:46:53 -0700 (Thu, 27 Sep 2012)</dd>
</dl>

<h3>Log Message</h3>
<pre>[chromium] DumpRenderTree support for software compositing
https://bugs.webkit.org/show_bug.cgi?id=96853

Reviewed by James Robinson.

This adds software compositor support to DumpRenderTree.  The only
thing needed is a minimal OutputSurfaceSoftware that holds a
viewport-sized bitmap. Then, I added virtual test suite
platform/chromium/virtual/softwarecompositing -- a mirror of the
compositing/ directory with --enable-software-compositing, and
expectations for not yet supported tests.

Tools:

* DumpRenderTree/DumpRenderTree.gypi:
* DumpRenderTree/chromium/DumpRenderTree.cpp:
(main):
* DumpRenderTree/chromium/TestShell.cpp:
(TestShell::TestShell):
* DumpRenderTree/chromium/TestShell.h:
(TestShell::softwareCompositingEnabled):
(TestShell::setSoftwareCompositingEnabled):
(TestShell):
* DumpRenderTree/chromium/WebViewHost.cpp:
(WebViewHost::createOutputSurface):
* DumpRenderTree/chromium/WebViewHostOutputSurface.cpp:
(WebKit::WebViewHostOutputSurface::create3d):
(WebKit):
(WebKit::WebViewHostOutputSurface::createSoftware):
(WebKit::WebViewHostOutputSurface::WebViewHostOutputSurface):
(WebKit::WebViewHostOutputSurface::bindToClient):
(WebKit::WebViewHostOutputSurface::surfaceSoftware):
* DumpRenderTree/chromium/WebViewHostOutputSurface.h:
(WebKit):
(WebViewHostOutputSurface):
* DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.cpp: Copied from Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp.
(WebKit):
(WebKit::WebViewHostSoftwareOutputDevice::lockForWrite):
(WebKit::WebViewHostSoftwareOutputDevice::unlockForWrite):
(WebKit::WebViewHostSoftwareOutputDevice::lockForRead):
(WebKit::WebViewHostSoftwareOutputDevice::unlockForRead):
(WebKit::WebViewHostSoftwareOutputDevice::viewportChanged):
* DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.h: Copied from Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp.
(WebKit):
(WebViewHostSoftwareOutputDevice):
* Scripts/webkitpy/layout_tests/port/chromium.py:
(ChromiumPort.virtual_test_suites):

LayoutTests:

* platform/chromium/TestExpectations:
* platform/chromium/virtual/softwarecompositing/README.txt: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsplatformchromiumTestExpectations">trunk/LayoutTests/platform/chromium/TestExpectations</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsDumpRenderTreeDumpRenderTreegypi">trunk/Tools/DumpRenderTree/DumpRenderTree.gypi</a></li>
<li><a href="#trunkToolsDumpRenderTreechromiumDumpRenderTreecpp">trunk/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreechromiumTestShellcpp">trunk/Tools/DumpRenderTree/chromium/TestShell.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreechromiumTestShellh">trunk/Tools/DumpRenderTree/chromium/TestShell.h</a></li>
<li><a href="#trunkToolsDumpRenderTreechromiumWebViewHostcpp">trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreechromiumWebViewHostOutputSurfacecpp">trunk/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreechromiumWebViewHostOutputSurfaceh">trunk/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.h</a></li>
<li><a href="#trunkToolsScriptswebkitpylayout_testsportchromiumpy">trunk/Tools/Scripts/webkitpy/layout_tests/port/chromium.py</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/LayoutTests/platform/chromium/virtual/softwarecompositing/</li>
<li><a href="#trunkLayoutTestsplatformchromiumvirtualsoftwarecompositingREADMEtxt">trunk/LayoutTests/platform/chromium/virtual/softwarecompositing/README.txt</a></li>
<li><a href="#trunkToolsDumpRenderTreechromiumWebViewHostSoftwareOutputDevicecpp">trunk/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreechromiumWebViewHostSoftwareOutputDeviceh">trunk/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (129825 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2012-09-28 00:31:12 UTC (rev 129825)
+++ trunk/LayoutTests/ChangeLog        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2012-09-27  Alexandre Elias  &lt;aelias@chromium.org&gt;
+
+        [chromium] DumpRenderTree support for software compositing
+        https://bugs.webkit.org/show_bug.cgi?id=96853
+
+        Reviewed by James Robinson.
+
+        This adds software compositor support to DumpRenderTree.  The only
+        thing needed is a minimal OutputSurfaceSoftware that holds a
+        viewport-sized bitmap. Then, I added virtual test suite
+        platform/chromium/virtual/softwarecompositing -- a mirror of the
+        compositing/ directory with --enable-software-compositing, and
+        expectations for not yet supported tests.
+
+        * platform/chromium/TestExpectations:
+        * platform/chromium/virtual/softwarecompositing/README.txt: Added.
+
</ins><span class="cx"> 2012-09-27  Ojan Vafai  &lt;ojan@chromium.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Delete test that no longer exists.
</span></span></pre></div>
<a id="trunkLayoutTestsplatformchromiumTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/chromium/TestExpectations (129825 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/chromium/TestExpectations        2012-09-28 00:31:12 UTC (rev 129825)
+++ trunk/LayoutTests/platform/chromium/TestExpectations        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -821,6 +821,7 @@
</span><span class="cx"> # Chromium's video codecs don't support alpha information encoded in the video
</span><span class="cx"> # data, so this test is not applicable.
</span><span class="cx"> compositing/video/video-background-color.html [ WontFix ]
</span><ins>+platform/chromium/virtual/softwarecompositing/video/video-background-color.html [ WontFix ]
</ins><span class="cx"> 
</span><span class="cx"> # Pre-HTML5 parser quirks only apply to the mac port; we're not interested in
</span><span class="cx"> # supporting that option.
</span><span class="lines">@@ -871,6 +872,10 @@
</span><span class="cx"> [ Win Linux ] compositing/plugins/composited-plugin.html [ WontFix ]
</span><span class="cx"> [ Win Linux ] compositing/plugins/large-to-small-composited-plugin.html [ WontFix ]
</span><span class="cx"> [ Win Linux ] compositing/plugins/small-to-large-composited-plugin.html [ WontFix ]
</span><ins>+[ Win Linux ] platform/chromium/virtual/softwarecompositing/plugins/1x1-composited-plugin.html [ WontFix ]
+[ Win Linux ] platform/chromium/virtual/softwarecompositing/plugins/composited-plugin.html [ WontFix ]
+[ Win Linux ] platform/chromium/virtual/softwarecompositing/plugins/large-to-small-composited-plugin.html [ WontFix ]
+[ Win Linux ] platform/chromium/virtual/softwarecompositing/plugins/small-to-large-composited-plugin.html [ WontFix ]
</ins><span class="cx"> 
</span><span class="cx"> # Mac's popup behavior is different.
</span><span class="cx"> [ Mac ] fast/forms/select/menulist-onchange-fired-with-key-up-down.html [ WontFix ]
</span><span class="lines">@@ -2224,28 +2229,35 @@
</span><span class="cx"> 
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/47923 [ Linux Mac Win ] compositing/geometry/limit-layer-bounds-opacity-transition.html [ Timeout ]
</span><ins>+webkit.org/b/47923 [ Linux Mac Win ] platform/chromium/virtual/softwarecompositing/geometry/limit-layer-bounds-opacity-transition.html [ Timeout ]
</ins><span class="cx"> 
</span><span class="cx"> # Chromium does not support PDF content in &lt;img&gt; tags.
</span><span class="cx"> [ Win Linux Android ] compositing/images/direct-pdf-image.html [ WontFix ]
</span><ins>+[ Win Linux Android ] platform/chromium/virtual/softwarecompositing/images/direct-pdf-image.html [ WontFix ]
</ins><span class="cx"> 
</span><span class="cx"> # Chromium does not support the CoreAnimation plugin model right now.
</span><span class="cx"> webkit.org/b/47925 [ Mac ] compositing/plugins/small-to-large-composited-plugin.html [ Failure ]
</span><ins>+webkit.org/b/47925 [ Mac ] platform/chromium/virtual/softwarecompositing/plugins/small-to-large-composited-plugin.html [ Failure ]
</ins><span class="cx"> 
</span><span class="cx"> # We don't handle reflections in the right way to support this.
</span><span class="cx"> webkit.org/b/47949 [ Android Linux Lion Win ] compositing/reflections/reflection-opacity.html [ ImageOnlyFailure ]
</span><ins>+webkit.org/b/47949 [ Android Linux Lion Win ] platform/chromium/virtual/softwarecompositing/reflections/reflection-opacity.html [ ImageOnlyFailure ]
</ins><span class="cx"> 
</span><span class="cx"> # Flaky because it's a poorly written tests. Need dino's new animation API
</span><span class="cx"> webkit.org/b/54306 compositing/reflections/nested-reflection-transition.html [ ImageOnlyFailure Pass ]
</span><ins>+webkit.org/b/54306 platform/chromium/virtual/softwarecompositing/reflections/nested-reflection-transition.html [ ImageOnlyFailure Pass ]
</ins><span class="cx"> 
</span><span class="cx"> # These tests are too slow with our MESA backend.  We can re-enable when we have
</span><span class="cx"> # bots running tests on real hardware.
</span><span class="cx"> webkit.org/b/49629 platform/chromium/compositing/lots-of-img-layers.html
</span><span class="cx"> webkit.org/b/49629 platform/chromium/compositing/lots-of-img-layers-with-opacity.html
</span><span class="cx"> webkit.org/b/49629 compositing/iframes/page-cache-layer-tree.html
</span><ins>+webkit.org/b/49629 platform/chromium/virtual/softwarecompositing/iframes/page-cache-layer-tree.html
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/53868 fast/notifications/notifications-document-close-crash.html [ Failure Pass ]
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/54051 [ Mac ] compositing/plugins/invalidate_rect.html [ Failure ]
</span><ins>+webkit.org/b/54051 [ Mac ] platform/chromium/virtual/softwarecompositing/plugins/invalidate_rect.html [ Failure ]
</ins><span class="cx"> webkit.org/b/54051 [ Mac ] plugins/windowless_plugin_paint_test.html [ Timeout ]
</span><span class="cx"> 
</span><span class="cx"> # Actual failures
</span><span class="lines">@@ -2467,6 +2479,7 @@
</span><span class="cx"> 
</span><span class="cx"> # Accelerated compositing is disabled for elements in a RenderFlowThread
</span><span class="cx"> webkit.org/b/84900 compositing/regions/webkit-flow-renderer-layer-compositing.html [ ImageOnlyFailure ]
</span><ins>+webkit.org/b/84900 platform/chromium/virtual/softwarecompositing/regions/webkit-flow-renderer-layer-platform/chromium/virtual/softwarecompositing.html [ ImageOnlyFailure ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/92131 inspector/styles/region-style-crash.html
</span><span class="cx"> 
</span><span class="lines">@@ -2512,6 +2525,7 @@
</span><span class="cx"> webkit.org/b/65453 [ Mac ] fast/css/outline-auto-empty-rects.html [ ImageOnlyFailure ]
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/93546 compositing/plugins/no-backing-store.html [ Failure Pass ]
</span><ins>+webkit.org/b/93546 platform/chromium/virtual/softwarecompositing/plugins/no-backing-store.html [ Failure Pass ]
</ins><span class="cx"> 
</span><span class="cx"> # For some reason, these tests are running as pixel tests most of the time instead of dumping as text.
</span><span class="cx"> webkit.org/b/74694 http/tests/cache/history-only-cached-subresource-loads.html [ Missing Pass ]
</span><span class="lines">@@ -2622,6 +2636,9 @@
</span><span class="cx"> crbug.com/150682 [ Linux ] compositing/geometry/fixed-position-composited-page-scale.html [ ImageOnlyFailure ]
</span><span class="cx"> crbug.com/150682 [ Linux ] compositing/geometry/fixed-position-iframe-composited-page-scale-down.html [ ImageOnlyFailure ]
</span><span class="cx"> crbug.com/150682 [ Linux ] compositing/geometry/fixed-position-iframe-composited-page-scale.html [ ImageOnlyFailure ]
</span><ins>+crbug.com/150682 [ Linux ] platform/chromium/virtual/softwarecompositing/geometry/fixed-position-composited-page-scale.html [ ImageOnlyFailure ]
+crbug.com/150682 [ Linux ] platform/chromium/virtual/softwarecompositing/geometry/fixed-position-iframe-composited-page-scale-down.html [ ImageOnlyFailure ]
+crbug.com/150682 [ Linux ] platform/chromium/virtual/softwarecompositing/geometry/fixed-position-iframe-composited-page-scale.html [ ImageOnlyFailure ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/70866 [ Android Linux Mac Debug ] fast/forms/form-associated-element-crash3.html [ Pass Timeout ]
</span><span class="cx"> webkit.org/b/72039 [ Release ] fast/forms/form-associated-element-crash3.html [ Missing Pass ]
</span><span class="lines">@@ -2695,6 +2712,7 @@
</span><span class="cx"> webkit.org/b/75716 [ Linux Mac Win ] fullscreen/video-controls-drag.html [ Failure ]
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/75786 compositing/tiled-layers-hidpi.html [ Skip ]
</span><ins>+webkit.org/b/75786 platform/chromium/virtual/softwarecompositing/tiled-layers-hidpi.html [ Skip ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/75932 fast/js/array-defineOwnProperty.html [ Failure ]
</span><span class="cx"> webkit.org/b/75932 fast/js/mozilla/strict/15.4.4.6.html [ Failure ]
</span><span class="lines">@@ -2707,6 +2725,7 @@
</span><span class="cx"> 
</span><span class="cx"> # Started flaking presumably at http://trac.webkit.org/changeset/104368
</span><span class="cx"> webkit.org/b/76157 [ Mac ] compositing/geometry/limit-layer-bounds-transformed-overflow.html [ Failure Pass ]
</span><ins>+webkit.org/b/76157 [ Mac ] platform/chromium/virtual/softwarecompositing/geometry/limit-layer-bounds-transformed-overflow.html [ Failure Pass ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/76488 css3/images/cross-fade-background-size.html [ Failure ImageOnlyFailure ]
</span><span class="cx"> 
</span><span class="lines">@@ -2731,6 +2750,7 @@
</span><span class="cx"> webkit.org/b/77508 platform/mac/fast/events/non-roman-key-code.html
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/78159 [ Debug ] compositing/iframes/scrolling-iframe.html [ Failure Pass ]
</span><ins>+webkit.org/b/78159 [ Debug ] platform/chromium/virtual/softwarecompositing/iframes/scrolling-iframe.html [ Failure Pass ]
</ins><span class="cx"> 
</span><span class="cx"> # Tests Error.stack behavior. We aren't consistent with JSC and do not intend to become so.
</span><span class="cx"> fast/js/stack-trace.html [ WontFix ]
</span><span class="lines">@@ -2775,9 +2795,11 @@
</span><span class="cx"> webkit.org/b/81050 fast/forms/file/recover-file-input-in-unposted-form.html [ Failure Pass ]
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/81145 [ Lion ] compositing/plugins/composited-plugin.html [ Failure ]
</span><ins>+webkit.org/b/81145 [ Lion ] platform/chromium/virtual/softwarecompositing/plugins/composited-plugin.html [ Failure ]
</ins><span class="cx"> webkit.org/b/81145 [ Lion ] fast/repaint/transform-absolute-in-positioned-container.html [ Failure ]
</span><span class="cx"> webkit.org/b/81145 [ Lion ] animations/cross-fade-webkit-mask-box-image.html [ ImageOnlyFailure ]
</span><span class="cx"> webkit.org/b/81145 [ Lion ] compositing/iframes/iframe-content-flipping.html [ ImageOnlyFailure ]
</span><ins>+webkit.org/b/81145 [ Lion ] platform/chromium/virtual/softwarecompositing/iframes/iframe-content-flipping.html [ ImageOnlyFailure ]
</ins><span class="cx"> webkit.org/b/81145 [ Lion ] fast/frames/invalid.html [ Failure ImageOnlyFailure Pass Slow ]
</span><span class="cx"> webkit.org/b/81145 [ Lion ] fast/repaint/background-scaling.html [ ImageOnlyFailure ]
</span><span class="cx"> webkit.org/b/81145 [ Lion ] fast/repaint/scale-page-shrink.html [ ImageOnlyFailure ]
</span><span class="lines">@@ -3025,6 +3047,7 @@
</span><span class="cx"> webkit.org/b/84550 [ SnowLeopard ] fast/canvas/2d.text.draw.fill.maxWidth.gradient.html [ Failure Pass ]
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/84688 [ SnowLeopard ] compositing/animation/computed-style-during-delay.html [ Failure Pass ]
</span><ins>+webkit.org/b/84688 [ SnowLeopard ] platform/chromium/virtual/softwarecompositing/animation/computed-style-during-delay.html [ Failure Pass ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/84696 fast/workers/storage/interrupt-database.html [ Pass Slow ]
</span><span class="cx"> 
</span><span class="lines">@@ -3066,6 +3089,7 @@
</span><span class="cx"> 
</span><span class="cx"> # Started flaking at around http://trac.webkit.org/changeset/116278.
</span><span class="cx"> webkit.org/b/85950 [ Linux Debug ] compositing/geometry/limit-layer-bounds-transformed-overflow.html [ Failure Pass ]
</span><ins>+webkit.org/b/85950 [ Linux Debug ] platform/chromium/virtual/softwarecompositing/geometry/limit-layer-bounds-transformed-overflow.html [ Failure Pass ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/81416 fast/dom/wrapper-scope.html [ Failure ]
</span><span class="cx"> 
</span><span class="lines">@@ -3101,6 +3125,7 @@
</span><span class="cx"> webkit.org/b/86908 [ Win ] http/tests/security/cross-frame-access-put.html [ Failure Pass ]
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/86909 [ Win ] compositing/geometry/object-clip-rects-assertion.html [ Pass Slow ]
</span><ins>+webkit.org/b/86909 [ Win ] platform/chromium/virtual/softwarecompositing/geometry/object-clip-rects-assertion.html [ Pass Slow ]
</ins><span class="cx"> webkit.org/b/86909 [ Win ] http/tests/inspector/appcache/appcache-iframe-manifests.html [ Pass Timeout ]
</span><span class="cx"> webkit.org/b/86909 [ Win ] http/tests/inspector/network/network-content-replacement-xhr.html [ Pass Timeout ]
</span><span class="cx"> webkit.org/b/86909 [ Win Debug ] http/tests/security/referrer-policy-redirect-link.html [ Pass Timeout ]
</span><span class="lines">@@ -3143,6 +3168,7 @@
</span><span class="cx"> 
</span><span class="cx"> # A few pixels off from the baseline, added by r118567.
</span><span class="cx"> webkit.org/b/87653 [ Android Linux Win ] compositing/geometry/composited-in-columns.html [ Failure ]
</span><ins>+webkit.org/b/87653 [ Android Linux Win ] platform/chromium/virtual/softwarecompositing/geometry/composited-in-columns.html [ Failure ]
</ins><span class="cx"> 
</span><span class="cx"> # Fails with a mismatch in $(&quot;menulist&quot;).selectedIndex
</span><span class="cx"> webkit.org/b/87748 [ Mac ] fast/forms/select/optgroup-clicking.html [ Failure ]
</span><span class="lines">@@ -3189,8 +3215,11 @@
</span><span class="cx"> webkit.org/b/89510 [ Win ] gamepad/gamepad-polling-access.html [ Pass Timeout ]
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/96839 compositing/geometry/fixed-position-transform-composited-page-scale.html [ ImageOnlyFailure Pass ]
</span><ins>+webkit.org/b/96839 platform/chromium/virtual/softwarecompositing/geometry/fixed-position-transform-composited-page-scale.html [ ImageOnlyFailure Pass ]
</ins><span class="cx"> webkit.org/b/89702 compositing/geometry/fixed-position-transform-composited-page-scale-down.html [ ImageOnlyFailure Pass ]
</span><ins>+webkit.org/b/89702 platform/chromium/virtual/softwarecompositing/geometry/fixed-position-transform-composited-page-scale-down.html [ ImageOnlyFailure Pass ]
</ins><span class="cx"> webkit.org/b/89702 compositing/scaling/tiled-layer-recursion.html [ ImageOnlyFailure Pass ]
</span><ins>+webkit.org/b/89702 platform/chromium/virtual/softwarecompositing/scaling/tiled-layer-recursion.html [ ImageOnlyFailure Pass ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/89789 [ Mac ] plugins/embed-attributes-style.html [ ImageOnlyFailure Pass ]
</span><span class="cx"> webkit.org/b/89789 [ Mac ] userscripts/user-script-video-document.html [ Crash Pass ]
</span><span class="lines">@@ -3300,6 +3329,7 @@
</span><span class="cx"> webkit.org/b/92850 [ Android Linux Debug ] http/tests/websocket/tests/hybi/workers/close-code-and-reason.html [ Crash Pass ]
</span><span class="cx"> 
</span><span class="cx"> webkit.org/b/92938 compositing/layer-creation/animation-overlap-with-children.html [ Failure Pass ]
</span><ins>+webkit.org/b/92938 platform/chromium/virtual/softwarecompositing/layer-creation/animation-overlap-with-children.html [ Failure Pass ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/92941 accessibility/loading-iframe-updates-axtree.html [ Crash Pass ]
</span><span class="cx"> 
</span><span class="lines">@@ -3389,12 +3419,17 @@
</span><span class="cx"> 
</span><span class="cx"> # ENABLE_ACCELERATED_OVERFLOW_SCROLLING is not currently enabled in Chromium.
</span><span class="cx"> webkit.org/b/94353 compositing/overflow/scrolling-content-clip-to-viewport.html [ Failure ]
</span><ins>+webkit.org/b/94353 platform/chromium/virtual/softwarecompositing/overflow/scrolling-content-clip-to-viewport.html [ Failure ]
</ins><span class="cx"> webkit.org/b/94353 compositing/overflow/textarea-scroll-touch.html [ Failure ]
</span><ins>+webkit.org/b/94353 platform/chromium/virtual/softwarecompositing/overflow/textarea-scroll-touch.html [ Failure ]
</ins><span class="cx"> 
</span><span class="cx"> # Failing on Linux (Content Shell) only now
</span><span class="cx"> webkit.org/b/94353 [ Android Linux ] compositing/overflow/nested-scrolling.html [ Failure Pass ]
</span><ins>+webkit.org/b/94353 [ Android Linux ] platform/chromium/virtual/softwarecompositing/overflow/nested-scrolling.html [ Failure Pass ]
</ins><span class="cx"> webkit.org/b/94353 compositing/overflow/overflow-auto-with-touch.html [ Failure ]
</span><ins>+webkit.org/b/94353 platform/chromium/virtual/softwarecompositing/overflow/overflow-auto-with-touch.html [ Failure ]
</ins><span class="cx"> webkit.org/b/94353 compositing/overflow/overflow-overlay-with-touch.html [ Failure ]
</span><ins>+webkit.org/b/94353 platform/chromium/virtual/softwarecompositing/overflow/overflow-overlay-with-touch.html [ Failure ]
</ins><span class="cx"> 
</span><span class="cx"> webkit.org/b/90488 [ Win ] http/tests/inspector/network-preflight-options.html [ Pass Slow ]
</span><span class="cx"> 
</span><span class="lines">@@ -3458,7 +3493,17 @@
</span><span class="cx"> crbug.com/145087 [ Android ] compositing/rtl/rtl-iframe-fixed-overflow-scrolled.html [ Failure Pass ]
</span><span class="cx"> crbug.com/145087 [ Android ] compositing/rtl/rtl-iframe-fixed-overflow.html [ Failure Pass ]
</span><span class="cx"> crbug.com/145087 [ Android ] compositing/rtl/rtl-iframe-fixed.html [ Failure Pass ]
</span><ins>+crbug.com/145087 [ Android ] platform/chromium/virtual/softwarecompositing/geometry/fixed-position-composited-switch.html [ Failure ]
+crbug.com/145087 [ Android ] platform/chromium/virtual/softwarecompositing/geometry/limit-layer-bounds-opacity-transition.html [ Failure ]
+crbug.com/145087 [ Android ] platform/chromium/virtual/softwarecompositing/reflections/nested-reflection-animated.html [ Failure Pass ]
+crbug.com/145087 [ Android ] platform/chromium/virtual/softwarecompositing/rtl/rtl-fixed-overflow-scrolled.html [ Failure Pass ]
+crbug.com/145087 [ Android ] platform/chromium/virtual/softwarecompositing/rtl/rtl-fixed-overflow.html [ Failure Pass ]
+crbug.com/145087 [ Android ] platform/chromium/virtual/softwarecompositing/rtl/rtl-fixed.html [ Failure Pass ]
+crbug.com/145087 [ Android ] platform/chromium/virtual/softwarecompositing/rtl/rtl-iframe-fixed-overflow-scrolled.html [ Failure Pass ]
+crbug.com/145087 [ Android ] platform/chromium/virtual/softwarecompositing/rtl/rtl-iframe-fixed-overflow.html [ Failure Pass ]
+crbug.com/145087 [ Android ] platform/chromium/virtual/softwarecompositing/rtl/rtl-iframe-fixed.html [ Failure Pass ]
</ins><span class="cx"> 
</span><ins>+
</ins><span class="cx"> # Failing media tests on Android.
</span><span class="cx"> crbug.com/145590 [ Android ] fullscreen/video-controls-drag.html [ Timeout ]
</span><span class="cx"> crbug.com/145590 [ Android ] fullscreen/video-controls-override.html [ Timeout ]
</span><span class="lines">@@ -3600,3 +3645,59 @@
</span><span class="cx"> webkit.org/b/96961 fast/canvas/webgl/oes-vertex-array-object.html [ Failure Pass ]
</span><span class="cx"> webkit.org/b/96961 platform/chromium/virtual/gpu/fast/canvas/webgl/oes-vertex-array-object.html [ Failure Pass ]
</span><span class="cx"> 
</span><ins>+
+# Render surfaces do not draw anything in the software compositor.
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/backface-visibility/backface-visibility-hierarchical-transform.html [ ImageOnlyFailure ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/backface-visibility/backface-visibility-image.html [ ImageOnlyFailure ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/culling/filter-occlusion-alpha-large.html [ ImageOnlyFailure ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/culling/filter-occlusion-alpha.html [ ImageOnlyFailure ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/culling/filter-occlusion-blur-large.html [ ImageOnlyFailure ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/culling/filter-occlusion-blur.html [ ImageOnlyFailure ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/flat-with-transformed-child.html [ ImageOnlyFailure ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/geometry/abs-position-inside-opacity.html [ ImageOnlyFailure ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/geometry/fixed-position.html [ ImageOnlyFailure ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/masks [ ImageOnlyFailure ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/reflections [ ImageOnlyFailure ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/reflections/backface-hidden-reflection.html [ Pass ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/reflections/become-simple-composited-reflection.html [ Pass ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/reflections/empty-reflection-with-mask.html [ Pass ]
+crbug.com/150010 platform/chromium/virtual/softwarecompositing/reflections/remove-reflection.html [ Pass ]
+
+# Canvas2d not yet supported by software compositor.
+crbug.com/150018 platform/chromium/virtual/softwarecompositing/layer-creation/spanOverlapsCanvas.html [ Crash ]
+crbug.com/150018 platform/chromium/virtual/softwarecompositing/overflow/overflow-hidden-canvas-layer.html [ Crash ]
+crbug.com/150018 platform/chromium/virtual/softwarecompositing/overflow/overflow-platform/chromium/virtual/softwarecompositing-descendant.html [ Crash ]
+crbug.com/150018 platform/chromium/virtual/softwarecompositing/visibility/visibility-simple-canvas2d-layer.html [ Crash ]
+
+# Video not yet supported by software compositor.
+crbug.com/150016 platform/chromium/virtual/softwarecompositing/geometry/video-fixed-scrolling.html [ Crash ]
+crbug.com/150016 platform/chromium/virtual/softwarecompositing/geometry/video-opacity-overlay.html [ Crash ]
+crbug.com/150016 platform/chromium/virtual/softwarecompositing/layers-inside-overflow-scroll.html [ Crash ]
+crbug.com/150016 platform/chromium/virtual/softwarecompositing/overflow/scroll-ancestor-update.html [ Crash ]
+crbug.com/150016 platform/chromium/virtual/softwarecompositing/self-painting-layers.html [ Crash ]
+crbug.com/150016 platform/chromium/virtual/softwarecompositing/reflections/load-video-in-reflection.html [ Crash ]
+crbug.com/150016 platform/chromium/virtual/softwarecompositing/video-page-visibility.html [ Crash ]
+crbug.com/150016 platform/chromium/virtual/softwarecompositing/visibility/visibility-simple-video-layer.html [ Crash ]
+
+# WebGL not yet supported by software compositor.
+crbug.com/151713 platform/chromium/virtual/softwarecompositing/backface-visibility/backface-visibility-webgl.html [ Crash ]
+crbug.com/151713 platform/chromium/virtual/softwarecompositing/webgl [ Crash ]
+crbug.com/151713 platform/chromium/virtual/softwarecompositing/visibility/visibility-simple-webgl-layer.html [ Crash ]
+
+# No antialiasing on rotation in software compositor.
+crbug.com/152007 platform/chromium/virtual/softwarecompositing/direct-image-platform/chromium/virtual/softwarecompositing.html [ ImageOnlyFailure ]
+crbug.com/152007 platform/chromium/virtual/softwarecompositing/geometry/layer-due-to-layer-children-deep.html [ ImageOnlyFailure ]
+crbug.com/152007 platform/chromium/virtual/softwarecompositing/geometry/layer-due-to-layer-children.html [ ImageOnlyFailure ]
+crbug.com/152007 platform/chromium/virtual/softwarecompositing/geometry/vertical-scroll-composited.html [ ImageOnlyFailure ]
+crbug.com/152007 platform/chromium/virtual/softwarecompositing/reflections/reflection-in-composited.html [ ImageOnlyFailure ]
+
+# Alpha blending ends up with slightly different green in software compositor.
+crbug.com/152007 platform/chromium/virtual/softwarecompositing/repaint/opacity-between-absolute.html [ ImageOnlyFailure ]
+crbug.com/152007 platform/chromium/virtual/softwarecompositing/repaint/opacity-between-absolute2.html [ ImageOnlyFailure ]
+crbug.com/152007 platform/chromium/virtual/softwarecompositing/transitions/scale-transition-no-start.html [ ImageOnlyFailure ]
+
+# Various text/edge antialiasing/alpha quirks in software compositor.
+crbug.com/152007 platform/chromium/virtual/softwarecompositing/color-matching/image-color-matching.html [ ImageOnlyFailure ]
+crbug.com/152007 platform/chromium/virtual/softwarecompositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html [ ImageOnlyFailure ]
+crbug.com/152007 platform/chromium/virtual/softwarecompositing/geometry/clipping-foreground.html [ ImageOnlyFailure ]
+crbug.com/152007 platform/chromium/virtual/softwarecompositing/visibility/visibility-image-layers.html [ ImageOnlyFailure ]
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformchromiumvirtualsoftwarecompositingREADMEtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/platform/chromium/virtual/softwarecompositing/README.txt (0 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/chromium/virtual/softwarecompositing/README.txt                                (rev 0)
+++ trunk/LayoutTests/platform/chromium/virtual/softwarecompositing/README.txt        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+This is the virtual directory for tests run with --enable-software-compositing.
+
</ins></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (129825 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2012-09-28 00:31:12 UTC (rev 129825)
+++ trunk/Tools/ChangeLog        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -1,3 +1,51 @@
</span><ins>+2012-09-27  Alexandre Elias  &lt;aelias@chromium.org&gt;
+
+        [chromium] DumpRenderTree support for software compositing
+        https://bugs.webkit.org/show_bug.cgi?id=96853
+
+        Reviewed by James Robinson.
+
+        This adds software compositor support to DumpRenderTree.  The only
+        thing needed is a minimal OutputSurfaceSoftware that holds a
+        viewport-sized bitmap. Then, I added virtual test suite
+        platform/chromium/virtual/softwarecompositing -- a mirror of the
+        compositing/ directory with --enable-software-compositing, and
+        expectations for not yet supported tests.
+
+        * DumpRenderTree/DumpRenderTree.gypi:
+        * DumpRenderTree/chromium/DumpRenderTree.cpp:
+        (main):
+        * DumpRenderTree/chromium/TestShell.cpp:
+        (TestShell::TestShell):
+        * DumpRenderTree/chromium/TestShell.h:
+        (TestShell::softwareCompositingEnabled):
+        (TestShell::setSoftwareCompositingEnabled):
+        (TestShell):
+        * DumpRenderTree/chromium/WebViewHost.cpp:
+        (WebViewHost::createOutputSurface):
+        * DumpRenderTree/chromium/WebViewHostOutputSurface.cpp:
+        (WebKit::WebViewHostOutputSurface::create3d):
+        (WebKit):
+        (WebKit::WebViewHostOutputSurface::createSoftware):
+        (WebKit::WebViewHostOutputSurface::WebViewHostOutputSurface):
+        (WebKit::WebViewHostOutputSurface::bindToClient):
+        (WebKit::WebViewHostOutputSurface::surfaceSoftware):
+        * DumpRenderTree/chromium/WebViewHostOutputSurface.h:
+        (WebKit):
+        (WebViewHostOutputSurface):
+        * DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.cpp: Copied from Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp.
+        (WebKit):
+        (WebKit::WebViewHostSoftwareOutputDevice::lockForWrite):
+        (WebKit::WebViewHostSoftwareOutputDevice::unlockForWrite):
+        (WebKit::WebViewHostSoftwareOutputDevice::lockForRead):
+        (WebKit::WebViewHostSoftwareOutputDevice::unlockForRead):
+        (WebKit::WebViewHostSoftwareOutputDevice::viewportChanged):
+        * DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.h: Copied from Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp.
+        (WebKit):
+        (WebViewHostSoftwareOutputDevice):
+        * Scripts/webkitpy/layout_tests/port/chromium.py:
+        (ChromiumPort.virtual_test_suites):
+
</ins><span class="cx"> 2012-09-27  Nasko Oskov  &lt;nasko@chromium.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Move DumpRenderTree to use newer version of the name method of
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreeDumpRenderTreegypi"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/DumpRenderTree.gypi (129825 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/DumpRenderTree.gypi        2012-09-28 00:31:12 UTC (rev 129825)
+++ trunk/Tools/DumpRenderTree/DumpRenderTree.gypi        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -58,6 +58,8 @@
</span><span class="cx">             'chromium/WebViewHost.h',
</span><span class="cx">             'chromium/WebViewHostOutputSurface.cpp',
</span><span class="cx">             'chromium/WebViewHostOutputSurface.h',
</span><ins>+            'chromium/WebViewHostSoftwareOutputDevice.cpp',
+            'chromium/WebViewHostSoftwareOutputDevice.h',
</ins><span class="cx">         ],
</span><span class="cx">         'test_runner_files': [
</span><span class="cx">             'DumpRenderTree.h',
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreechromiumDumpRenderTreecpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp (129825 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp        2012-09-28 00:31:12 UTC (rev 129825)
+++ trunk/Tools/DumpRenderTree/chromium/DumpRenderTree.cpp        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -55,6 +55,7 @@
</span><span class="cx"> static const char optionCheckLayoutTestSystemDeps[] = &quot;--check-layout-test-sys-deps&quot;;
</span><span class="cx"> 
</span><span class="cx"> static const char optionHardwareAcceleratedGL[] = &quot;--enable-hardware-gpu&quot;;
</span><ins>+static const char optionEnableSoftwareCompositing[] = &quot;--enable-software-compositing&quot;;
</ins><span class="cx"> static const char optionEnableThreadedCompositing[] = &quot;--enable-threaded-compositing&quot;;
</span><span class="cx"> static const char optionForceCompositingMode[] = &quot;--force-compositing-mode&quot;;
</span><span class="cx"> static const char optionEnableAccelerated2DCanvas[] = &quot;--enable-accelerated-2d-canvas&quot;;
</span><span class="lines">@@ -125,6 +126,7 @@
</span><span class="cx">     bool allowExternalPages = false;
</span><span class="cx">     bool startupDialog = false;
</span><span class="cx">     bool acceleratedCompositingForVideoEnabled = false;
</span><ins>+    bool softwareCompositingEnabled = false;
</ins><span class="cx">     bool threadedCompositingEnabled = false;
</span><span class="cx">     bool forceCompositingMode = false;
</span><span class="cx">     bool accelerated2DCanvasEnabled = false;
</span><span class="lines">@@ -159,6 +161,8 @@
</span><span class="cx">             hardwareAcceleratedGL = true;
</span><span class="cx">         else if (argument == optionEnableAcceleratedCompositingForVideo)
</span><span class="cx">             acceleratedCompositingForVideoEnabled = true;
</span><ins>+        else if (argument == optionEnableSoftwareCompositing)
+            softwareCompositingEnabled = true;
</ins><span class="cx">         else if (argument == optionEnableThreadedCompositing)
</span><span class="cx">             threadedCompositingEnabled = true;
</span><span class="cx">         else if (argument == optionForceCompositingMode)
</span><span class="lines">@@ -211,6 +215,7 @@
</span><span class="cx">         TestShell shell;
</span><span class="cx">         shell.setAllowExternalPages(allowExternalPages);
</span><span class="cx">         shell.setAcceleratedCompositingForVideoEnabled(acceleratedCompositingForVideoEnabled);
</span><ins>+        shell.setSoftwareCompositingEnabled(softwareCompositingEnabled);
</ins><span class="cx">         shell.setThreadedCompositingEnabled(threadedCompositingEnabled);
</span><span class="cx">         shell.setForceCompositingMode(forceCompositingMode);
</span><span class="cx">         shell.setAccelerated2dCanvasEnabled(accelerated2DCanvasEnabled);
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreechromiumTestShellcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/chromium/TestShell.cpp (129825 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/chromium/TestShell.cpp        2012-09-28 00:31:12 UTC (rev 129825)
+++ trunk/Tools/DumpRenderTree/chromium/TestShell.cpp        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -108,6 +108,7 @@
</span><span class="cx">     , m_dumpPixelsForCurrentTest(false)
</span><span class="cx">     , m_allowExternalPages(false)
</span><span class="cx">     , m_acceleratedCompositingForVideoEnabled(false)
</span><ins>+    , m_softwareCompositingEnabled(false)
</ins><span class="cx">     , m_threadedCompositingEnabled(false)
</span><span class="cx">     , m_forceCompositingMode(false)
</span><span class="cx">     , m_accelerated2dCanvasEnabled(false)
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreechromiumTestShellh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/chromium/TestShell.h (129825 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/chromium/TestShell.h        2012-09-28 00:31:12 UTC (rev 129825)
+++ trunk/Tools/DumpRenderTree/chromium/TestShell.h        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -130,6 +130,8 @@
</span><span class="cx">     void setAllowExternalPages(bool allowExternalPages) { m_allowExternalPages = allowExternalPages; }
</span><span class="cx"> 
</span><span class="cx">     void setAcceleratedCompositingForVideoEnabled(bool enabled) { m_acceleratedCompositingForVideoEnabled = enabled; }
</span><ins>+    bool softwareCompositingEnabled() { return m_softwareCompositingEnabled; }
+    void setSoftwareCompositingEnabled(bool enabled) { m_softwareCompositingEnabled = enabled; }
</ins><span class="cx">     void setThreadedCompositingEnabled(bool enabled) { m_threadedCompositingEnabled = enabled; }
</span><span class="cx">     void setForceCompositingMode(bool enabled) { m_forceCompositingMode = enabled; }
</span><span class="cx">     void setAccelerated2dCanvasEnabled(bool enabled) { m_accelerated2dCanvasEnabled = enabled; }
</span><span class="lines">@@ -226,6 +228,7 @@
</span><span class="cx">     int m_timeout; // timeout value in millisecond
</span><span class="cx">     bool m_allowExternalPages;
</span><span class="cx">     bool m_acceleratedCompositingForVideoEnabled;
</span><ins>+    bool m_softwareCompositingEnabled;
</ins><span class="cx">     bool m_threadedCompositingEnabled;
</span><span class="cx">     bool m_forceCompositingMode;
</span><span class="cx">     bool m_accelerated2dCanvasEnabled;
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreechromiumWebViewHostcpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp (129825 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp        2012-09-28 00:31:12 UTC (rev 129825)
+++ trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -65,6 +65,7 @@
</span><span class="cx"> #include &quot;WebUserMediaClientMock.h&quot;
</span><span class="cx"> #include &quot;WebView.h&quot;
</span><span class="cx"> #include &quot;WebViewHostOutputSurface.h&quot;
</span><ins>+#include &quot;WebViewHostSoftwareOutputDevice.h&quot;
</ins><span class="cx"> #include &quot;WebWindowFeatures.h&quot;
</span><span class="cx"> #include &quot;platform/WebSerializedScriptValue.h&quot;
</span><span class="cx"> #include &quot;skia/ext/platform_canvas.h&quot;
</span><span class="lines">@@ -288,11 +289,14 @@
</span><span class="cx">     return webkit_support::CreateSessionStorageNamespace(quota);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-WebKit::WebCompositorOutputSurface* WebViewHost::createOutputSurface()
</del><ins>+WebCompositorOutputSurface* WebViewHost::createOutputSurface()
</ins><span class="cx"> {
</span><span class="cx">     if (!webView())
</span><span class="cx">         return 0;
</span><del>-    return new WebKit::WebViewHostOutputSurface(adoptPtr(webkit_support::CreateGraphicsContext3D(WebKit::WebGraphicsContext3D::Attributes(), webView())));
</del><ins>+
+    if (m_shell-&gt;softwareCompositingEnabled())
+        return WebViewHostOutputSurface::createSoftware(adoptPtr(new WebViewHostSoftwareOutputDevice)).leakPtr();
+    return WebViewHostOutputSurface::create3d(adoptPtr(webkit_support::CreateGraphicsContext3D(WebGraphicsContext3D::Attributes(), webView()))).leakPtr();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void WebViewHost::didAddMessageToConsole(const WebConsoleMessage&amp; message, const WebString&amp; sourceName, unsigned sourceLine)
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreechromiumWebViewHostOutputSurfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp (129825 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp        2012-09-28 00:31:12 UTC (rev 129825)
+++ trunk/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -27,22 +27,41 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;WebViewHostOutputSurface.h&quot;
</span><span class="cx"> 
</span><ins>+#include &lt;public/WebCompositorSoftwareOutputDevice.h&gt;
</ins><span class="cx"> #include &lt;public/WebGraphicsContext3D.h&gt;
</span><span class="cx"> #include &lt;wtf/Assertions.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><ins>+PassOwnPtr&lt;WebViewHostOutputSurface&gt; WebViewHostOutputSurface::create3d(PassOwnPtr&lt;WebKit::WebGraphicsContext3D&gt; context3d)
+{
+    return adoptPtr(new WebViewHostOutputSurface(context3d));
+}
+
+PassOwnPtr&lt;WebViewHostOutputSurface&gt; WebViewHostOutputSurface::createSoftware(PassOwnPtr&lt;WebKit::WebCompositorSoftwareOutputDevice&gt; softwareDevice)
+{
+    return adoptPtr(new WebViewHostOutputSurface(softwareDevice));
+}
+
</ins><span class="cx"> WebViewHostOutputSurface::WebViewHostOutputSurface(PassOwnPtr&lt;WebKit::WebGraphicsContext3D&gt; context)
</span><span class="cx">     : m_context(context)
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+WebViewHostOutputSurface::WebViewHostOutputSurface(PassOwnPtr&lt;WebKit::WebCompositorSoftwareOutputDevice&gt; softwareDevice)
+    : m_softwareDevice(softwareDevice)
+{
+}
+
</ins><span class="cx"> WebViewHostOutputSurface::~WebViewHostOutputSurface()
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> bool WebViewHostOutputSurface::bindToClient(WebCompositorOutputSurfaceClient*)
</span><span class="cx"> {
</span><ins>+    if (!m_context)
+        return true;
+
</ins><span class="cx">     return m_context-&gt;makeContextCurrent();
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -56,6 +75,11 @@
</span><span class="cx">     return m_context.get();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+WebCompositorSoftwareOutputDevice* WebViewHostOutputSurface::softwareDevice() const
+{
+    return m_softwareDevice.get();
+}
+
</ins><span class="cx"> void WebViewHostOutputSurface::sendFrameToParentCompositor(const WebCompositorFrame&amp;)
</span><span class="cx"> {
</span><span class="cx">     ASSERT_NOT_REACHED();
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreechromiumWebViewHostOutputSurfaceh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.h (129825 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.h        2012-09-28 00:31:12 UTC (rev 129825)
+++ trunk/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.h        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -33,22 +33,29 @@
</span><span class="cx"> namespace WebKit {
</span><span class="cx"> 
</span><span class="cx"> class WebCompositorOutputSurfaceClient;
</span><ins>+class WebCompositorSoftwareOutputDevice;
</ins><span class="cx"> class WebGraphicsContext3D;
</span><span class="cx"> 
</span><span class="cx"> class WebViewHostOutputSurface : public WebKit::WebCompositorOutputSurface {
</span><span class="cx"> public:
</span><del>-    explicit WebViewHostOutputSurface(PassOwnPtr&lt;WebKit::WebGraphicsContext3D&gt;);
</del><ins>+    static PassOwnPtr&lt;WebViewHostOutputSurface&gt; create3d(PassOwnPtr&lt;WebKit::WebGraphicsContext3D&gt;);
+    static PassOwnPtr&lt;WebViewHostOutputSurface&gt; createSoftware(PassOwnPtr&lt;WebKit::WebCompositorSoftwareOutputDevice&gt;);
</ins><span class="cx">     virtual ~WebViewHostOutputSurface();
</span><span class="cx"> 
</span><span class="cx">     virtual bool bindToClient(WebCompositorOutputSurfaceClient*) OVERRIDE;
</span><span class="cx"> 
</span><span class="cx">     virtual const WebKit::WebCompositorOutputSurface::Capabilities&amp; capabilities() const OVERRIDE;
</span><span class="cx">     virtual WebGraphicsContext3D* context3D() const OVERRIDE;
</span><ins>+    virtual WebCompositorSoftwareOutputDevice* softwareDevice() const OVERRIDE;
</ins><span class="cx">     virtual void sendFrameToParentCompositor(const WebCompositorFrame&amp;) OVERRIDE;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    explicit WebViewHostOutputSurface(PassOwnPtr&lt;WebKit::WebGraphicsContext3D&gt;);
+    explicit WebViewHostOutputSurface(PassOwnPtr&lt;WebKit::WebCompositorSoftwareOutputDevice&gt;);
+
</ins><span class="cx">     WebKit::WebCompositorOutputSurface::Capabilities m_capabilities;
</span><span class="cx">     OwnPtr&lt;WebKit::WebGraphicsContext3D&gt; m_context;
</span><ins>+    OwnPtr&lt;WebKit::WebCompositorSoftwareOutputDevice&gt; m_softwareDevice;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreechromiumWebViewHostSoftwareOutputDevicecppfromrev129825trunkToolsDumpRenderTreechromiumWebViewHostOutputSurfacecpp"></a>
<div class="copfile"><h4>Copied: trunk/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.cpp (from rev 129825, trunk/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp) (0 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.cpp                                (rev 0)
+++ trunk/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.cpp        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include &quot;config.h&quot;
+
+#include &quot;WebViewHostSoftwareOutputDevice.h&quot;
+
+#include &quot;SkBitmap.h&quot;
+#include &quot;SkDevice.h&quot;
+#include &lt;public/WebSize.h&gt;
+#include &lt;wtf/Assertions.h&gt;
+
+namespace WebKit {
+
+WebImage* WebViewHostSoftwareOutputDevice::lock(bool forWrite)
+{
+    ASSERT(m_device);
+    m_image = m_device-&gt;accessBitmap(forWrite);
+    return &amp;m_image;
+}
+
+void WebViewHostSoftwareOutputDevice::unlock()
+{
+    m_image.reset();
+}
+
+void WebViewHostSoftwareOutputDevice::didChangeViewportSize(WebSize size)
+{
+    if (m_device &amp;&amp; size.width == m_device-&gt;width() &amp;&amp; size.height == m_device-&gt;height())
+        return;
+
+    m_device = adoptPtr(new SkDevice(SkBitmap::kARGB_8888_Config, size.width, size.height, true));
+}
+
+
+}
</ins></span></pre></div>
<a id="trunkToolsDumpRenderTreechromiumWebViewHostSoftwareOutputDevicehfromrev129825trunkToolsDumpRenderTreechromiumWebViewHostOutputSurfacecpp"></a>
<div class="copfile"><h4>Copied: trunk/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.h (from rev 129825, trunk/Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp) (0 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.h                                (rev 0)
+++ trunk/Tools/DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.h        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebViewHostSoftwareOutputDevice_h
+#define WebViewHostSoftwareOutputDevice_h
+
+#include &lt;public/WebCompositorSoftwareOutputDevice.h&gt;
+#include &lt;public/WebImage.h&gt;
+#include &lt;wtf/OwnPtr.h&gt;
+#include &lt;wtf/PassOwnPtr.h&gt;
+
+class SkDevice;
+
+namespace WebKit {
+
+struct WebSize;
+
+class WebViewHostSoftwareOutputDevice : public WebKit::WebCompositorSoftwareOutputDevice {
+public:
+    virtual WebImage* lock(bool forWrite) OVERRIDE;
+    virtual void unlock() OVERRIDE;
+
+    virtual void didChangeViewportSize(WebSize) OVERRIDE;
+
+private:
+    OwnPtr&lt;SkDevice&gt; m_device;
+    WebImage m_image;
+};
+
+}
+
+#endif // WebViewHostSoftwareOutputDevice_h
</ins></span></pre></div>
<a id="trunkToolsScriptswebkitpylayout_testsportchromiumpy"></a>
<div class="modfile"><h4>Modified: trunk/Tools/Scripts/webkitpy/layout_tests/port/chromium.py (129825 => 129826)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/Scripts/webkitpy/layout_tests/port/chromium.py        2012-09-28 00:31:12 UTC (rev 129825)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/port/chromium.py        2012-09-28 00:46:53 UTC (rev 129826)
</span><span class="lines">@@ -379,6 +379,9 @@
</span><span class="cx">             VirtualTestSuite('platform/chromium/virtual/gpu/fast/hidpi',
</span><span class="cx">                              'fast/hidpi',
</span><span class="cx">                              ['--force-compositing-mode']),
</span><ins>+            VirtualTestSuite('platform/chromium/virtual/softwarecompositing',
+                             'compositing',
+                             ['--enable-software-compositing']),
</ins><span class="cx">         ]
</span><span class="cx"> 
</span><span class="cx">     #
</span></span></pre>
</div>
</div>

</body>
</html>