Title: [223984] trunk
Revision
223984
Author
[email protected]
Date
2017-10-25 14:32:08 -0700 (Wed, 25 Oct 2017)

Log Message

When navigating back to a page, compositing layers may not use accelerated drawing
https://bugs.webkit.org/show_bug.cgi?id=178749
rdar://problem/35158946

Reviewed by Dean Jackson.
Source/WebCore:

There were two issues with setting GraphicsLayerCA's "acceleratesDrawing" state which
occurred on back navigation, related to the ordering of style recalcs and layout.

First, at style recalc time, we created a RenderLayerCompositor but hadn't yet called
its cacheAcceleratedCompositingFlags(), so any layers created during style update
didn't get accelerated drawing. Fix by making cacheAcceleratedCompositingFlags() internal
to RenderLayerCompositor and calling it from willRecalcStyle() and updateCompositingLayers().

Secondly, GraphicsLayerCA::commitLayerChangesBeforeSublayers() needs to updateAcceleratesDrawing()
before updating tiles, so that new tiles fetch the right acceleratesDrawing state from
the TileController.

Test: compositing/accelerated-layers-after-back.html

* page/FrameView.cpp:
(WebCore::FrameView::updateCompositingLayersAfterLayout):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::willRecalcStyle):
(WebCore::RenderLayerCompositor::didRecalcStyleWithNoPendingLayout):
(WebCore::RenderLayerCompositor::updateCompositingLayers):
* rendering/RenderLayerCompositor.h:

Source/WebKit:

Avoid assertions when a test enables accelerated drawing (which we can't support
in the iOS simulator).

* Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::ensureBackingStore):

Tools:

Fix WTR and DRT to parse "useAcceleratedDrawing" out of "webkit-test-runner" options
and use it to set the state of the web view.

* DumpRenderTree/TestOptions.h:
* DumpRenderTree/TestOptions.mm:
(TestOptions::TestOptions):
* DumpRenderTree/mac/DumpRenderTree.mm:
(setWebPreferencesForTestOptions):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetPreferencesToConsistentValues):
(WTR::updateTestOptionsFromTestHeader):
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions const):

LayoutTests:

Moved iframes/resources/page-cache-helper.html up to compositing/resources/go-back.html.

* compositing/accelerated-layers-after-back-expected.txt: Added.
* compositing/accelerated-layers-after-back.html: Added.
* compositing/iframes/page-cache-layer-tree.html:
* compositing/page-cache-back-crash.html:
* compositing/resources/go-back.html: Renamed from LayoutTests/compositing/iframes/resources/page-cache-helper.html.
* platform/ios/compositing/accelerated-layers-after-back-expected.txt: Added.

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (223983 => 223984)


--- trunk/LayoutTests/ChangeLog	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/LayoutTests/ChangeLog	2017-10-25 21:32:08 UTC (rev 223984)
@@ -1,3 +1,20 @@
+2017-10-25  Simon Fraser  <[email protected]>
+
+        When navigating back to a page, compositing layers may not use accelerated drawing
+        https://bugs.webkit.org/show_bug.cgi?id=178749
+        rdar://problem/35158946
+
+        Reviewed by Dean Jackson.
+        
+        Moved iframes/resources/page-cache-helper.html up to compositing/resources/go-back.html.
+
+        * compositing/accelerated-layers-after-back-expected.txt: Added.
+        * compositing/accelerated-layers-after-back.html: Added.
+        * compositing/iframes/page-cache-layer-tree.html:
+        * compositing/page-cache-back-crash.html:
+        * compositing/resources/go-back.html: Renamed from LayoutTests/compositing/iframes/resources/page-cache-helper.html.
+        * platform/ios/compositing/accelerated-layers-after-back-expected.txt: Added.
+
 2017-10-25  Alex Christensen  <[email protected]>
 
         LayoutTest http/tests/loading/basic-credentials-sent-automatically.html is flaky

Added: trunk/LayoutTests/compositing/accelerated-layers-after-back-expected.txt (0 => 223984)


