Title: [219620] trunk
Revision
219620
Author
[email protected]
Date
2017-07-18 12:31:28 -0700 (Tue, 18 Jul 2017)

Log Message

Unreviewed, rolling out r219610.

This caused an api failure on all platforms for the test
SnapshotImageLargeAsyncDecoding

Reverted changeset:

"Async image decoding for large images should be disabled
after the first time a tile is painted"
https://bugs.webkit.org/show_bug.cgi?id=174451
http://trac.webkit.org/changeset/219610

Modified Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (219619 => 219620)


--- trunk/LayoutTests/ChangeLog	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/LayoutTests/ChangeLog	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1,3 +1,17 @@
+2017-07-18  Matt Lewis  <[email protected]>
+
+        Unreviewed, rolling out r219610.
+
+        This caused an api failure on all platforms for the test
+        SnapshotImageLargeAsyncDecoding
+
+        Reverted changeset:
+
+        "Async image decoding for large images should be disabled
+        after the first time a tile is painted"
+        https://bugs.webkit.org/show_bug.cgi?id=174451
+        http://trac.webkit.org/changeset/219610
+
 2017-07-18  Devin Rousso  <[email protected]>
 
         Add CanvasRenderingContext2D::getTransform

Deleted: trunk/LayoutTests/fast/images/async-image-background-change-expected.html (219619 => 219620)


--- trunk/LayoutTests/fast/images/async-image-background-change-expected.html	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/LayoutTests/fast/images/async-image-background-change-expected.html	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1,10 +0,0 @@
-<style>
-    div {
-        width: 400px;
-        height: 400px;
-        background-color: green;
-    }
-</style>
-<body>
-    <div></div>
-</body>

Deleted: trunk/LayoutTests/fast/images/async-image-background-change.html (219619 => 219620)


--- trunk/LayoutTests/fast/images/async-image-background-change.html	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/LayoutTests/fast/images/async-image-background-change.html	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1,71 +0,0 @@
-<!DOCTYPE html>
-<html>
-<style>
-    div {
-        width: 400px;
-        height: 400px;
-    }
- </style>
- <body>
-    <div></div>
-    <script>
-        function loadImageAndSetBackground(element, image, src, forceAsyncImageDrawing) {
-            return new Promise((resolve) => {
-                image._onload_ = (() => {
-                    if (window.internals && window.testRunner && forceAsyncImageDrawing) {
-                        // Force async image decoding for this image.
-                        internals.setLargeImageAsyncDecodingEnabledForTesting(image, true);
-
-                        // Change the background of the element.
-                        element.style.backgroundImage = 'url(' + image.src + ')';
-
-                        // Force layout and display so the image gets drawn.
-                        document.body.offsetHeight;
-                        if (window.testRunner)
-                            testRunner.display();
-
-                        image.addEventListener("webkitImageFrameReady", function() {
-                            internals.setLargeImageAsyncDecodingEnabledForTesting(image, false);
-                            setTimeout(function() {
-                                // Force redraw to get the red image drawn.
-                                testRunner.display();
-                                resolve();
-                            }, 0);
-                        }, false);
-                    } else {
-                        // Change the background of the element.
-                        element.style.backgroundImage = 'url(' + image.src + ')';
-                        resolve();
-                    }
-                });
-                image.src = ""
-            });
-        }
- 
-        (function() {
-            if (window.internals && window.testRunner) {
-                internals.clearMemoryCache();
-                internals.settings.setWebkitImageReadyEventEnabled(true);
-                internals.settings.setLargeImageAsyncDecodingEnabled(true);
-                testRunner.waitUntilDone();
-            }
- 
-            var image = new Image;
-            document.body.appendChild(image);
-            var element = document.querySelector("div");
-
-            // Load a large (400x400) red image to force sync image decoding and drawing.
-            loadImageAndSetBackground(element, image, "resources/red-400x400.png", true).then(() => {
-                // Replace the large red image with a large (400x400) green image.
-                // Sync image decoding and drawing have to be forced in this case.
-                return loadImageAndSetBackground(element, image, "resources/green-400x400.png", false);
-            }).then(() => {
-                image.remove();
-                // A single paint is needed to draw the large (400x400) green image.
-                if (window.testRunner)
-                    testRunner.notifyDone();
-            });
-        })();
-    </script>
- </body>
- </html>
\ No newline at end of file

Modified: trunk/LayoutTests/fast/images/async-image-background-image-repeated.html (219619 => 219620)


