Title: [139137] trunk
Revision
139137
Author
[email protected]
Date
2013-01-08 17:17:19 -0800 (Tue, 08 Jan 2013)

Log Message

Color bleeding with rounded rectangles on high dpi displays
https://bugs.webkit.org/show_bug.cgi?id=106373

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/backgrounds/gradient-background-leakage-hidpi.html

Avoid using the BackgroundBleedShrinkBackground draw strategy for
RenderBox when border width is less than two layout units. This
is because rounded rectangles are always snapped to integer layout
coordinates, even with subpixel layout enabled.

* rendering/RenderBox.cpp:
(WebCore::RenderBox::determineBackgroundBleedAvoidance):

LayoutTests:

New layout test to verify that rounded rectangle corners do not
produce color bleeding on high dpi devices.

* fast/backgrounds/gradient-background-leakage-hidpi-expected.txt: Added.
* fast/backgrounds/gradient-background-leakage-hidpi.html: Added.
* platform/chromium-linux/fast/backgrounds/gradient-background-leakage-hidpi-expected.png: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (139136 => 139137)


--- trunk/LayoutTests/ChangeLog	2013-01-09 01:11:32 UTC (rev 139136)
+++ trunk/LayoutTests/ChangeLog	2013-01-09 01:17:19 UTC (rev 139137)
@@ -1,3 +1,17 @@
+2013-01-08  Justin Novosad  <[email protected]>
+
+        Color bleeding with rounded rectangles on high dpi displays
+        https://bugs.webkit.org/show_bug.cgi?id=106373
+
+        Reviewed by Simon Fraser.
+
+        New layout test to verify that rounded rectangle corners do not
+        produce color bleeding on high dpi devices.
+
+        * fast/backgrounds/gradient-background-leakage-hidpi-expected.txt: Added.
+        * fast/backgrounds/gradient-background-leakage-hidpi.html: Added.
+        * platform/chromium-linux/fast/backgrounds/gradient-background-leakage-hidpi-expected.png: Added.
+
 2013-01-08  Filip Pizlo  <[email protected]>
 
         DFG shouldn't treat the 'this' argument as being captured if a code block uses arguments

Added: trunk/LayoutTests/fast/backgrounds/gradient-background-leakage-hidpi-expected.txt (0 => 139137)