--- trunk/LayoutTests/compositing/accelerated-layers-after-back-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/compositing/accelerated-layers-after-back-expected.txt	2017-10-25 21:32:08 UTC (rev 223984)
@@ -0,0 +1,45 @@
+This layer should use 'acceleratesDrawing' after going back to this page.
+
+Before:
+
+(GraphicsLayer
+  (anchor 0.00 0.00)
+  (bounds 800.00 600.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 600.00)
+      (contentsOpaque 1)
+      (acceleratesDrawing 1)
+      (children 1
+        (GraphicsLayer
+          (position 18.00 10.00)
+          (bounds 222.00 222.00)
+          (drawsContent 1)
+          (acceleratesDrawing 1)
+        )
+      )
+    )
+  )
+)
+After:
+
+(GraphicsLayer
+  (anchor 0.00 0.00)
+  (bounds 785.00 653.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 785.00 653.00)
+      (contentsOpaque 1)
+      (acceleratesDrawing 1)
+      (children 1
+        (GraphicsLayer
+          (position 18.00 10.00)
+          (bounds 222.00 222.00)
+          (drawsContent 1)
+          (acceleratesDrawing 1)
+        )
+      )
+    )
+  )
+)
+

Added: trunk/LayoutTests/compositing/accelerated-layers-after-back.html (0 => 223984)


--- trunk/LayoutTests/compositing/accelerated-layers-after-back.html	                        (rev 0)
+++ trunk/LayoutTests/compositing/accelerated-layers-after-back.html	2017-10-25 21:32:08 UTC (rev 223984)
@@ -0,0 +1,67 @@
+<!DOCTYPE html> <!-- webkit-test-runner [ useAcceleratedDrawing=true ] -->
+
+<html>
+<head>
+    <style>
+        .container {
+            position: relative;
+            height: 200px;
+            width: 200px;
+            margin: 10px;
+            padding: 10px;
+            border: 1px solid black;
+            will-change: transform;
+        }
+    </style>
+    <script>
+        var jsTestIsAsync = true;
+
+        if (window.testRunner) {
+            testRunner.dumpAsText();
+            testRunner.waitUntilDone();
+            window.testRunner.overridePreference("WebKitUsesPageCachePreferenceKey", 1);
+        }
+        
+        function doOnFirstLoad()
+        {
+            if (window.internals)
+                document.getElementById('layers-before-navigate').innerText = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_ACCELERATES_DRAWING);
+            
+            setTimeout(function() {
+                window.location.href = '';
+            }, 0);
+        }
+
+        function doAfterBack()
+        {
+            if (window.internals)
+                document.getElementById('layers-after-back').innerText = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_ACCELERATES_DRAWING);
+
+            if (window.testRunner)
+                testRunner.notifyDone();
+        }
+
+        window.addEventListener("pageshow", function(event) {
+            if (event.persisted)
+                setTimeout(doAfterBack, 0);
+        }, false);
+
+        function doTest()
+        {
+            doOnFirstLoad();
+        }
+        
+        window.addEventListener('load', doTest, false);
+    </script>
+</head>
+<body>
+<div class="container">
+    <p>This layer should use 'acceleratesDrawing' after going back to this page.</p>
+</div>
+<h2>Before:</h2>
+<pre id="layers-before-navigate"></pre>
+<h2>After:</h2>
+<pre id="layers-after-back"></pre>
+
+</body>
+</html>

Modified: trunk/LayoutTests/compositing/iframes/page-cache-layer-tree.html (223983 => 223984)


--- trunk/LayoutTests/compositing/iframes/page-cache-layer-tree.html	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/LayoutTests/compositing/iframes/page-cache-layer-tree.html	2017-10-25 21:32:08 UTC (rev 223984)
@@ -73,7 +73,7 @@
     // Force a back navigation back to this page.
     window.addEventListener("load", function(event) {
         setTimeout(function() {
-            window.location.href = ""
+            window.location.href = ""
         }, 0);
     }, false);
     </script>

Deleted: trunk/LayoutTests/compositing/iframes/resources/page-cache-helper.html (223983 => 223984)