--- trunk/LayoutTests/fast/images/async-image-background-image-repeated.html	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/LayoutTests/fast/images/async-image-background-image-repeated.html	2017-07-18 19:31:28 UTC (rev 219620)
@@ -50,10 +50,6 @@
             image._onload_ = function() {
                 var elements = document.getElementsByClassName("image-background");
  
-                 // Force async image decoding for this image.
-                if (window.internals)
-                    internals.setLargeImageAsyncDecodingEnabledForTesting(image, true);
-
                 // Change the background of the elements.
                 if (window.internals && window.testRunner) {
                     var promises = [];

Modified: trunk/LayoutTests/fast/images/async-image-background-image.html (219619 => 219620)


--- trunk/LayoutTests/fast/images/async-image-background-image.html	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/LayoutTests/fast/images/async-image-background-image.html	2017-07-18 19:31:28 UTC (rev 219620)
@@ -33,10 +33,6 @@
             var image = new Image();
             image._onload_ = function() {
                 var element = document.getElementsByClassName("image-background")[0];
-
-                // Force async image decoding for this image.
-                if (window.internals)
-                    internals.setLargeImageAsyncDecodingEnabledForTesting(image, true);
  
                 // Change the background of the element.
                 element.style.backgroundImage = 'url(' + image.src + ')';

Modified: trunk/LayoutTests/fast/images/async-image-multiple-clients-repaint.html (219619 => 219620)


--- trunk/LayoutTests/fast/images/async-image-multiple-clients-repaint.html	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/LayoutTests/fast/images/async-image-multiple-clients-repaint.html	2017-07-18 19:31:28 UTC (rev 219620)
@@ -65,10 +65,6 @@
 
             var image = new Image();
             image._onload_ = function() {
-                // Force async image decoding for this image.
-                if (window.internals)
-                    internals.setLargeImageAsyncDecodingEnabledForTesting(image, true);
-
                 if (window.internals && window.testRunner) {
                     setElementImageBackground(document.querySelector(".small-box"), image).then(() => {
                         // Call the next setElementImageBackground() asynchronously, using setTimeout(, 0),

Deleted: trunk/LayoutTests/fast/images/async-image-src-change-expected.html (219619 => 219620)


--- trunk/LayoutTests/fast/images/async-image-src-change-expected.html	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/LayoutTests/fast/images/async-image-src-change-expected.html	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1,10 +0,0 @@
-<style>
-    div {
-        width: 400px;
-        height: 400px;
-        background-color: green;
-    }
-</style>
-<body>
-    <div></div>
-</body>

Deleted: trunk/LayoutTests/fast/images/async-image-src-change.html (219619 => 219620)


--- trunk/LayoutTests/fast/images/async-image-src-change.html	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/LayoutTests/fast/images/async-image-src-change.html	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1,57 +0,0 @@
-<!DOCTYPE html>
-<html>
-<body>
-    <script>
-        function loadImageAndDraw(image, src, forceAsyncImageDrawing) {
-            return new Promise((resolve) => {
-                image._onload_ = (() => {
-                    if (window.internals && window.testRunner && forceAsyncImageDrawing) {
-                        // Force async image decoding for this image.
-                        internals.setLargeImageAsyncDecodingEnabledForTesting(image, true);
-
-                        // Force layout and display so the image gets drawn.
-                        document.body.offsetHeight;
-                        if (window.testRunner)
-                            testRunner.display();
-
-                        image.addEventListener("webkitImageFrameReady", function() {
-                            internals.setLargeImageAsyncDecodingEnabledForTesting(image, false);
-                            setTimeout(function() {
-                                // Force redraw to get the red image drawn.
-                                testRunner.display();
-                                resolve();
-                            }, 0);
-                        }, false);
-                    } else {
-                        resolve();                        
-                    }
-                });
-                image.src = ""
-            });
-        }
- 
-        (function() {
-            if (window.internals && window.testRunner) {
-                internals.clearMemoryCache();
-                internals.settings.setWebkitImageReadyEventEnabled(true);
-                internals.settings.setLargeImageAsyncDecodingEnabled(true);
-                testRunner.waitUntilDone();
-            }
- 
-            var image = new Image;
-            document.body.appendChild(image);
- 
-            // Load a large (400x400) red image to force sync image decoding and drawing.
-            loadImageAndDraw(image, "resources/red-400x400.png", true).then(() => {
-                // Replace the large red image with a large (400x400) green image.
-                // Sync image decoding and drawing have to be forced in this case.
-                return loadImageAndDraw(image, "resources/green-400x400.png", false);
-            }).then(() => {
-                // A single paint is needed to draw the large (400x400) green image.
-                if (window.testRunner)
-                    testRunner.notifyDone();
-            });
-        })();
-    </script>
- </body>
- </html>

Deleted: trunk/LayoutTests/fast/images/resources/green-400x400.png


(Binary files differ)

Deleted: trunk/LayoutTests/fast/images/resources/red-100x100.png


(Binary files differ)

Deleted: trunk/LayoutTests/fast/images/resources/red-400x400.png


(Binary files differ)

Deleted: trunk/LayoutTests/http/tests/multipart/multipart-async-image-expected.txt (219619 => 219620)


--- trunk/LayoutTests/http/tests/multipart/multipart-async-image-expected.txt	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/LayoutTests/http/tests/multipart/multipart-async-image-expected.txt	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1,10 +0,0 @@
-Make sure no async decoding is done for multipart images
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS The second frame of the multipart image was drawn without async image decoding.
-PASS successfullyParsed is true
-
-TEST COMPLETE
-

Deleted: trunk/LayoutTests/http/tests/multipart/multipart-async-image.html (219619 => 219620)


--- trunk/LayoutTests/http/tests/multipart/multipart-async-image.html	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/LayoutTests/http/tests/multipart/multipart-async-image.html	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1,70 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-    <script src=""
-</head>
-<body>
-    <script>
-        function multipartUrl() {
-            var relativePath = "../../../../fast/images/resources/";
- 
-            return "resources/multipart.php"
-                    + "?interval=0.1"
-                    + "&img1=" + relativePath + "red-100x100.png"
-                    + "&img2=" + relativePath + "green-400x400.png"
-                    + "&img3=" + relativePath + "green-400x400.png";
-        }
-
-        var intervalID = null;
-        function finishTest() {
-            if (intervalID !== null)
-                clearInterval(intervalID);
-            finishJSTest();
-        }
-
-        (function() {
-            description("Make sure no async decoding is done for multipart images");
-            jsTestIsAsync = true;
- 
-            if (window.internals && window.testRunner) {
-                internals.clearMemoryCache();
-                internals.settings.setWebkitImageReadyEventEnabled(true);
-                internals.settings.setLargeImageAsyncDecodingEnabled(true);
-            }
- 
-            var image = new Image;
-            document.body.appendChild(image);
- 
-            image.addEventListener("webkitImageFrameReady", function() {
-                // The first image is small (100x100) red image which does not
-                // require async image decoding. But drawing it should prevent
-                // any subsequent async image decoding for large images.
-                testFailed("Async image decoding was mistakenly requested.");
-                finishTest();
-            }, false);
- 
-            image._onload_ = function() {
-                var count = 0;
-                intervalID = setInterval(function() {
-                    // Force layout and display.
-                    document.body.offsetHeight;
-                    testRunner.display();
-                    ++count;
-
-                    if (image.offsetWidth == 400 && count == 100) {
-                        testPassed("The second frame of the multipart image was drawn without async image decoding.");
-                        finishTest();
-                    }
-
-                    if (count > 200) {
-                        testFailed("Timeout: the second frame of the multipart image was not loaded.");
-                        finishTest();
-                    }
-                }, 10);
-            }
-            image.src = "" 
-        })();
-    </script>
-    <script src=""
-</body>
-</html>

Modified: trunk/LayoutTests/platform/ios-wk1/TestExpectations (219619 => 219620)


--- trunk/LayoutTests/platform/ios-wk1/TestExpectations	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/LayoutTests/platform/ios-wk1/TestExpectations	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1107,11 +1107,6 @@
 # Disk cache is WK2 only
 http/tests/cache/disk-cache
 
-# Async image decoding is WK2 only
-fast/images/async-image-background-change.html
-fast/images/async-image-src-change.html
-http/tests/multipart/multipart-async-image.html
-
 # Flaky as of 06/08/2015
 animations/animation-direction-reverse-hardware-opacity.html [ Failure Pass ]
 animations/animation-direction-reverse-hardware.html [ Failure Pass ]

Modified: trunk/LayoutTests/platform/mac-wk1/TestExpectations (219619 => 219620)


--- trunk/LayoutTests/platform/mac-wk1/TestExpectations	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/LayoutTests/platform/mac-wk1/TestExpectations	2017-07-18 19:31:28 UTC (rev 219620)
@@ -156,11 +156,6 @@
 http/tests/inspector/network/resource-response-source-disk-cache.html
 http/tests/inspector/network/resource-sizes-disk-cache.html
 
-# Async image decoding is WK2 only
-fast/images/async-image-background-change.html
-fast/images/async-image-src-change.html
-http/tests/multipart/multipart-async-image.html
-
 [ Yosemite+ ] fast/ruby/ruby-expansion-cjk-2.html [ ImageOnlyFailure ]
 
 # ShouldOpenExternalURLs not yet supported in WK1

Modified: trunk/Source/WebCore/ChangeLog (219619 => 219620)


--- trunk/Source/WebCore/ChangeLog	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/ChangeLog	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1,3 +1,17 @@
+2017-07-18  Matt Lewis  <[email protected]>
+
+        Unreviewed, rolling out r219610.
+
+        This caused an api failure on all platforms for the test
+        SnapshotImageLargeAsyncDecoding
+
+        Reverted changeset:
+
+        "Async image decoding for large images should be disabled
+        after the first time a tile is painted"
+        https://bugs.webkit.org/show_bug.cgi?id=174451
+        http://trac.webkit.org/changeset/219610
+
 2017-07-18  Devin Rousso  <[email protected]>
 
         Add CanvasRenderingContext2D::getTransform

Modified: trunk/Source/WebCore/page/PageOverlayController.cpp (219619 => 219620)


--- trunk/Source/WebCore/page/PageOverlayController.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/page/PageOverlayController.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -360,7 +360,7 @@
     return { };
 }
 
-void PageOverlayController::paintContents(const WebCore::GraphicsLayer* graphicsLayer, WebCore::GraphicsContext& graphicsContext, WebCore::GraphicsLayerPaintingPhase, const WebCore::FloatRect& clipRect, GraphicsLayerPaintBehavior)
+void PageOverlayController::paintContents(const WebCore::GraphicsLayer* graphicsLayer, WebCore::GraphicsContext& graphicsContext, WebCore::GraphicsLayerPaintingPhase, const WebCore::FloatRect& clipRect, GraphicsLayerPaintFlags)
 {
     for (auto& overlayAndGraphicsLayer : m_overlayGraphicsLayers) {
         if (overlayAndGraphicsLayer.value.get() != graphicsLayer)

Modified: trunk/Source/WebCore/page/PageOverlayController.h (219619 => 219620)


--- trunk/Source/WebCore/page/PageOverlayController.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/page/PageOverlayController.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -88,7 +88,7 @@
 
     // GraphicsLayerClient
     void notifyFlushRequired(const GraphicsLayer*) override;
-    void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const FloatRect& clipRect, GraphicsLayerPaintBehavior) override;
+    void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const FloatRect& clipRect, GraphicsLayerPaintFlags) override;
     float deviceScaleFactor() const override;
     bool shouldSkipLayerInDump(const GraphicsLayer*, LayerTreeAsTextBehavior) const override;
     void tiledBackingUsageChanged(const GraphicsLayer*, bool) override;

Modified: trunk/Source/WebCore/page/linux/ResourceUsageOverlayLinux.cpp (219619 => 219620)


--- trunk/Source/WebCore/page/linux/ResourceUsageOverlayLinux.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/page/linux/ResourceUsageOverlayLinux.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -85,7 +85,7 @@
     }
 
 private:
-    void paintContents(const GraphicsLayer*, GraphicsContext& context, GraphicsLayerPaintingPhase, const FloatRect& clip, GraphicsLayerPaintBehavior) override
+    void paintContents(const GraphicsLayer*, GraphicsContext& context, GraphicsLayerPaintingPhase, const FloatRect& clip, GraphicsLayerPaintFlags) override
     {
         GraphicsContextStateSaver stateSaver(context);
         context.fillRect(clip, Color(0.0f, 0.0f, 0.0f, 0.8f));

Modified: trunk/Source/WebCore/page/mac/ServicesOverlayController.h (219619 => 219620)


--- trunk/Source/WebCore/page/mac/ServicesOverlayController.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/page/mac/ServicesOverlayController.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -82,7 +82,7 @@
 
         // GraphicsLayerClient
         void notifyFlushRequired(const GraphicsLayer*) override;
-        void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const FloatRect& inClip, GraphicsLayerPaintBehavior) override;
+        void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const FloatRect& inClip, GraphicsLayerPaintFlags) override;
         float deviceScaleFactor() const override;
 
         void didFinishFadeOutAnimation();

Modified: trunk/Source/WebCore/page/mac/ServicesOverlayController.mm (219619 => 219620)


--- trunk/Source/WebCore/page/mac/ServicesOverlayController.mm	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/page/mac/ServicesOverlayController.mm	2017-07-18 19:31:28 UTC (rev 219620)
@@ -129,7 +129,7 @@
     page->chrome().client().scheduleCompositingLayerFlush();
 }
 
-void ServicesOverlayController::Highlight::paintContents(const GraphicsLayer*, GraphicsContext& graphicsContext, GraphicsLayerPaintingPhase, const FloatRect&, GraphicsLayerPaintBehavior)
+void ServicesOverlayController::Highlight::paintContents(const GraphicsLayer*, GraphicsContext& graphicsContext, GraphicsLayerPaintingPhase, const FloatRect&, GraphicsLayerPaintFlags)
 {
     if (!DataDetectorsLibrary())
         return;

Modified: trunk/Source/WebCore/platform/graphics/BitmapImage.h (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/BitmapImage.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/BitmapImage.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -107,8 +107,6 @@
     bool canUseAsyncDecodingForLargeImages() const;
     bool shouldUseAsyncDecodingForAnimatedImages() const;
     void setClearDecoderAfterAsyncFrameRequestForTesting(bool value) { m_clearDecoderAfterAsyncFrameRequestForTesting = value; }
-    void setLargeImageAsyncDecodingEnabledForTesting(bool enabled) { m_largeImageAsyncDecodingEnabledForTesting = enabled; }
-    bool isLargeImageAsyncDecodingEnabledForTesting() const { return m_largeImageAsyncDecodingEnabledForTesting; }
 
     WEBCORE_EXPORT unsigned decodeCountForTesting() const;
 
@@ -225,7 +223,6 @@
     bool m_showDebugBackground { false };
 
     bool m_clearDecoderAfterAsyncFrameRequestForTesting { false };
-    bool m_largeImageAsyncDecodingEnabledForTesting { false };
 
 #if !LOG_DISABLED
     size_t m_lateFrameCount { 0 };

Modified: trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -418,7 +418,7 @@
     m_backgroundColor = color;
 }
 
-void GraphicsLayer::paintGraphicsLayerContents(GraphicsContext& context, const FloatRect& clip, GraphicsLayerPaintBehavior layerPaintBehavior)
+void GraphicsLayer::paintGraphicsLayerContents(GraphicsContext& context, const FloatRect& clip, GraphicsLayerPaintFlags flags)
 {
     FloatSize offset = offsetFromRenderer();
     context.translate(-offset);
@@ -426,7 +426,7 @@
     FloatRect clipRect(clip);
     clipRect.move(offset);
 
-    m_client.paintContents(this, context, m_paintingPhase, clipRect, layerPaintBehavior);
+    m_client.paintContents(this, context, m_paintingPhase, clipRect, flags);
 }
 
 String GraphicsLayer::animationNameForTransition(AnimatedPropertyID property)

Modified: trunk/Source/WebCore/platform/graphics/GraphicsLayer.h (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/GraphicsLayer.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/GraphicsLayer.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -466,7 +466,7 @@
     virtual bool usesContentsLayer() const { return false; }
 
     // Callback from the underlying graphics system to draw layer contents.
-    void paintGraphicsLayerContents(GraphicsContext&, const FloatRect& clip, GraphicsLayerPaintBehavior = GraphicsLayerPaintAllowAsyncImageDecoding);
+    void paintGraphicsLayerContents(GraphicsContext&, const FloatRect& clip, GraphicsLayerPaintFlags = GraphicsLayerPaintFlags::AllowAsyncImageDecoding);
 
     // For hosting this GraphicsLayer in a native layer hierarchy.
     virtual PlatformLayer* platformLayer() const { return 0; }

Modified: trunk/Source/WebCore/platform/graphics/GraphicsLayerClient.h (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/GraphicsLayerClient.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/GraphicsLayerClient.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -75,11 +75,7 @@
 };
 typedef unsigned LayerTreeAsTextBehavior;
 
-enum GraphicsLayerPaintFlags {
-    GraphicsLayerPaintNormal                    = 0,
-    GraphicsLayerPaintAllowAsyncImageDecoding   = 1 << 0,
-};
-typedef unsigned GraphicsLayerPaintBehavior;
+enum class GraphicsLayerPaintFlags { None, AllowAsyncImageDecoding };
     
 class GraphicsLayerClient {
 public:
@@ -98,7 +94,7 @@
     // Notification that this layer requires a flush before the next display refresh.
     virtual void notifyFlushBeforeDisplayRefresh(const GraphicsLayer*) { }
 
-    virtual void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const FloatRect& /* inClip */, GraphicsLayerPaintBehavior) { }
+    virtual void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const FloatRect& /* inClip */, GraphicsLayerPaintFlags) { }
     virtual void didCommitChangesForLayer(const GraphicsLayer*) const { }
 
     // Provides current transform (taking transform-origin and animations into account). Input matrix has been

Modified: trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -220,7 +220,7 @@
 
     virtual void platformCALayerAnimationStarted(CFTimeInterval beginTime) { }
     virtual GraphicsLayer::CompositingCoordinatesOrientation platformCALayerContentsOrientation() const { return GraphicsLayer::CompositingCoordinatesBottomUp; }
-    virtual void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&, const FloatRect&, GraphicsLayerPaintBehavior) { }
+    virtual void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&, const FloatRect&, GraphicsLayerPaintFlags) { }
     virtual bool platformCALayerShowDebugBorders() const { return false; }
     virtual bool platformCALayerShowRepaintCounter(PlatformCALayer*) const { return false; }
     virtual int platformCALayerIncrementRepaintCount(PlatformCALayer*) { return 0; }

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


--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1579,7 +1579,7 @@
     return isShowingRepaintCounter();
 }
 
-void GraphicsLayerCA::platformCALayerPaintContents(PlatformCALayer*, GraphicsContext& context, const FloatRect& clip, GraphicsLayerPaintBehavior layerPaintBehavior)
+void GraphicsLayerCA::platformCALayerPaintContents(PlatformCALayer*, GraphicsContext& context, const FloatRect& clip, GraphicsLayerPaintFlags flags)
 {
     m_hasEverPainted = true;
     if (m_displayList) {
@@ -1595,7 +1595,7 @@
     }
 
     TraceScope tracingScope(PaintLayerStart, PaintLayerEnd);
-    paintGraphicsLayerContents(context, clip, layerPaintBehavior);
+    paintGraphicsLayerContents(context, clip, flags);
 }
 
 void GraphicsLayerCA::platformCALayerSetNeedsToRevalidateTiles()

Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -188,10 +188,9 @@
     WEBCORE_EXPORT void platformCALayerAnimationStarted(const String& animationKey, CFTimeInterval beginTime) override;
     WEBCORE_EXPORT void platformCALayerAnimationEnded(const String& animationKey) override;
     CompositingCoordinatesOrientation platformCALayerContentsOrientation() const override { return contentsOrientation(); }
-    WEBCORE_EXPORT void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&, const FloatRect& clip, GraphicsLayerPaintBehavior) override;
+    WEBCORE_EXPORT void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&, const FloatRect& clip, GraphicsLayerPaintFlags) override;
     bool platformCALayerShowDebugBorders() const override { return isShowingDebugBorder(); }
     WEBCORE_EXPORT bool platformCALayerShowRepaintCounter(PlatformCALayer*) const override;
