| Index: Source/platform/graphics/GraphicsContextTest.cpp
|
| diff --git a/Source/platform/graphics/GraphicsContextTest.cpp b/Source/platform/graphics/GraphicsContextTest.cpp
|
| index a3bd177875dcfd912d32d302d05858b35fd01486..26fe2d45709974e0a6237b025729e83eac51ccf4 100644
|
| --- a/Source/platform/graphics/GraphicsContextTest.cpp
|
| +++ b/Source/platform/graphics/GraphicsContextTest.cpp
|
| @@ -27,7 +27,6 @@
|
| #include "platform/graphics/GraphicsContext.h"
|
|
|
| #include "platform/graphics/BitmapImage.h"
|
| -#include "platform/graphics/GraphicsContextClient.h"
|
| #include "platform/graphics/ImageBuffer.h"
|
| #include "platform/graphics/skia/NativeImageSkia.h"
|
| #include "third_party/skia/include/core/SkBitmap.h"
|
| @@ -169,232 +168,6 @@ TEST(GraphicsContextTest, trackImageMaskWithOpaqueRect)
|
| EXPECT_OPAQUE_PIXELS_ONLY_IN_RECT(bitmap, IntRect(12, 12, 3, 3));
|
| }
|
|
|
| -#define TEST_CLEAR_SETUP \
|
| - SkBitmap bitmap; \
|
| - bitmap.allocN32Pixels(10, 10); \
|
| - bitmap.eraseColor(0); \
|
| - SkCanvas canvas(bitmap); \
|
| - TestGraphicsContextClient gcClient; \
|
| - GraphicsContext context(&canvas, nullptr); \
|
| - context.setClient(&gcClient);
|
| -
|
| -#define TEST_CLEAR_1(SHOULD_CLEAR, CALL1) \
|
| - do { \
|
| - TEST_CLEAR_SETUP \
|
| - context.CALL1; \
|
| - EXPECT_TRUE((SHOULD_CLEAR == gcClient.didClear())); \
|
| - } while (0)
|
| -
|
| -#define TEST_CLEAR_2(SHOULD_CLEAR, CALL1, CALL2) \
|
| - do { \
|
| - TEST_CLEAR_SETUP \
|
| - context.CALL1; \
|
| - context.CALL2; \
|
| - EXPECT_TRUE((SHOULD_CLEAR == gcClient.didClear())); \
|
| - } while (0)
|
| -
|
| -#define TEST_CLEAR_3(SHOULD_CLEAR, CALL1, CALL2, CALL3) \
|
| - do { \
|
| - TEST_CLEAR_SETUP \
|
| - context.CALL1; \
|
| - context.CALL2; \
|
| - context.CALL3; \
|
| - EXPECT_TRUE((SHOULD_CLEAR == gcClient.didClear())); \
|
| - } while (0)
|
| -
|
| -class TestGraphicsContextClient : public blink::GraphicsContextClient {
|
| -public:
|
| - TestGraphicsContextClient() : m_didClear(false) { }
|
| - bool didClear() { return m_didClear; }
|
| -
|
| -protected:
|
| - virtual void willOverwriteCanvas() { m_didClear = true; }
|
| -
|
| -private:
|
| - bool m_didClear;
|
| -};
|
| -
|
| -enum BitmapOpacity {
|
| - OpaqueBitmap,
|
| - TransparentBitmap
|
| -};
|
| -
|
| -static SkBitmap createTestBitmap(BitmapOpacity opacity)
|
| -{
|
| - SkBitmap bitmap;
|
| - SkColor color = opacity == OpaqueBitmap ? SK_ColorWHITE : SK_ColorTRANSPARENT;
|
| - bitmap.allocN32Pixels(10, 10, opacity == OpaqueBitmap);
|
| - for (int y = 0; y < bitmap.height(); ++y)
|
| - for (int x = 0; x < bitmap.width(); ++x)
|
| - *bitmap.getAddr32(x, y) = color;
|
| - return bitmap;
|
| -}
|
| -
|
| -TEST(GraphicsContextTest, detectClear)
|
| -{
|
| - SkRect fullRect = SkRect::MakeWH(10, 10);
|
| - SkPaint opaquePaint;
|
| - SkPaint alphaPaint;
|
| - alphaPaint.setAlpha(0x7F);
|
| - SkRect partialRect = SkRect::MakeWH(1, 1);
|
| - SkImageInfo opaqueImageInfo = SkImageInfo::MakeN32(10, 10, kOpaque_SkAlphaType);
|
| - SkImageInfo alphaImageInfo = SkImageInfo::MakeN32(10, 10, kPremul_SkAlphaType);
|
| - SkImageInfo smallImageInfo = SkImageInfo::MakeN32(1, 1, kOpaque_SkAlphaType);
|
| -
|
| - SkBitmap opaqueBitmap = createTestBitmap(OpaqueBitmap);
|
| - SkBitmap alphaBitmap = createTestBitmap(TransparentBitmap);
|
| -
|
| - SkAutoLockPixels alp(opaqueBitmap);
|
| - const void* imageData = opaqueBitmap.getAddr32(0, 0);
|
| - size_t imageRowBytes = opaqueBitmap.rowBytes();
|
| -
|
| - // Test drawRect
|
| - TEST_CLEAR_1(true, drawRect(fullRect, opaquePaint));
|
| - TEST_CLEAR_1(false, drawRect(fullRect, alphaPaint));
|
| - TEST_CLEAR_1(false, drawRect(partialRect, opaquePaint));
|
| - TEST_CLEAR_2(false, translate(1, 1), drawRect(fullRect, opaquePaint));
|
| -
|
| - // Test drawBitmap
|
| - TEST_CLEAR_1(true, drawBitmap(opaqueBitmap, 0, 0, 0));
|
| - TEST_CLEAR_1(true, drawBitmap(opaqueBitmap, 0, 0, &opaquePaint));
|
| - TEST_CLEAR_1(true, drawBitmap(opaqueBitmap, 0, 0, &alphaPaint));
|
| - TEST_CLEAR_1(false, drawBitmap(alphaBitmap, 0, 0, &opaquePaint));
|
| - TEST_CLEAR_1(false, drawBitmap(alphaBitmap, 0, 0, &alphaPaint));
|
| - TEST_CLEAR_1(false, drawBitmap(opaqueBitmap, 1, 0, 0));
|
| - TEST_CLEAR_2(true, translate(-1, 0), drawBitmap(opaqueBitmap, 1, 0, 0));
|
| - TEST_CLEAR_1(true, drawBitmapRect(opaqueBitmap, 0, fullRect, 0));
|
| - TEST_CLEAR_1(true, drawBitmapRect(opaqueBitmap, &partialRect, fullRect, 0));
|
| - TEST_CLEAR_1(false, drawBitmapRect(opaqueBitmap, 0, partialRect, 0));
|
| - TEST_CLEAR_2(true, scale(10, 10), drawBitmapRect(opaqueBitmap, 0, partialRect, 0));
|
| -
|
| - // Test writePixels
|
| - TEST_CLEAR_1(true, writePixels(opaqueImageInfo, imageData, imageRowBytes, 0, 0));
|
| - TEST_CLEAR_1(true, writePixels(alphaImageInfo, imageData, imageRowBytes, 0, 0)); // alpha has no effect
|
| - TEST_CLEAR_1(false, writePixels(smallImageInfo, imageData, imageRowBytes, 0, 0));
|
| - TEST_CLEAR_2(true, translate(1, 1), writePixels(opaqueImageInfo, imageData, imageRowBytes, 0, 0)); // ignores tranforms
|
| - TEST_CLEAR_1(false, writePixels(opaqueImageInfo, imageData, imageRowBytes, 1, 0));
|
| -
|
| - // Test clipping
|
| - TEST_CLEAR_2(false, clipRect(partialRect), drawRect(fullRect, opaquePaint));
|
| -}
|
| -
|
| -TEST(GraphicsContextTest, detectClearWithOpaquePaint)
|
| -{
|
| - // This test ensures that a draw that covers the canvas is detected as a clear
|
| - // if its paint is opaque.
|
| -
|
| - SkRect fullRect = SkRect::MakeWH(10, 10);
|
| -
|
| - SkBitmap opaqueBitmap = createTestBitmap(OpaqueBitmap);
|
| - SkBitmap alphaBitmap = createTestBitmap(TransparentBitmap);
|
| -
|
| - SkAutoTUnref<SkShader> opaqueShader(SkShader::CreateBitmapShader(opaqueBitmap, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode));
|
| -
|
| - {
|
| - SkPaint paint;
|
| - paint.setStyle(SkPaint::kFill_Style);
|
| - TEST_CLEAR_1(true, drawRect(fullRect, paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - paint.setStyle(SkPaint::kStrokeAndFill_Style);
|
| - TEST_CLEAR_1(true, drawRect(fullRect, paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - paint.setShader(opaqueShader);
|
| - TEST_CLEAR_1(true, drawRect(fullRect, paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - paint.setAlpha(0x7F); // shader overrides color
|
| - paint.setShader(opaqueShader);
|
| - TEST_CLEAR_1(true, drawRect(fullRect, paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - paint.setShader(opaqueShader); // shader overrides the bitmap
|
| - TEST_CLEAR_1(true, drawBitmap(alphaBitmap, 0, 0, &paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - paint.setAlpha(0); // bitmap overrides color
|
| - TEST_CLEAR_1(true, drawBitmap(opaqueBitmap, 0, 0, &paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - paint.setAlpha(0x7F);
|
| - paint.setXfermodeMode(SkXfermode::kSrc_Mode);
|
| - TEST_CLEAR_1(true, drawRect(fullRect, paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - paint.setAlpha(0x7F);
|
| - paint.setXfermodeMode(SkXfermode::kClear_Mode);
|
| - TEST_CLEAR_1(true, drawRect(fullRect, paint));
|
| - }
|
| -}
|
| -
|
| -TEST(GraphicsContextTest, detectNoClearWithTransparentPaint)
|
| -{
|
| - // This test ensures that a draw that covers the canvas is never detected as a clear
|
| - // if its paint has any properties that make it non-opaque
|
| - SkRect fullRect = SkRect::MakeWH(10, 10);
|
| -
|
| - SkBitmap opaqueBitmap = createTestBitmap(OpaqueBitmap);
|
| - SkBitmap alphaBitmap = createTestBitmap(TransparentBitmap);
|
| -
|
| - SkAutoTUnref<SkShader> alphaShader(SkShader::CreateBitmapShader(alphaBitmap, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode));
|
| -
|
| - {
|
| - SkPaint paint;
|
| - paint.setStyle(SkPaint::kStroke_Style);
|
| - TEST_CLEAR_1(false, drawRect(fullRect, paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - paint.setColor(SK_ColorTRANSPARENT);
|
| - TEST_CLEAR_1(false, drawRect(fullRect, paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - paint.setShader(alphaShader);
|
| - TEST_CLEAR_1(false, drawRect(fullRect, paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - paint.setShader(alphaShader); // shader overrides the bitmap.
|
| - TEST_CLEAR_1(false, drawBitmap(opaqueBitmap, 0, 0, &paint));
|
| - }
|
| - for (int mode = SkXfermode::kDstOver_Mode; mode <= SkXfermode::kLastMode; mode++) {
|
| - SkPaint paint;
|
| - paint.setXfermodeMode(static_cast<SkXfermode::Mode>(mode));
|
| - TEST_CLEAR_1(false, drawRect(fullRect, paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - SkAutoTUnref<SkMaskFilter> filter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, 1));
|
| - paint.setMaskFilter(filter.get());
|
| - TEST_CLEAR_1(false, drawRect(fullRect, paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - SkAutoTUnref<SkImageFilter> filter(SkBlurImageFilter::Create(1, 1));
|
| - paint.setImageFilter(filter.get());
|
| - TEST_CLEAR_1(false, drawRect(fullRect, paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - SkAutoTUnref<SkDrawLooper> looper(SkBlurDrawLooper::Create(SK_ColorWHITE, 1, 1, 1));
|
| - paint.setLooper(looper.get());
|
| - TEST_CLEAR_1(false, drawRect(fullRect, paint));
|
| - }
|
| - {
|
| - SkPaint paint;
|
| - TEST_CLEAR_3(false, beginLayer(1.0f, SkXfermode::kSrcOver_Mode), drawRect(fullRect, paint), endLayer());
|
| - }
|
| -}
|
| -
|
| TEST(GraphicsContextTest, UnboundedDrawsAreClipped)
|
| {
|
| SkBitmap bitmap;
|
|
|