--- trunk/LayoutTests/compositing/iframes/resources/page-cache-helper.html	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/LayoutTests/compositing/iframes/resources/page-cache-helper.html	2017-10-25 21:32:08 UTC (rev 223984)
@@ -1,8 +0,0 @@
-This page should go back.
-<script>
-  window.addEventListener("load", function() {
-    setTimeout(function() {
-      history.back();
-    }, 0);
-  }, false);
-</script>

Modified: trunk/LayoutTests/compositing/page-cache-back-crash.html (223983 => 223984)


--- trunk/LayoutTests/compositing/page-cache-back-crash.html	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/LayoutTests/compositing/page-cache-back-crash.html	2017-10-25 21:32:08 UTC (rev 223984)
@@ -19,7 +19,7 @@
 window.addEventListener("load", function() {
     setTimeout(function() {
         // Navigate to a helper page that will immediately navigate back here after loading.
-        window.location.href = ""
+        window.location.href = ""
     }, 0);
 });
 </script>

Copied: trunk/LayoutTests/compositing/resources/go-back.html (from rev 223982, trunk/LayoutTests/compositing/iframes/resources/page-cache-helper.html) (0 => 223984)


--- trunk/LayoutTests/compositing/resources/go-back.html	                        (rev 0)
+++ trunk/LayoutTests/compositing/resources/go-back.html	2017-10-25 21:32:08 UTC (rev 223984)
@@ -0,0 +1,8 @@
+This page should go back.
+<script>
+  window.addEventListener("load", function() {
+    setTimeout(function() {
+      history.back();
+    }, 0);
+  }, false);
+</script>

Added: trunk/LayoutTests/platform/ios/compositing/accelerated-layers-after-back-expected.txt (0 => 223984)


--- trunk/LayoutTests/platform/ios/compositing/accelerated-layers-after-back-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/platform/ios/compositing/accelerated-layers-after-back-expected.txt	2017-10-25 21:32:08 UTC (rev 223984)
@@ -0,0 +1,45 @@
+This layer should use 'acceleratesDrawing' after going back to this page.
+
+Before:
+
+(GraphicsLayer
+  (anchor 0.00 0.00)
+  (bounds 800.00 600.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 600.00)
+      (contentsOpaque 1)
+      (acceleratesDrawing 1)
+      (children 1
+        (GraphicsLayer
+          (position 18.00 10.00)
+          (bounds 222.00 222.00)
+          (drawsContent 1)
+          (acceleratesDrawing 1)
+        )
+      )
+    )
+  )
+)
+After:
+
+(GraphicsLayer
+  (anchor 0.00 0.00)
+  (bounds 800.00 638.00)
+  (children 1
+    (GraphicsLayer
+      (bounds 800.00 638.00)
+      (contentsOpaque 1)
+      (acceleratesDrawing 1)
+      (children 1
+        (GraphicsLayer
+          (position 18.00 10.00)
+          (bounds 222.00 222.00)
+          (drawsContent 1)
+          (acceleratesDrawing 1)
+        )
+      )
+    )
+  )
+)
+

Modified: trunk/Source/WebCore/ChangeLog (223983 => 223984)