-    int platformCALayerRepaintCount(PlatformCALayer*) const override { return repaintCount(); }
     int platformCALayerIncrementRepaintCount(PlatformCALayer*) override { return incrementRepaintCount(); }
 
     bool platformCALayerContentsOpaque() const override { return contentsOpaque(); }

Modified: trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.h (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -276,7 +276,7 @@
         
     // Functions allows us to share implementation across WebTiledLayer and WebLayer
     static RepaintRectList collectRectsToPaint(CGContextRef, PlatformCALayer*);
-    static void drawLayerContents(CGContextRef, PlatformCALayer*, RepaintRectList& dirtyRects, GraphicsLayerPaintBehavior);
+    static void drawLayerContents(CGContextRef, PlatformCALayer*, RepaintRectList& dirtyRects, GraphicsLayerPaintFlags);
     static void drawRepaintIndicator(CGContextRef, PlatformCALayer*, int repaintCount, CGColorRef customBackgroundColor);
     static CGRect frameForLayer(const PlatformLayer*);
 

Modified: trunk/Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -43,10 +43,9 @@
     virtual void platformCALayerAnimationStarted(const String& /*animationKey*/, CFTimeInterval) { }
     virtual void platformCALayerAnimationEnded(const String& /*animationKey*/) { }
     virtual GraphicsLayer::CompositingCoordinatesOrientation platformCALayerContentsOrientation() const { return GraphicsLayer::CompositingCoordinatesTopDown; }
-    virtual void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&, const FloatRect& inClip, GraphicsLayerPaintBehavior) = 0;
+    virtual void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&, const FloatRect& inClip, GraphicsLayerPaintFlags) = 0;
     virtual bool platformCALayerShowDebugBorders() const { return false; }
     virtual bool platformCALayerShowRepaintCounter(PlatformCALayer*) const { return false; }
