Index: tests/TileGridTest.cpp |
=================================================================== |
--- tests/TileGridTest.cpp (revision 8831) |
+++ tests/TileGridTest.cpp (working copy) |
@@ -178,6 +178,9 @@ |
SkBitmap moreThanATileBitmap; |
moreThanATileBitmap.setConfig(SkBitmap::kARGB_8888_Config, 11, 11); |
moreThanATileBitmap.allocPixels(); |
+ SkBitmap tinyBitmap; |
+ tinyBitmap.setConfig(SkBitmap::kARGB_8888_Config, 2, 2); |
+ tinyBitmap.allocPixels(); |
// Test parts of top-left tile |
{ |
// The offset should cancel the top and left borders of the top left tile |
@@ -226,6 +229,20 @@ |
REPORTER_ASSERT(reporter, rect2 == mockCanvas.fRects[0]); |
REPORTER_ASSERT(reporter, rect3 == mockCanvas.fRects[1]); |
} |
+ { |
+ // Regression test for crbug.com/234688 |
+ // Once the 2x2 device region is inset by margin, it yields an empty |
+ // adjusted region, sitting right on top of the tile boundary. |
+ SkDevice device(tinyBitmap); |
+ MockCanvas mockCanvas(&device); |
+ mockCanvas.translate(SkFloatToScalar(-8.0f), SkFloatToScalar(-8.0f)); |
+ picture.draw(&mockCanvas); |
+ // This test passes by not asserting. We do not validate the rects recorded |
+ // because the result is numerically unstable (floating point equality). |
+ // The content of any one of the four tiles of the tilegrid would be a valid |
+ // result since any bbox that covers the center point of the canvas will be |
+ // recorded in all four tiles. |
+ } |
} |
static void Test(skiatest::Reporter* reporter) { |