--- trunk/Source/WebCore/ChangeLog	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Source/WebCore/ChangeLog	2017-10-25 21:32:08 UTC (rev 223984)
@@ -1,3 +1,35 @@
+2017-10-25  Simon Fraser  <[email protected]>
+
+        When navigating back to a page, compositing layers may not use accelerated drawing
+        https://bugs.webkit.org/show_bug.cgi?id=178749
+        rdar://problem/35158946
+
+        Reviewed by Dean Jackson.
+
+        There were two issues with setting GraphicsLayerCA's "acceleratesDrawing" state which
+        occurred on back navigation, related to the ordering of style recalcs and layout.
+
+        First, at style recalc time, we created a RenderLayerCompositor but hadn't yet called
+        its cacheAcceleratedCompositingFlags(), so any layers created during style update
+        didn't get accelerated drawing. Fix by making cacheAcceleratedCompositingFlags() internal
+        to RenderLayerCompositor and calling it from willRecalcStyle() and updateCompositingLayers().
+
+        Secondly, GraphicsLayerCA::commitLayerChangesBeforeSublayers() needs to updateAcceleratesDrawing()
+        before updating tiles, so that new tiles fetch the right acceleratesDrawing state from
+        the TileController.
+
+        Test: compositing/accelerated-layers-after-back.html
+
+        * page/FrameView.cpp:
+        (WebCore::FrameView::updateCompositingLayersAfterLayout):
+        * platform/graphics/ca/GraphicsLayerCA.cpp:
+        (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::willRecalcStyle):
+        (WebCore::RenderLayerCompositor::didRecalcStyleWithNoPendingLayout):
+        (WebCore::RenderLayerCompositor::updateCompositingLayers):
+        * rendering/RenderLayerCompositor.h:
+
 2017-10-25  Youenn Fablet  <[email protected]>
 
         Enable ServiceWorker to fetch resources

Modified: trunk/Source/WebCore/page/FrameView.cpp (223983 => 223984)


--- trunk/Source/WebCore/page/FrameView.cpp	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Source/WebCore/page/FrameView.cpp	2017-10-25 21:32:08 UTC (rev 223984)
@@ -892,8 +892,6 @@
     if (!renderView)
         return;
 
-    // This call will make sure the cached hasAcceleratedCompositing is updated from the pref
-    renderView->compositor().cacheAcceleratedCompositingFlags();
     renderView->compositor().updateCompositingLayers(CompositingUpdateType::AfterLayout);
 }
 

Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp (223983 => 223984)


--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2017-10-25 21:32:08 UTC (rev 223984)
@@ -1753,6 +1753,9 @@
     if (m_uncommittedChanges & CoverageRectChanged)
         updateCoverage(commitState);
 
+    if (m_uncommittedChanges & AcceleratesDrawingChanged) // Needs to happen before TilingAreaChanged.
+        updateAcceleratesDrawing();
+
     if (m_uncommittedChanges & TilingAreaChanged) // Needs to happen after CoverageRectChanged, ContentsScaleChanged
         updateTiles();
 
@@ -1775,9 +1778,6 @@
     if (m_uncommittedChanges & ContentsNeedsDisplay)
         updateContentsNeedsDisplay();
     
-    if (m_uncommittedChanges & AcceleratesDrawingChanged)
-        updateAcceleratesDrawing();
-
     if (m_uncommittedChanges & SupportsSubpixelAntialiasedTextChanged)
         updateSupportsSubpixelAntialiasedText();
 

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (223983 => 223984)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2017-10-25 21:32:08 UTC (rev 223984)
@@ -362,6 +362,7 @@
 
 void RenderLayerCompositor::willRecalcStyle()
 {
+    cacheAcceleratedCompositingFlags();
     m_layerNeedsCompositingUpdate = false;
 }
 
@@ -370,7 +371,6 @@
     if (!m_layerNeedsCompositingUpdate)
         return false;
     
-    cacheAcceleratedCompositingFlags();
     return updateCompositingLayers(CompositingUpdateType::AfterStyleChange);
 }
 