-    virtual int platformCALayerRepaintCount(PlatformCALayer*) const { return 0; }
     virtual int platformCALayerIncrementRepaintCount(PlatformCALayer*) { return 0; }
     
     virtual bool platformCALayerContentsOpaque() const = 0;

Modified: trunk/Source/WebCore/platform/graphics/ca/TileCoverageMap.cpp (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/ca/TileCoverageMap.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/ca/TileCoverageMap.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -152,7 +152,7 @@
     m_visibleViewportIndicatorLayer.get().setBorderColor(visibleRectIndicatorColor);
 }
 
-void TileCoverageMap::platformCALayerPaintContents(PlatformCALayer* platformCALayer, GraphicsContext& context, const FloatRect&, GraphicsLayerPaintBehavior)
+void TileCoverageMap::platformCALayerPaintContents(PlatformCALayer* platformCALayer, GraphicsContext& context, const FloatRect&, GraphicsLayerPaintFlags)
 {
     ASSERT_UNUSED(platformCALayer, platformCALayer == m_layer.ptr());
     m_controller.tileGrid().drawTileMapContents(context.platformContext(), m_layer.get().bounds());

Modified: trunk/Source/WebCore/platform/graphics/ca/TileCoverageMap.h (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/ca/TileCoverageMap.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/ca/TileCoverageMap.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -61,7 +61,7 @@
     GraphicsLayer::CompositingCoordinatesOrientation platformCALayerContentsOrientation() const override { return GraphicsLayer::CompositingCoordinatesTopDown; }
     bool platformCALayerContentsOpaque() const override { return true; }
     bool platformCALayerDrawsContent() const override { return true; }
-    void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&, const FloatRect&, GraphicsLayerPaintBehavior) override;
+    void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&, const FloatRect&, GraphicsLayerPaintFlags) override;
     float platformCALayerDeviceScaleFactor() const override;
 
     void updateTimerFired();

