Title: [94581] trunk
Revision
94581
Author
[email protected]
Date
2011-09-06 11:13:20 -0700 (Tue, 06 Sep 2011)

Log Message

[skia] States of GraphicsContext may never be restored after clipToImageBuffer
https://bugs.webkit.org/show_bug.cgi?id=67358

Source/WebCore:

beginLayerClippedToImage/applyClipFromImage are mismatched when clipping to
an empty ImageBuffer, which will make states of GraphicsContext incorrect.

Patch by Robin Cao <[email protected]> on 2011-09-06
Reviewed by James Robinson.

Test: fast/repaint/background-clip-text.html

* platform/graphics/skia/PlatformContextSkia.cpp:
(WebCore::PlatformContextSkia::beginLayerClippedToImage):

LayoutTests:

Patch by Robin Cao <[email protected]> on 2011-09-06
Reviewed by James Robinson.

* fast/repaint/background-clip-text-expected.png: Added.
* fast/repaint/background-clip-text-expected.txt: Added.
* fast/repaint/background-clip-text.html: Added.
* platform/qt/Skipped: Missing layoutController.testRepaint().

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (94580 => 94581)


--- trunk/LayoutTests/ChangeLog	2011-09-06 18:02:50 UTC (rev 94580)
+++ trunk/LayoutTests/ChangeLog	2011-09-06 18:13:20 UTC (rev 94581)
@@ -1,3 +1,15 @@
+2011-09-06  Robin Cao  <[email protected]>
+
+        [skia] States of GraphicsContext may never be restored after clipToImageBuffer
+        https://bugs.webkit.org/show_bug.cgi?id=67358
+
+        Reviewed by James Robinson.
+
+        * fast/repaint/background-clip-text-expected.png: Added.
+        * fast/repaint/background-clip-text-expected.txt: Added.
+        * fast/repaint/background-clip-text.html: Added.
+        * platform/qt/Skipped: Missing layoutController.testRepaint().
+
 2011-08-30  Pavel Podivilov  <[email protected]>
 
         Web Inspector: implement source map v3 consumer.

Added: trunk/LayoutTests/fast/repaint/background-clip-text-expected.png (0 => 94581)


--- trunk/LayoutTests/fast/repaint/background-clip-text-expected.png	                        (rev 0)
+++ trunk/LayoutTests/fast/repaint/background-clip-text-expected.png	2011-09-06 18:13:20 UTC (rev 94581)
@@ -0,0 +1,6 @@
+\x89PNG
+
+
+IHDR X')tEXtchecksum1dd037976b4c64852793313c348023f7E\xADi\x9C
+\xC1IDATx\x9C\xEDع
+\xC4@\xC1݃\xF2O\x99\x81\xBC\x86>T\xB9t\xC6lp\xCF\xCC\xA0\xF3\xBB{\xC0\xD7,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88g\x87\xBD\xF6\x95;^m\xD6\xDC=x,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\xD8qv\x985W\xEE\xF8,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\x98\xC0\x88	,\x80\xD8\x8D\xAF	^IEND\xAEB`\x82
\ No newline at end of file

Added: trunk/LayoutTests/fast/repaint/background-clip-text-expected.txt (0 => 94581)


--- trunk/LayoutTests/fast/repaint/background-clip-text-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/repaint/background-clip-text-expected.txt	2011-09-06 18:13:20 UTC (rev 94581)
@@ -0,0 +1 @@

Added: trunk/LayoutTests/fast/repaint/background-clip-text.html (0 => 94581)


--- trunk/LayoutTests/fast/repaint/background-clip-text.html	                        (rev 0)
+++ trunk/LayoutTests/fast/repaint/background-clip-text.html	2011-09-06 18:13:20 UTC (rev 94581)
@@ -0,0 +1,30 @@
+<html>
+<head>
+  <style type="text/css">
+    #shadowBox {
+      -webkit-background-clip: text;
+      -webkit-box-shadow: 0 100px #f00;
+      width: 100px; height: 100px;
+    }
+    #greenBox {
+      font-size: 100px;
+      background-color: #0f0;
+      width: 100px; height: 100px;
+    }
+  </style> 
+</head>
+<body>
+
+<!-- Try select/deselect the space in the green box below. You should not see red. -->
+<div id="shadowBox"></div>
+<div id="greenBox" >&nbsp;</div>
+
+<script type="text/_javascript_">
+    if (window.layoutTestController) {
+        layoutTestController.dumpAsText(true);
+        layoutTestController.testRepaint();
+    }
+</script>
+
+</body>
+</html>

Modified: trunk/LayoutTests/platform/qt/Skipped (94580 => 94581)


--- trunk/LayoutTests/platform/qt/Skipped	2011-09-06 18:02:50 UTC (rev 94580)
+++ trunk/LayoutTests/platform/qt/Skipped	2011-09-06 18:13:20 UTC (rev 94581)
@@ -687,6 +687,7 @@
 fast/repaint/table-writing-modes-v.html
 fast/repaint/text-emphasis-h.html
 fast/repaint/text-emphasis-v.html
+fast/repaint/background-clip-text.html
 
 # This requires didClearWindowObjectForFrameInIsolatedWorld foo in FrameLoaderClient
 http/tests/security/isolatedWorld/didClearWindowObject.html

Modified: trunk/Source/WebCore/ChangeLog (94580 => 94581)


--- trunk/Source/WebCore/ChangeLog	2011-09-06 18:02:50 UTC (rev 94580)
+++ trunk/Source/WebCore/ChangeLog	2011-09-06 18:13:20 UTC (rev 94581)
@@ -1,3 +1,18 @@
+2011-09-06  Robin Cao  <[email protected]>
+
+        [skia] States of GraphicsContext may never be restored after clipToImageBuffer
+        https://bugs.webkit.org/show_bug.cgi?id=67358
+
+        beginLayerClippedToImage/applyClipFromImage are mismatched when clipping to
+        an empty ImageBuffer, which will make states of GraphicsContext incorrect.
+
+        Reviewed by James Robinson.
+
+        Test: fast/repaint/background-clip-text.html
+
+        * platform/graphics/skia/PlatformContextSkia.cpp:
+        (WebCore::PlatformContextSkia::beginLayerClippedToImage):
+
 2011-09-06  Raphael Kubo da Costa  <[email protected]>
 
         [EFL] Do not allocate memory for extremely large surfaces.

Modified: trunk/Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp (94580 => 94581)


--- trunk/Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp	2011-09-06 18:02:50 UTC (rev 94580)
+++ trunk/Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp	2011-09-06 18:13:20 UTC (rev 94581)
@@ -244,6 +244,9 @@
                       SkFloatToScalar(rect.maxX()), SkFloatToScalar(rect.maxY()) };
 
     canvas()->clipRect(bounds);
+    if (imageBuffer->size().isEmpty())
+        return;
+
     canvas()->saveLayerAlpha(&bounds, 255,
                              static_cast<SkCanvas::SaveFlags>(SkCanvas::kHasAlphaLayer_SaveFlag | SkCanvas::kFullColorLayer_SaveFlag));
     // Copy off the image as |imageBuffer| may be deleted before restore is invoked.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to