@@ -634,6 +634,9 @@
 {
     LOG_WITH_STREAM(Compositing, stream << "RenderLayerCompositor " << this << " updateCompositingLayers " << updateType << " root " << updateRoot);
 
+    if (updateType == CompositingUpdateType::AfterLayout)
+        cacheAcceleratedCompositingFlags(); // Some flags (e.g. forceCompositingMode) depend on layout.
+
     m_updateCompositingLayersTimer.stop();
 
     ASSERT(m_renderView.document().pageCacheState() == Document::NotInPageCache);

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.h (223983 => 223984)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.h	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.h	2017-10-25 21:32:08 UTC (rev 223984)
@@ -110,9 +110,6 @@
 
     bool canRender3DTransforms() const;
 
-    // Copy the accelerated compositing related flags from Settings
-    void cacheAcceleratedCompositingFlags();
-
     // Called when the layer hierarchy needs to be updated (compositing layers have been
     // created, destroyed or re-parented).
     void setCompositingLayersNeedRebuild(bool needRebuild = true);
@@ -360,7 +357,9 @@
 
     void clearBackingForLayerIncludingDescendants(RenderLayer&);
 
-    // Repaint this and its child layers.
+    void cacheAcceleratedCompositingFlags();
+
+    // Repaint the given layer and its descendants.
     void recursiveRepaintLayer(RenderLayer&);
 
     void computeExtent(const OverlapMap&, const RenderLayer&, OverlapExtent&) const;

Modified: trunk/Source/WebKit/ChangeLog (223983 => 223984)


--- trunk/Source/WebKit/ChangeLog	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Source/WebKit/ChangeLog	2017-10-25 21:32:08 UTC (rev 223984)
@@ -1,3 +1,17 @@
+2017-10-25  Simon Fraser  <[email protected]>
+
+        When navigating back to a page, compositing layers may not use accelerated drawing
+        https://bugs.webkit.org/show_bug.cgi?id=178749
+        rdar://problem/35158946
+
+        Reviewed by Dean Jackson.
+
+        Avoid assertions when a test enables accelerated drawing (which we can't support
+        in the iOS simulator).
+
+        * Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
+        (WebKit::RemoteLayerBackingStore::ensureBackingStore):
+
 2017-10-25  Youenn Fablet  <[email protected]>
 
         Enable ServiceWorker to fetch resources

Modified: trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm (223983 => 223984)


--- trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm	2017-10-25 21:32:08 UTC (rev 223984)
@@ -72,6 +72,9 @@
 
 void RemoteLayerBackingStore::ensureBackingStore(FloatSize size, float scale, bool acceleratesDrawing, bool deepColor, bool isOpaque)
 {
+#if !USE(IOSURFACE)
+    acceleratesDrawing = false;
+#endif
     if (m_size == size && m_scale == scale && m_deepColor == deepColor && m_acceleratesDrawing == acceleratesDrawing && m_isOpaque == isOpaque)
         return;
 

Modified: trunk/Tools/ChangeLog (223983 => 223984)


--- trunk/Tools/ChangeLog	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Tools/ChangeLog	2017-10-25 21:32:08 UTC (rev 223984)
@@ -1,3 +1,25 @@
+2017-10-25  Simon Fraser  <[email protected]>
+
+        When navigating back to a page, compositing layers may not use accelerated drawing
+        https://bugs.webkit.org/show_bug.cgi?id=178749
+        rdar://problem/35158946
+
+        Reviewed by Dean Jackson.
+
+        Fix WTR and DRT to parse "useAcceleratedDrawing" out of "webkit-test-runner" options
+        and use it to set the state of the web view.
+
+        * DumpRenderTree/TestOptions.h:
+        * DumpRenderTree/TestOptions.mm:
+        (TestOptions::TestOptions):
+        * DumpRenderTree/mac/DumpRenderTree.mm:
+        (setWebPreferencesForTestOptions):
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::resetPreferencesToConsistentValues):
+        (WTR::updateTestOptionsFromTestHeader):
+        * WebKitTestRunner/TestOptions.h:
+        (WTR::TestOptions::hasSameInitializationOptions const):
+
 2017-10-25  Robin Morisset  <[email protected]>
 
         Support the TailBench9000 benchmark in run-jsc-benchmarks

Modified: trunk/Tools/DumpRenderTree/TestOptions.h (223983 => 223984)


--- trunk/Tools/DumpRenderTree/TestOptions.h	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Tools/DumpRenderTree/TestOptions.h	2017-10-25 21:32:08 UTC (rev 223984)
@@ -30,6 +30,7 @@
 
 struct TestOptions {
     bool enableAttachmentElement { false };
+    bool useAcceleratedDrawing { false };
     bool enableIntersectionObserver { false };
     bool enableModernMediaControls { true };
     bool enablePointerLock { false };

Modified: trunk/Tools/DumpRenderTree/TestOptions.mm (223983 => 223984)


--- trunk/Tools/DumpRenderTree/TestOptions.mm	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Tools/DumpRenderTree/TestOptions.mm	2017-10-25 21:32:08 UTC (rev 223984)
@@ -80,6 +80,8 @@
         auto value = pairString.substr(equalsLocation + 1, pairEnd - (equalsLocation + 1));
         if (key == "enableAttachmentElement")
             this->enableAttachmentElement = parseBooleanTestHeaderValue(value);
+        if (key == "useAcceleratedDrawing")
+            this->useAcceleratedDrawing = parseBooleanTestHeaderValue(value);
         else if (key == "enableIntersectionObserver")
             this->enableIntersectionObserver = parseBooleanTestHeaderValue(value);
         else if (key == "enableModernMediaControls")

Modified: trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm (223983 => 223984)


--- trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Tools/DumpRenderTree/mac/DumpRenderTree.mm	2017-10-25 21:32:08 UTC (rev 223984)
@@ -982,6 +982,7 @@
     WebPreferences *preferences = [WebPreferences standardPreferences];
 
     preferences.attachmentElementEnabled = options.enableAttachmentElement;
+    preferences.acceleratedDrawingEnabled = options.useAcceleratedDrawing;
     preferences.intersectionObserverEnabled = options.enableIntersectionObserver;
     preferences.modernMediaControlsEnabled = options.enableModernMediaControls;
     preferences.credentialManagementEnabled = options.enableCredentialManagement;

Modified: trunk/Tools/WebKitTestRunner/TestController.cpp (223983 => 223984)


--- trunk/Tools/WebKitTestRunner/TestController.cpp	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Tools/WebKitTestRunner/TestController.cpp	2017-10-25 21:32:08 UTC (rev 223984)
@@ -719,7 +719,7 @@
     WKPreferencesSetHiddenPageDOMTimerThrottlingEnabled(preferences, false);
     WKPreferencesSetHiddenPageCSSAnimationSuspensionEnabled(preferences, false);
 
-    WKPreferencesSetAcceleratedDrawingEnabled(preferences, m_shouldUseAcceleratedDrawing);
+    WKPreferencesSetAcceleratedDrawingEnabled(preferences, m_shouldUseAcceleratedDrawing || options.useAcceleratedDrawing);
     // FIXME: We should be testing the default.
     WKPreferencesSetStorageBlockingPolicy(preferences, kWKAllowAllStorage);
 
@@ -1025,6 +1025,8 @@
             String(value.c_str()).split(",", false, testOptions.overrideLanguages);
         if (key == "useThreadedScrolling")
             testOptions.useThreadedScrolling = parseBooleanTestHeaderValue(value);
+        if (key == "useAcceleratedDrawing")
+            testOptions.useAcceleratedDrawing = parseBooleanTestHeaderValue(value);
         if (key == "useFlexibleViewport")
             testOptions.useFlexibleViewport = parseBooleanTestHeaderValue(value);
         if (key == "useDataDetection")

Modified: trunk/Tools/WebKitTestRunner/TestOptions.h (223983 => 223984)


--- trunk/Tools/WebKitTestRunner/TestOptions.h	2017-10-25 21:30:16 UTC (rev 223983)
+++ trunk/Tools/WebKitTestRunner/TestOptions.h	2017-10-25 21:32:08 UTC (rev 223984)
@@ -33,6 +33,7 @@
 
 struct TestOptions {
     bool useThreadedScrolling { false };
+    bool useAcceleratedDrawing { false };
     bool useRemoteLayerTree { false };
     bool shouldShowWebView { false };
     bool useFlexibleViewport { false };
@@ -65,6 +66,7 @@
     bool hasSameInitializationOptions(const TestOptions& options) const
     {
         if (useThreadedScrolling != options.useThreadedScrolling
+            || useAcceleratedDrawing != options.useAcceleratedDrawing
             || overrideLanguages != options.overrideLanguages
             || useMockScrollbars != options.useMockScrollbars
             || needsSiteSpecificQuirks != options.needsSiteSpecificQuirks
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to