Modified: trunk/Source/WebCore/platform/graphics/ca/TileGrid.cpp (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/ca/TileGrid.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/ca/TileGrid.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -712,7 +712,7 @@
     }
 }
 
-void TileGrid::platformCALayerPaintContents(PlatformCALayer* platformCALayer, GraphicsContext& context, const FloatRect&, GraphicsLayerPaintBehavior layerPaintBehavior)
+void TileGrid::platformCALayerPaintContents(PlatformCALayer* platformCALayer, GraphicsContext& context, const FloatRect&, GraphicsLayerPaintFlags flags)
 {
 #if PLATFORM(IOS)
     if (pthread_main_np())
@@ -719,9 +719,6 @@
         WebThreadLock();
 #endif
 
-    if (platformCALayerRepaintCount(platformCALayer))
-        layerPaintBehavior &= ~GraphicsLayerPaintAllowAsyncImageDecoding;
-
     {
         GraphicsContextStateSaver stateSaver(context);
 
@@ -730,7 +727,7 @@
         context.scale(m_scale);
 
         PlatformCALayer::RepaintRectList dirtyRects = PlatformCALayer::collectRectsToPaint(context.platformContext(), platformCALayer);
-        PlatformCALayer::drawLayerContents(context.platformContext(), &m_controller.rootLayer(), dirtyRects, layerPaintBehavior);
+        PlatformCALayer::drawLayerContents(context.platformContext(), &m_controller.rootLayer(), dirtyRects, flags);
     }
 
     int repaintCount = platformCALayerIncrementRepaintCount(platformCALayer);
@@ -771,12 +768,6 @@
     return m_controller.tilesAreOpaque();
 }
 
-int TileGrid::platformCALayerRepaintCount(PlatformCALayer* platformCALayer) const
-{
-    const auto it = m_tileRepaintCounts.find(platformCALayer);
-    return it != m_tileRepaintCounts.end() ? it->value : 0;
-}
-
 int TileGrid::platformCALayerIncrementRepaintCount(PlatformCALayer* platformCALayer)
 {
     int repaintCount = 0;

Modified: trunk/Source/WebCore/platform/graphics/ca/TileGrid.h (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/ca/TileGrid.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/ca/TileGrid.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -143,10 +143,9 @@
     void removeTiles(Vector<TileGrid::TileIndex>& toRemove);
 
     // PlatformCALayerClient
-    void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&, const FloatRect&, GraphicsLayerPaintBehavior) override;
+    void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&, const FloatRect&, GraphicsLayerPaintFlags) override;
     bool platformCALayerShowDebugBorders() const override;
     bool platformCALayerShowRepaintCounter(PlatformCALayer*) const override;
-    int platformCALayerRepaintCount(PlatformCALayer*) const override;
     int platformCALayerIncrementRepaintCount(PlatformCALayer*) override;
     bool platformCALayerContentsOpaque() const override;
     bool platformCALayerDrawsContent() const override { return true; }

Modified: trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1119,15 +1119,12 @@
     return dirtyRects;
 }
 
-void PlatformCALayer::drawLayerContents(CGContextRef context, WebCore::PlatformCALayer* platformCALayer, RepaintRectList& dirtyRects, GraphicsLayerPaintBehavior layerPaintBehavior)
+void PlatformCALayer::drawLayerContents(CGContextRef context, WebCore::PlatformCALayer* platformCALayer, RepaintRectList& dirtyRects, GraphicsLayerPaintFlags flags)
 {
     WebCore::PlatformCALayerClient* layerContents = platformCALayer->owner();
     if (!layerContents)
         return;
-
-    if (layerContents->platformCALayerRepaintCount(platformCALayer))
-        layerPaintBehavior &= ~GraphicsLayerPaintAllowAsyncImageDecoding;
-
+    
 #if PLATFORM(IOS)
     WKSetCurrentGraphicsContext(context);
 #endif
@@ -1169,7 +1166,7 @@
             GraphicsContextStateSaver stateSaver(graphicsContext);
             graphicsContext.clip(rect);
             
-            layerContents->platformCALayerPaintContents(platformCALayer, graphicsContext, rect, layerPaintBehavior);
+            layerContents->platformCALayerPaintContents(platformCALayer, graphicsContext, rect, flags);
         }
         
 #if PLATFORM(IOS)

Modified: trunk/Source/WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/ca/win/PlatformCALayerWin.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -109,7 +109,7 @@
     return dirtyRects;
 }
 
-void PlatformCALayer::drawLayerContents(CGContextRef context, WebCore::PlatformCALayer* platformCALayer, RepaintRectList&, GraphicsLayerPaintBehavior)
+void PlatformCALayer::drawLayerContents(CGContextRef context, WebCore::PlatformCALayer* platformCALayer, RepaintRectList&, GraphicsLayerPaintFlags)
 {
     intern(platformCALayer)->displayCallback(platformCALayer->platformLayer(), context);
 }