--- trunk/LayoutTests/fast/backgrounds/gradient-background-leakage-hidpi-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/fast/backgrounds/gradient-background-leakage-hidpi-expected.txt	2013-01-09 01:17:19 UTC (rev 139137)
@@ -0,0 +1,7 @@
+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x68
+  RenderBlock {HTML} at (0,0) size 800x68
+    RenderBody {BODY} at (8,8) size 784x52
+      RenderBlock {DIV} at (0,0) size 220x52 [bgcolor=#FF0000]
+        RenderBlock {DIV} at (10,10) size 202x32 [border: (1px solid #008000)]

Added: trunk/LayoutTests/fast/backgrounds/gradient-background-leakage-hidpi.html (0 => 139137)


--- trunk/LayoutTests/fast/backgrounds/gradient-background-leakage-hidpi.html	                        (rev 0)
+++ trunk/LayoutTests/fast/backgrounds/gradient-background-leakage-hidpi.html	2013-01-09 01:17:19 UTC (rev 139137)
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <style type="text/css">
+    .box {
+      height: 30px;
+      width: 200px;
+      background-image: -webkit-linear-gradient(black, black);
+      border-radius: 25px;
+      border: 1px solid green;
+    }
+  </style>
+</head>
+    <script>
+        window._onload_ = function() {
+            if (window.testRunner) {
+                testRunner.waitUntilDone();
+                testRunner.setBackingScaleFactor(2, finishTest);
+            }
+        }
+
+        function finishTest() {
+            setTimeout(function() { testRunner.notifyDone(); }, 0);
+        }
+    </script>
+<body>
+  <!-- You should see no red leaking through the inner edge of the border. -->
+  <div style="background-color: red; padding: 10px; width: 200px">
+    <div class="box"></div>
+  </div>
+</body>
+</html>

Modified: trunk/LayoutTests/platform/chromium/TestExpectations (139136 => 139137)


--- trunk/LayoutTests/platform/chromium/TestExpectations	2013-01-09 01:11:32 UTC (rev 139136)
+++ trunk/LayoutTests/platform/chromium/TestExpectations	2013-01-09 01:17:19 UTC (rev 139137)
@@ -2771,6 +2771,9 @@
 # New test added in r85454. Actual failure.
 webkit.org/b/91676 fast/js/mozilla/strict/assign-to-callee-name.html [ Failure ]
 
+# Test needing new baselines with fix for bug 106373
+webkit.org/b/106373 fast/backgrounds/gradient-background-leakage-hidpi.html [ Pass ImageOnlyFailure ]
+
 # Failure introduced by Chromium r83848.
 crbug.com/137938 [ Mac Android ] fast/url/ipv6.html [ Failure ]
 

Added: trunk/LayoutTests/platform/chromium-linux/fast/backgrounds/gradient-background-leakage-hidpi-expected.png (0 => 139137)


--- trunk/LayoutTests/platform/chromium-linux/fast/backgrounds/gradient-background-leakage-hidpi-expected.png	                        (rev 0)
+++ trunk/LayoutTests/platform/chromium-linux/fast/backgrounds/gradient-background-leakage-hidpi-expected.png	2013-01-09 01:17:19 UTC (rev 139137)
@@ -0,0 +1,17 @@
+\x89PNG
+
+
+IHDR@\xB0,c\xC0)tEXtchecksumc2fd932fa4a7d80f6255fa14e5afe842ވ;- IDATx\x9C\xEC\xDD?sTg\x9A\xC6\xE1\x97\xAB\xDC$ "+2\xADh\xE4\xC4nGVd\xB3\x93\xAC\xE5l\xA3\xB1\xC86k\xBE\x89<\xD1f\x88\x8D6\xB3\xD8Ąf#9\xB2pb&\x92\xD8HI8\x916\xD2B(\xC6D\xB5ι1\xD7U]E\xA5~\x9E\xE8T\xE9Wo\xBF}\xE5\xE4\xE4$\xD0ꭱ\x80_"`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA\xBD}៸r\xE5\xD6\xF899{\x80\xDF'\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\xDA\xDBc/\xF0*&y8\xCD\xCEbvs8\xC9\xDEB\x9E,\x8C\xBD0\xB6\x9B\x87\x99f\xE18\xB3\xFD\xCC\xF6\xF3\xE9^n\x8F\xBD\xF3p\xE5\xE4\xE4\xE4\x82?q\xE5r6\xF9u\xDF/\xE6\xDE,\xDFN\xF3hq\xAC\x80\xD7ɇ\xFB\xB9\xB5\x97/v\xF2\xD1\xFE\xB0\x83/\xFA\\xE0\xBD\xEB`\x92{\xB3l\xAC\xBCx\xCCj/\xD9K\x9F{o\xB8\x85\xE7^\xD3d\xFA\x8F\xFF\xB9y\x98\xF5\xED|\xB13ԙ,`\xAE\xAA\xD6\xC1$_\xADdc%O'I\x92\xA3\xE4Q\xF28\xD9l\xE0u6M\x96\x93\x93\xABIr\xFD8\xEB\xDB\xF9r\xFB\xF23\x96\x800W\xBDks\x96\xF5\xDBg\xE9j7\xF9.y<\xCCd\xE0wg9\xF98YJ\x92\xEB\xC7\xD9x\x90\xB5\x9D\xCB'`\xCCUc\xC0\xDA]ȝ\xD5<\x9C\x9E\xFE%y\xE8\xC80\xD3\xE4\xD3g\xEBӽ\xDC\xDD\xCA\xD2%}\xFAX\xC0\x98\xAB\xBA\x80\xF5\xF5r\xEE\xAC\xE6\xE9$9J\xEE;u\xCC\xDBr\xF2Yr5׏sw+\x9F_\xC6CF\xC0\x98\xAB\xAE\x80\xB5~;_\xAD$I~L\xEE'\xC3\\xB7\xBCi&\xC9g\xC9\xFBI\xF2\xE5v6\xCC\xFB\xFD,\x80\xB9*
+Xk\xAB\xB97K\x92<H\xB6/i\xC0\x99\x95\xE4v\x92|\xB1\x93ͭ\xB9\xBE\xB3\x800W-k\xF5\xDFr99J\xEE%\xFB\x971\xE0%\x8B\xC9\xC9\xD5|\xF68[\xFF5\xBF\xB7\xB0\xE6ꭱH\x92\xB5U\xF5
+\xC3~r/9\xCA\xFD嬭\x8E\xBD?c\xFC\x80\xF5\xE5\xEDܛ\xA9W\xC0H\xCEֽY\xBE\xBC=\xF62\xFC3#\xAC\xAF\x97\xF3\xD7\xD3[\xDB\xD5+`,\xA7
++\xF9\xEBJ\xBE^{^2f\xC0\xDA]ȝ\xD3\xCF\xEC|\xA3^\xA3\xDAO\xBEI\x92;\xAB\xD9]{^4f\xC0\xBA\xB3\x9A\xA7\x93\xE4\xC7\xE4\xBB\xB7H\x92|\x97\x{189D3CF0}@\x8D\xD1\xD6\xDDYN\x93\xA3\xE4\xFEX+\xBC\xE8~r\x94\x87\xD3ܝ\x8D\xBD	\xCF'`L\xF2\x97\xD3˒\xEF'ǣ\xAC\xF0\x92\xE3\xE4A\x92\xFC\xE5v&c/\xC0\x99q\xD6\xC6J\x9EN\x92\xDD\xE4\xF1(\xF3~ƣd7O'\xD9X{Ό\xB0&\xF9\xEA\xF47Ç\xC3\xF85\x93\xE4\xAB\x87\xB0Z\x8C\xB06ggǯ\xF6\x86\xF0k\xF6\x9E\xC2\xDAt@\x87ֳ\xE3W\xDB\xC3O\xF8m\xB6\x93\xF3\x87c:`}\xBF\x98'\xC9Q\xF2\xB7\x81'\xFCfK\x8E\xF2d!\xDF/\x8E\xBD	\xC3\xACg\xC9\xD9x,\xC0\xED$\xF1)B\x80
+C\xAC\x87\xD3$\xBE|\xA8\xF789d0\xAAA\xD6\xC1$\x8FN?\x8F\xF3dȱ\xF7$I-\xFA.B\x80\xF1
+\xB0\xBE\x9D&Iv\x87\x9C	\xF0\xAAv\x93\xF3\xE34`\xED\x9C\xBF\xDAr&\xC0\xAB\xDAK\xCE\\x8Cg\x8C\x80u8\xE4L\x80Wu\x98X
+X\x87\xA7W\xC9X\xC0k\xE109p0\x9EA֓\x85$\xC9\xD3!g\xBC\xAA\xA7I\xF2T\xC0\xDB\xCB	,\xE0\xB5p\x98\xE4\xEC\xBBSϠ.J\xC0\xA0\x9A\x80@\xB5A\xD6{\xA7\xB7_]r&\xC0\xAB\xBA\x9E\x9C?\xB8Ϡkz\xFA{\xE03^\xD5Br\xFE\xE0`<\x83\xAC\x85\xE3\xD3?\x86\x9C	\xF0\xAA\x92\xF3\xE34`\xCD\xF6\x93X\xC0kb!9p0\x9E1\xD6tș\xAFj\x9AX
+X\xB7\xF6\x92$KC\xCExUK\xC9\xF9\x83\x80\xF1\xB0n\xE7\x83ӳ7\x87pq7\x93\xE4\x83\xFD\xDCp\xC0\xD8
+X9?˰<\xF0X\x80ZN\xBF\xE80t\xC0Z\xDBI\x92\xCCpA\xB3\xE4\xFC\x91\xC0\xA8\x86X\xED\xE7\xBD\xC3\xE4j\xF2\x87\x81'\xFCfH\xAE\xE6\xBD\xC3|\xE4w\x80C\xAC$\xEB\xDBI\x92\x95\xE1'\xFC6+\xC9\xF9\xC3
+\x80\xB1\x8D\xB0\xD6vr\xED8Yr\x95;P\xE9f\xB2\x94k\xC7>?\xD0b\x84\x80u\xE3\xF8\xEC\í\xE1\x87\xFC\x9A[I\xB2\xBE\xED\xFBZ\x8C\xB0\x92\xACo\x9F\xC2rP\xE5\xC3gǯ|~\xA0\xC78\xEB\xC6q6$IV\x93wFY\xE0%\xEF$\xB7\x93d\xE3\x81\xE3WE\xC6	XI\xEE\xEC䓽\xE4j\xB2:\xD6
+/ZM\xAE擽\xDCq\xFB@\x93\xD1V\x92ͭ\;N\xDEO>q\x80$\xC9\xC7\xC9\xFB\xB9v\x9Cͭ\xB17\xE0Ec\xAC\xA5ó_\xFF\x98\xBC;\xE2"\xC0\xEF\xDD\xE4\x8FI\xB2\xB9\x95\xA5ñ\x97\xE0Ec\xAC$\x9F?ΟOoJ^Ӱ\x80\x91\xBC\x9B\xAC%ɟ\xB7\xF3\xF9\xE3\x91w\xE0eWNNN.\xF8W\xE6\xBE\xC4\xAB\xF9\xCFYr\x94l&\x9F\xFB\xDB\xFC\xBC\xD3zu5\xDAɽy}x\xF0\xA2\xCFU~QE\xC0J\xF2\xE1\xBF\xE7\x87E
+\xD6Y\xBD\xFA`?\x8F\xFEc~o+`\xCCUK\xC0:\x98\xE4\xD6Z~XL\x92|\x93|wC\x9E\xF3\xF1\xB3{\xAF>\xD8Ϸ\x9B\xB9q<\xBFw\xB0\xE6\xAA%`%9\x98dm5\xFF\xBD\x9C$\xF91\xD9J\xFE\xEF\x92Fo\xB6w\x92\xD5\xE4\xFD$\xF9\xD7\xC7\xD9ܚk\xBD\x8A\x800gE\xEB\xD4\xD7\xCBY[\xCDO\x93d7\xD9J\x9E^\xEA4\xE0\xCDs=YM\x96r\xED8\x9B[\x97sk\xBB\x800Wu+\xC9\xEEB\xD6V\xF3?\xD3\xE4(\xD9N\xB6\xC5\xE6\xE1\x9Dd%\xF9\x97$\xF9d/\x9B[Y:\xBC\x9CA\xC0\5\xACSwgY\xBF\x9D\x9F&gk/y2\xCCd\xE0w\xE7f2MV\x92\xAB\xB9v\x9C\x8D\xB9\xB3s\x99\xE3,\x80\xB9\xEA
+XI&\xD9X\xC9\xC6J~\x9A$I\x8E\x92\x9D䱒\xFC67\x93\xE5d\x96\M\x92k\xC7Y\xDF\xCE\xFA\xF6\xBCo\xBCz\x99\x800W\xD5\xEB\xD4\xC1$\x9B\xB3l\xAC\xE4\x9E\xFB\xD7\xDDd/9<{\xB9*\xB8\x9E,\x9C\xBD\xA6\xC9\xD2?\xFE\xE7\xBDìogm\xE7\xF2\xD3\xD5)`\xAE^\x83\x80u\xEE\xFB\xC5l\xCE\xF2\xED4?,\x8E\xB5\xF0:\xF9`?\xB7\x{1B2D93}\x8F\xF6\x87,`\xCC\xD5\xEB\xB0\xCEL\xF2\xED4;\x8B\xD9Y\xCC\xE1${/\xCE\xDEH\xEFfz\x98\x85\xE3\xCC\xF63\xDBϭ\xBD\xA1\xCE[\xBDL\xC0\x98\xAB\xD72`T\xB0\xE6ꭱ\x80_"`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\xDA\xDB\xFE\x89\x93\x93KX\xFE9'\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xD5,\xAA	XT\xB0\xA8&`PM\xC0\xA0\x9A\x80@5\x80j\xFC;v,0\xC8\xDFz;
+#`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x92-mIDAT\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0&\xB0XX\xAC	,\xD6k\x805\x81\xC0\x9A\xC0`M`\xB0\xA0\xD1\xFE<\x87C\x85IEND\xAEB`\x82
\ No newline at end of file

Modified: trunk/Source/WebCore/ChangeLog (139136 => 139137)


--- trunk/Source/WebCore/ChangeLog	2013-01-09 01:11:32 UTC (rev 139136)
+++ trunk/Source/WebCore/ChangeLog	2013-01-09 01:17:19 UTC (rev 139137)
@@ -1,3 +1,20 @@
+2013-01-08  Justin Novosad  <[email protected]>
+
+        Color bleeding with rounded rectangles on high dpi displays
+        https://bugs.webkit.org/show_bug.cgi?id=106373
+
+        Reviewed by Simon Fraser.
+
+        Test: fast/backgrounds/gradient-background-leakage-hidpi.html
+
+        Avoid using the BackgroundBleedShrinkBackground draw strategy for
+        RenderBox when border width is less than two layout units. This
+        is because rounded rectangles are always snapped to integer layout
+        coordinates, even with subpixel layout enabled.
+
+        * rendering/RenderBox.cpp:
+        (WebCore::RenderBox::determineBackgroundBleedAvoidance):
+
 2013-01-08  Elliott Sprehn  <[email protected]>
 
         Merge getLineAtIndex into RenderBlock::lineAtIndex

Modified: trunk/Source/WebCore/rendering/RenderBox.cpp (139136 => 139137)


--- trunk/Source/WebCore/rendering/RenderBox.cpp	2013-01-09 01:11:32 UTC (rev 139136)
+++ trunk/Source/WebCore/rendering/RenderBox.cpp	2013-01-09 01:17:19 UTC (rev 139137)
@@ -995,6 +995,21 @@
 
     AffineTransform ctm = context->getCTM();
     FloatSize contextScaling(static_cast<float>(ctm.xScale()), static_cast<float>(ctm.yScale()));
+
+    // Because RoundedRect uses IntRect internally the inset applied by the 
+    // BackgroundBleedShrinkBackground strategy cannot be less than one integer
+    // layout coordinate, even with subpixel layout enabled. To take that into
+    // account, we clamp the contextScaling to 1.0 for the following test so
+    // that borderObscuresBackgroundEdge can only return true if the border
+    // widths are greater than 2 in both layout coordinates and screen
+    // coordinates.
+    // This precaution will become obsolete if RoundedRect is ever promoted to
+    // a sub-pixel representation.
+    if (contextScaling.width() > 1) 
+        contextScaling.setWidth(1);
+    if (contextScaling.height() > 1) 
+        contextScaling.setHeight(1);
+
     if (borderObscuresBackgroundEdge(contextScaling))
         return BackgroundBleedShrinkBackground;
     if (!style->hasAppearance() && borderObscuresBackground() && backgroundHasOpaqueTopLayer())
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to