Title: [279321] trunk/Source/WebCore
Revision
279321
Author
[email protected]
Date
2021-06-27 14:17:30 -0700 (Sun, 27 Jun 2021)

Log Message

Treat image data url's as not identical
https://bugs.webkit.org/show_bug.cgi?id=226924

Patch by Rob Buis <[email protected]> on 2021-06-27
Reviewed by Said Abou-Hallawa.

Treat image data url's as not identical
in fillImagesAreIdentical.

* rendering/RenderElement.cpp:
(WebCore::RenderElement::updateFillImages):
* rendering/style/StyleCachedImage.cpp:
(WebCore::StyleCachedImage::usesDataProtocol const):
* rendering/style/StyleCachedImage.h:
* rendering/style/StyleCursorImage.cpp:
(WebCore::StyleCursorImage::usesDataProtocol const):
* rendering/style/StyleCursorImage.h:
* rendering/style/StyleImage.h:
(WebCore::StyleImage::usesDataProtocol const):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (279320 => 279321)


--- trunk/Source/WebCore/ChangeLog	2021-06-27 19:49:51 UTC (rev 279320)
+++ trunk/Source/WebCore/ChangeLog	2021-06-27 21:17:30 UTC (rev 279321)
@@ -1,3 +1,24 @@
+2021-06-27  Rob Buis  <[email protected]>
+
+        Treat image data url's as not identical
+        https://bugs.webkit.org/show_bug.cgi?id=226924
+
+        Reviewed by Said Abou-Hallawa.
+
+        Treat image data url's as not identical
+        in fillImagesAreIdentical.
+
+        * rendering/RenderElement.cpp:
+        (WebCore::RenderElement::updateFillImages):
+        * rendering/style/StyleCachedImage.cpp:
+        (WebCore::StyleCachedImage::usesDataProtocol const):
+        * rendering/style/StyleCachedImage.h:
+        * rendering/style/StyleCursorImage.cpp:
+        (WebCore::StyleCursorImage::usesDataProtocol const):
+        * rendering/style/StyleCursorImage.h:
+        * rendering/style/StyleImage.h:
+        (WebCore::StyleImage::usesDataProtocol const):
+
 2021-06-27  Wenson Hsieh  <[email protected]>
 
         [iOS 15] Fix the internal build after rdar://76549109

Modified: trunk/Source/WebCore/rendering/RenderElement.cpp (279320 => 279321)


--- trunk/Source/WebCore/rendering/RenderElement.cpp	2021-06-27 19:49:51 UTC (rev 279320)
+++ trunk/Source/WebCore/rendering/RenderElement.cpp	2021-06-27 21:17:30 UTC (rev 279321)
@@ -361,6 +361,8 @@
         for (; layer1 && layer2; layer1 = layer1->next(), layer2 = layer2->next()) {
             if (!arePointingToEqualData(layer1->image(), layer2->image()))
                 return false;
+            if (layer1->image() && layer1->image()->usesDataProtocol())
+                return false;
         }
 
         return !layer1 && !layer2;

Modified: trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp (279320 => 279321)


--- trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp	2021-06-27 19:49:51 UTC (rev 279320)
+++ trunk/Source/WebCore/rendering/style/StyleCachedImage.cpp	2021-06-27 21:17:30 UTC (rev 279321)
@@ -198,4 +198,9 @@
     return m_cachedImage && m_cachedImage->currentFrameKnownToBeOpaque(&renderer);
 }
 
+bool StyleCachedImage::usesDataProtocol() const
+{
+    return m_cssValue->imageURL().protocolIsData();
 }
+
+}

Modified: trunk/Source/WebCore/rendering/style/StyleCachedImage.h (279320 => 279321)


--- trunk/Source/WebCore/rendering/style/StyleCachedImage.h	2021-06-27 19:49:51 UTC (rev 279320)
+++ trunk/Source/WebCore/rendering/style/StyleCachedImage.h	2021-06-27 21:17:30 UTC (rev 279321)
@@ -64,6 +64,7 @@
     RefPtr<Image> image(RenderElement*, const FloatSize&) const final;
     float imageScaleFactor() const final;
     bool knownToBeOpaque(const RenderElement&) const final;
+    bool usesDataProtocol() const final;
 
 private:
     StyleCachedImage(CSSImageValue&, float);

Modified: trunk/Source/WebCore/rendering/style/StyleCursorImage.cpp (279320 => 279321)


--- trunk/Source/WebCore/rendering/style/StyleCursorImage.cpp	2021-06-27 19:49:51 UTC (rev 279320)
+++ trunk/Source/WebCore/rendering/style/StyleCursorImage.cpp	2021-06-27 21:17:30 UTC (rev 279321)
@@ -68,4 +68,9 @@
     cachedImage()->setContainerContextForClient(renderer, LayoutSize(containerSize), containerZoom, m_cssValue->imageURL());
 }
 
+bool StyleCursorImage::usesDataProtocol() const
+{
+    return m_cssValue->imageURL().protocolIsData();
 }
+
+}

Modified: trunk/Source/WebCore/rendering/style/StyleCursorImage.h (279320 => 279321)


--- trunk/Source/WebCore/rendering/style/StyleCursorImage.h	2021-06-27 19:49:51 UTC (rev 279320)
+++ trunk/Source/WebCore/rendering/style/StyleCursorImage.h	2021-06-27 21:17:30 UTC (rev 279321)
@@ -38,6 +38,7 @@
     static Ref<StyleCursorImage> create(CSSCursorImageValue&);
     virtual ~StyleCursorImage();
     bool operator==(const StyleImage& other) const;
+    bool usesDataProtocol() const final;
 
 private:
     void setContainerContextForRenderer(const RenderElement& renderer, const FloatSize& containerSize, float containerZoom) final;

Modified: trunk/Source/WebCore/rendering/style/StyleImage.h (279320 => 279321)


--- trunk/Source/WebCore/rendering/style/StyleImage.h	2021-06-27 19:49:51 UTC (rev 279320)
+++ trunk/Source/WebCore/rendering/style/StyleImage.h	2021-06-27 21:17:30 UTC (rev 279321)
@@ -78,6 +78,8 @@
 
     bool hasCachedImage() const { return m_isCachedImage || selectedImage()->isCachedImage(); }
 
+    virtual bool usesDataProtocol() const { return false; }
+
 protected:
     StyleImage()
         : m_isCachedImage(false)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to