Modified: trunk/Source/WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.cpp (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/ca/win/PlatformCALayerWinInternal.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -104,7 +104,7 @@
     // smaller than the layer bounds (e.g. tiled layers)
     CGRect clipBounds = CGContextGetClipBoundingBox(context);
     IntRect clip(enclosingIntRect(clipBounds));
-    client->platformCALayerPaintContents(owner(), graphicsContext, clip, GraphicsLayerPaintNormal);
+    client->platformCALayerPaintContents(owner(), graphicsContext, clip, GraphicsLayerPaintFlags::None);
 
     if (client->platformCALayerShowRepaintCounter(owner())
         && !repaintCountersAreDrawnByGridController(layerType)) {

Modified: trunk/Source/WebCore/platform/graphics/ca/win/WebTiledBackingLayerWin.cpp (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/ca/win/WebTiledBackingLayerWin.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/ca/win/WebTiledBackingLayerWin.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -95,7 +95,7 @@
     // smaller than the layer bounds (e.g. tiled layers)
     CGRect clipBounds = CGContextGetClipBoundingBox(context);
     IntRect clip(enclosingIntRect(clipBounds));
-    client->platformCALayerPaintContents(owner(), graphicsContext, clip, GraphicsLayerPaintNormal);
+    client->platformCALayerPaintContents(owner(), graphicsContext, clip, GraphicsLayerPaintFlags::None);
 
     if (client->platformCALayerShowRepaintCounter(owner())) {
         int drawCount = client->platformCALayerIncrementRepaintCount(owner());

Modified: trunk/Source/WebCore/platform/graphics/mac/WebLayer.mm (219619 => 219620)


--- trunk/Source/WebCore/platform/graphics/mac/WebLayer.mm	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/platform/graphics/mac/WebLayer.mm	2017-07-18 19:31:28 UTC (rev 219620)
@@ -57,7 +57,7 @@
     PlatformCALayer* layer = PlatformCALayer::platformCALayer(self);
     if (layer) {
         PlatformCALayer::RepaintRectList rectsToPaint = PlatformCALayer::collectRectsToPaint(context, layer);
-        PlatformCALayer::drawLayerContents(context, layer, rectsToPaint, self.isRenderingInContext ? GraphicsLayerPaintNormal : GraphicsLayerPaintAllowAsyncImageDecoding);
+        PlatformCALayer::drawLayerContents(context, layer, rectsToPaint, self.isRenderingInContext ? GraphicsLayerPaintFlags::None : GraphicsLayerPaintFlags::AllowAsyncImageDecoding);
     }
 }
 
@@ -137,7 +137,7 @@
         graphicsContext.setIsAcceleratedContext(layer->acceleratesDrawing());
 
         FloatRect clipBounds = CGContextGetClipBoundingBox(context);
-        layer->owner()->platformCALayerPaintContents(layer, graphicsContext, clipBounds, self.isRenderingInContext ? GraphicsLayerPaintNormal : GraphicsLayerPaintAllowAsyncImageDecoding);
+        layer->owner()->platformCALayerPaintContents(layer, graphicsContext, clipBounds, self.isRenderingInContext ? GraphicsLayerPaintFlags::None : GraphicsLayerPaintFlags::AllowAsyncImageDecoding);
     }
 }
 

Modified: trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp (219619 => 219620)


--- trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -324,8 +324,6 @@
     if (IOSApplication::isIBooksStorytime())
         return DecodingMode::Synchronous;
 #endif
-    if (bitmapImage.isLargeImageAsyncDecodingEnabledForTesting())
-        return DecodingMode::Asynchronous;
     if (document().isImageDocument())
         return DecodingMode::Synchronous;
     if (!settings().largeImageAsyncDecodingEnabled())
@@ -334,9 +332,6 @@
         return DecodingMode::Synchronous;
     if (paintInfo.paintBehavior & PaintBehaviorAllowAsyncImageDecoding)
         return DecodingMode::Asynchronous;
-    // FIXME: isVisibleInViewport() is not cheap. We need a way to make this condition faster.
-    if (!isVisibleInViewport())
-        return DecodingMode::Asynchronous;
     return DecodingMode::Synchronous;
 }
 

Modified: trunk/Source/WebCore/rendering/RenderElement.h (219619 => 219620)


--- trunk/Source/WebCore/rendering/RenderElement.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/rendering/RenderElement.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -287,7 +287,6 @@
     void adjustFlowThreadStateOnContainingBlockChangeIfNeeded();
     
     bool noLongerAffectsParentBlock() const { return s_noLongerAffectsParentBlock; }
-    bool isVisibleInViewport() const;
 
 private:
     RenderElement(ContainerNode&, RenderStyle&&, BaseTypeFlags);
@@ -317,6 +316,7 @@
     std::unique_ptr<RenderStyle> computeFirstLineStyle() const;
     void invalidateCachedFirstLineStyle();
 
+    bool isVisibleInViewport() const;
     bool canDestroyDecodedData() final { return !isVisibleInViewport(); }
     VisibleInViewportState imageFrameAvailable(CachedImage&, ImageAnimatingState, const IntRect* changeRect) final;
     void didRemoveCachedImageClient(CachedImage&) final;

Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (219619 => 219620)


--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -2569,7 +2569,7 @@
 }
 
 // Up-call from compositing layer drawing callback.
-void RenderLayerBacking::paintContents(const GraphicsLayer* graphicsLayer, GraphicsContext& context, GraphicsLayerPaintingPhase paintingPhase, const FloatRect& clip, GraphicsLayerPaintBehavior layerPaintBehavior)
+void RenderLayerBacking::paintContents(const GraphicsLayer* graphicsLayer, GraphicsContext& context, GraphicsLayerPaintingPhase paintingPhase, const FloatRect& clip, GraphicsLayerPaintFlags flags)
 {
 #ifndef NDEBUG
     renderer().page().setIsPainting(true);
@@ -2580,9 +2580,6 @@
     adjustedClipRect.move(m_subpixelOffsetFromRenderer);
     IntRect dirtyRect = enclosingIntRect(adjustedClipRect);
 
-    if (graphicsLayer->repaintCount())
-        layerPaintBehavior &= ~GraphicsLayerPaintAllowAsyncImageDecoding;
-
     if (graphicsLayer == m_graphicsLayer.get()
         || graphicsLayer == m_foregroundLayer.get()
         || graphicsLayer == m_backgroundLayer.get()
@@ -2596,7 +2593,7 @@
 
         // We have to use the same root as for hit testing, because both methods can compute and cache clipRects.
         PaintBehavior behavior = PaintBehaviorNormal;
-        if (layerPaintBehavior == GraphicsLayerPaintAllowAsyncImageDecoding)
+        if (flags == GraphicsLayerPaintFlags::AllowAsyncImageDecoding)
             behavior |= PaintBehaviorAllowAsyncImageDecoding;
 
         paintIntoLayer(graphicsLayer, context, dirtyRect, behavior, paintingPhase);

Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.h (219619 => 219620)


--- trunk/Source/WebCore/rendering/RenderLayerBacking.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -197,7 +197,7 @@
     void notifyFlushRequired(const GraphicsLayer*) override;
     void notifyFlushBeforeDisplayRefresh(const GraphicsLayer*) override;
 
-    void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const FloatRect& clip, GraphicsLayerPaintBehavior) override;
+    void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const FloatRect& clip, GraphicsLayerPaintFlags) override;
 
     float deviceScaleFactor() const override;
     float contentsScaleMultiplierForNewTiles(const GraphicsLayer*) const override;

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (219619 => 219620)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -2895,7 +2895,7 @@
     context.restore();
 }
 
-void RenderLayerCompositor::paintContents(const GraphicsLayer* graphicsLayer, GraphicsContext& context, GraphicsLayerPaintingPhase, const FloatRect& clip, GraphicsLayerPaintBehavior)
+void RenderLayerCompositor::paintContents(const GraphicsLayer* graphicsLayer, GraphicsContext& context, GraphicsLayerPaintingPhase, const FloatRect& clip, GraphicsLayerPaintFlags)
 {
     IntRect pixelSnappedRectForIntegralPositionedItems = snappedIntRect(LayoutRect(clip));
     if (graphicsLayer == layerForHorizontalScrollbar())

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.h (219619 => 219620)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -332,7 +332,7 @@
 
     // GraphicsLayerClient implementation
     void notifyFlushRequired(const GraphicsLayer*) override;
-    void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const FloatRect&, GraphicsLayerPaintBehavior) override;
+    void paintContents(const GraphicsLayer*, GraphicsContext&, GraphicsLayerPaintingPhase, const FloatRect&, GraphicsLayerPaintFlags) override;
     void customPositionForVisibleRectComputation(const GraphicsLayer*, FloatPoint&) const override;
     bool isTrackingRepaints() const override;
     

Modified: trunk/Source/WebCore/testing/Internals.cpp (219619 => 219620)


--- trunk/Source/WebCore/testing/Internals.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/testing/Internals.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -738,58 +738,79 @@
     return MemoryCache::singleton().size();
 }
 
-static Image* imageFromImageElement(HTMLImageElement& element)
+unsigned Internals::imageFrameIndex(HTMLImageElement& element)
 {
     auto* cachedImage = element.cachedImage();
-    return cachedImage ? cachedImage->image() : nullptr;
-}
+    if (!cachedImage)
+        return 0;
 
-static BitmapImage* bitmapImageFromImageElement(HTMLImageElement& element)
-{
-    auto* image = imageFromImageElement(element);
-    return image && is<BitmapImage>(image) ? &downcast<BitmapImage>(*image) : nullptr;
+    auto* image = cachedImage->image();
+    return is<BitmapImage>(image) ? downcast<BitmapImage>(*image).currentFrame() : 0;
 }
 
-unsigned Internals::imageFrameIndex(HTMLImageElement& element)
+void Internals::setImageFrameDecodingDuration(HTMLImageElement& element, float duration)
 {
-    auto* bitmapImage = bitmapImageFromImageElement(element);
-    return bitmapImage ? bitmapImage->currentFrame() : 0;
-}
+    auto* cachedImage = element.cachedImage();
+    if (!cachedImage)
+        return;
 
-void Internals::setImageFrameDecodingDuration(HTMLImageElement& element, float duration)
-{
-    if (auto* bitmapImage = bitmapImageFromImageElement(element))
-        bitmapImage->setFrameDecodingDurationForTesting(Seconds { duration });
+    auto* image = cachedImage->image();
+    if (!is<BitmapImage>(image))
+        return;
+
+    downcast<BitmapImage>(*image).setFrameDecodingDurationForTesting(Seconds { duration });
 }
 
 void Internals::resetImageAnimation(HTMLImageElement& element)
 {
-    if (auto* image = imageFromImageElement(element))
-        image->resetAnimation();
+    auto* cachedImage = element.cachedImage();
+    if (!cachedImage)
+        return;
+
+    auto* image = cachedImage->image();
+    if (!is<BitmapImage>(image))
+        return;
+
+    image->resetAnimation();
 }
 
 bool Internals::isImageAnimating(HTMLImageElement& element)
 {
-    auto* image = imageFromImageElement(element);
-    return image && (image->isAnimating() || image->animationPending());
+    auto* cachedImage = element.cachedImage();
+    if (!cachedImage)
+        return false;
+
+    auto* image = cachedImage->image();
+    if (!image)
+        return false;
+
+    return image->isAnimating() || image->animationPending();
 }
 
-void Internals::setClearDecoderAfterAsyncFrameRequestForTesting(HTMLImageElement& element, bool enabled)
+void Internals::setClearDecoderAfterAsyncFrameRequestForTesting(HTMLImageElement& element, bool value)
 {
-    if (auto* bitmapImage = bitmapImageFromImageElement(element))
-        bitmapImage->setClearDecoderAfterAsyncFrameRequestForTesting(enabled);
+    auto* cachedImage = element.cachedImage();
+    if (!cachedImage)
+        return;
+
+    auto* image = cachedImage->image();
+    if (!is<BitmapImage>(image))
+        return;
+
+    downcast<BitmapImage>(*image).setClearDecoderAfterAsyncFrameRequestForTesting(value);
 }
 
 unsigned Internals::imageDecodeCount(HTMLImageElement& element)
 {
-    auto* bitmapImage = bitmapImageFromImageElement(element);
-    return bitmapImage ? bitmapImage->decodeCountForTesting() : 0;
-}
+    auto* cachedImage = element.cachedImage();
+    if (!cachedImage)
+        return 0;
 
-void Internals::setLargeImageAsyncDecodingEnabledForTesting(HTMLImageElement& element, bool enabled)
-{
-    if (auto* bitmapImage = bitmapImageFromImageElement(element))
-        bitmapImage->setLargeImageAsyncDecodingEnabledForTesting(enabled);
+    auto* image = cachedImage->image();
+    if (!is<BitmapImage>(image))
+        return 0;
+
+    return downcast<BitmapImage>(*image).decodeCountForTesting();
 }
 
 void Internals::setGridMaxTracksLimit(unsigned maxTrackLimit)

Modified: trunk/Source/WebCore/testing/Internals.h (219619 => 219620)


--- trunk/Source/WebCore/testing/Internals.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/testing/Internals.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -122,9 +122,8 @@
     void setImageFrameDecodingDuration(HTMLImageElement&, float duration);
     void resetImageAnimation(HTMLImageElement&);
     bool isImageAnimating(HTMLImageElement&);
-    void setClearDecoderAfterAsyncFrameRequestForTesting(HTMLImageElement&, bool enabled);
+    void setClearDecoderAfterAsyncFrameRequestForTesting(HTMLImageElement&, bool);
     unsigned imageDecodeCount(HTMLImageElement&);
-    void setLargeImageAsyncDecodingEnabledForTesting(HTMLImageElement&, bool enabled);
 
     void setGridMaxTracksLimit(unsigned);
 

Modified: trunk/Source/WebCore/testing/Internals.idl (219619 => 219620)


--- trunk/Source/WebCore/testing/Internals.idl	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebCore/testing/Internals.idl	2017-07-18 19:31:28 UTC (rev 219620)
@@ -249,9 +249,8 @@
     void setImageFrameDecodingDuration(HTMLImageElement element, unrestricted float duration);
     void resetImageAnimation(HTMLImageElement element);
     boolean isImageAnimating(HTMLImageElement element);
-    void setClearDecoderAfterAsyncFrameRequestForTesting(HTMLImageElement element, boolean enabled);
+    void setClearDecoderAfterAsyncFrameRequestForTesting(HTMLImageElement element, boolean value);
     unsigned long imageDecodeCount(HTMLImageElement element);
-    void setLargeImageAsyncDecodingEnabledForTesting(HTMLImageElement element, boolean enabled);
 
     void setGridMaxTracksLimit(unsigned long maxTracksLimit);
 

Modified: trunk/Source/WebKit/ChangeLog (219619 => 219620)


--- trunk/Source/WebKit/ChangeLog	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebKit/ChangeLog	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1,3 +1,17 @@
+2017-07-18  Matt Lewis  <[email protected]>
+
+        Unreviewed, rolling out r219610.
+
+        This caused an api failure on all platforms for the test
+        SnapshotImageLargeAsyncDecoding
+
+        Reverted changeset:
+
+        "Async image decoding for large images should be disabled
+        after the first time a tile is painted"
+        https://bugs.webkit.org/show_bug.cgi?id=174451
+        http://trac.webkit.org/changeset/219610
+
 2017-07-18  Andy Estes  <[email protected]>
 
         [Xcode] Enable CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING

Modified: trunk/Source/WebKit/Shared/mac/RemoteLayerBackingStore.mm (219619 => 219620)


--- trunk/Source/WebKit/Shared/mac/RemoteLayerBackingStore.mm	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebKit/Shared/mac/RemoteLayerBackingStore.mm	2017-07-18 19:31:28 UTC (rev 219620)
@@ -336,7 +336,7 @@
 
     context.scale(m_scale);
     
-    auto flags = m_layer->context() && m_layer->context()->nextFlushIsForImmediatePaint() ? WebCore::GraphicsLayerPaintNormal : WebCore::GraphicsLayerPaintAllowAsyncImageDecoding;
+    auto flags = m_layer->context() && m_layer->context()->nextFlushIsForImmediatePaint() ? WebCore::GraphicsLayerPaintFlags::None : WebCore::GraphicsLayerPaintFlags::AllowAsyncImageDecoding;
     
     // FIXME: This should be moved to PlatformCALayerRemote for better layering.
     switch (m_layer->layerType()) {

Modified: trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp (219619 => 219620)


--- trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -266,7 +266,7 @@
         m_client.notifyFlushRequired();
 }
 
-void CompositingCoordinator::paintContents(const GraphicsLayer* graphicsLayer, GraphicsContext& graphicsContext, GraphicsLayerPaintingPhase, const FloatRect& clipRect, GraphicsLayerPaintBehavior)
+void CompositingCoordinator::paintContents(const GraphicsLayer* graphicsLayer, GraphicsContext& graphicsContext, GraphicsLayerPaintingPhase, const FloatRect& clipRect, GraphicsLayerPaintFlags)
 {
     m_client.paintLayerContents(graphicsLayer, graphicsContext, enclosingIntRect(clipRect));
 }

Modified: trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h (219619 => 219620)


--- trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -101,7 +101,7 @@
     // GraphicsLayerClient
     void notifyAnimationStarted(const WebCore::GraphicsLayer*, const String&, double time) override;
     void notifyFlushRequired(const WebCore::GraphicsLayer*) override;
-    void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::FloatRect& clipRect, WebCore::GraphicsLayerPaintBehavior) override;
+    void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::FloatRect& clipRect, WebCore::GraphicsLayerPaintFlags) override;
     float deviceScaleFactor() const override;
     float pageScaleFactor() const override;
 

Modified: trunk/Source/WebKitLegacy/win/ChangeLog (219619 => 219620)


--- trunk/Source/WebKitLegacy/win/ChangeLog	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebKitLegacy/win/ChangeLog	2017-07-18 19:31:28 UTC (rev 219620)
@@ -1,3 +1,17 @@
+2017-07-18  Matt Lewis  <[email protected]>
+
+        Unreviewed, rolling out r219610.
+
+        This caused an api failure on all platforms for the test
+        SnapshotImageLargeAsyncDecoding
+
+        Reverted changeset:
+
+        "Async image decoding for large images should be disabled
+        after the first time a tile is painted"
+        https://bugs.webkit.org/show_bug.cgi?id=174451
+        http://trac.webkit.org/changeset/219610
+
 2017-07-18  Said Abou-Hallawa  <[email protected]>
 
         Async image decoding for large images should be disabled after the first time a tile is painted

Modified: trunk/Source/WebKitLegacy/win/FullscreenVideoController.cpp (219619 => 219620)


--- trunk/Source/WebKitLegacy/win/FullscreenVideoController.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebKitLegacy/win/FullscreenVideoController.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -187,7 +187,7 @@
 
     virtual void platformCALayerAnimationStarted(CFTimeInterval beginTime) { }
     virtual GraphicsLayer::CompositingCoordinatesOrientation platformCALayerContentsOrientation() const { return GraphicsLayer::CompositingCoordinatesBottomUp; }
-    virtual void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&, const FloatRect&, GraphicsLayerPaintBehavior) { }
+    virtual void platformCALayerPaintContents(PlatformCALayer*, GraphicsContext&, const FloatRect&, GraphicsLayerPaintFlags) { }
     virtual bool platformCALayerShowDebugBorders() const { return false; }
     virtual bool platformCALayerShowRepaintCounter(PlatformCALayer*) const { return false; }
     virtual int platformCALayerIncrementRepaintCount(PlatformCALayer*) { return 0; }

Modified: trunk/Source/WebKitLegacy/win/WebCoreSupport/AcceleratedCompositingContext.cpp (219619 => 219620)


--- trunk/Source/WebKitLegacy/win/WebCoreSupport/AcceleratedCompositingContext.cpp	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebKitLegacy/win/WebCoreSupport/AcceleratedCompositingContext.cpp	2017-07-18 19:31:28 UTC (rev 219620)
@@ -403,7 +403,7 @@
         scheduleLayerFlush();
 }
 
-void AcceleratedCompositingContext::paintContents(const GraphicsLayer*, GraphicsContext& context, GraphicsLayerPaintingPhase, const FloatRect& rectToPaint, GraphicsLayerPaintBehavior)
+void AcceleratedCompositingContext::paintContents(const GraphicsLayer*, GraphicsContext& context, GraphicsLayerPaintingPhase, const FloatRect& rectToPaint, GraphicsLayerPaintFlags)
 {
     context.save();
     context.clip(rectToPaint);

Modified: trunk/Source/WebKitLegacy/win/WebCoreSupport/AcceleratedCompositingContext.h (219619 => 219620)


--- trunk/Source/WebKitLegacy/win/WebCoreSupport/AcceleratedCompositingContext.h	2017-07-18 18:54:32 UTC (rev 219619)
+++ trunk/Source/WebKitLegacy/win/WebCoreSupport/AcceleratedCompositingContext.h	2017-07-18 19:31:28 UTC (rev 219620)
@@ -52,7 +52,7 @@
     bool enabled();
 
     // GraphicsLayerClient
-    void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::FloatRect& rectToPaint, WebCore::GraphicsLayerPaintBehavior) override;
+    void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::FloatRect& rectToPaint, WebCore::GraphicsLayerPaintFlags) override;
     float deviceScaleFactor() const override;
 
     void initialize();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to