Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / platform / graphics / GraphicsContextTest.cpp
index b36ba30..0162c18 100644 (file)
@@ -32,6 +32,7 @@
 #include "platform/graphics/skia/NativeImageSkia.h"
 #include "third_party/skia/include/core/SkBitmap.h"
 #include "third_party/skia/include/core/SkCanvas.h"
+#include "third_party/skia/include/core/SkPicture.h"
 #include <gtest/gtest.h>
 
 using namespace WebCore;
@@ -601,7 +602,8 @@ TEST(GraphicsContextTest, trackOpaqueOvalTest)
     EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
     EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
 
-    context.drawEllipse(IntRect(10, 10, 90, 90));
+    context.fillEllipse(FloatRect(10, 10, 90, 90));
+    context.strokeEllipse(FloatRect(10, 10, 90, 90));
     EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
     EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
 
@@ -614,24 +616,28 @@ TEST(GraphicsContextTest, trackOpaqueOvalTest)
     context.setShouldAntialias(false);
 
     context.setFillColor(opaque);
-    context.drawEllipse(IntRect(10, 10, 50, 30));
+    context.fillEllipse(FloatRect(10, 10, 50, 30));
+    context.strokeEllipse(FloatRect(10, 10, 50, 30));
     EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), context.opaqueRegion().asRect());
     EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
 
     context.setFillColor(alpha);
-    context.drawEllipse(IntRect(10, 10, 30, 50));
+    context.fillEllipse(FloatRect(10, 10, 30, 50));
+    context.strokeEllipse(FloatRect(10, 10, 30, 50));
     EXPECT_EQ_RECT(IntRect(40, 10, 60, 90), context.opaqueRegion().asRect());
     EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
 
     context.setShouldAntialias(true);
 
     context.setFillColor(opaque);
-    context.drawEllipse(IntRect(10, 10, 50, 30));
+    context.fillEllipse(FloatRect(10, 10, 50, 30));
+    context.strokeEllipse(FloatRect(10, 10, 50, 30));
     EXPECT_EQ_RECT(IntRect(40, 41, 60, 59), context.opaqueRegion().asRect());
     EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
 
     context.setFillColor(alpha);
-    context.drawEllipse(IntRect(20, 10, 30, 50));
+    context.fillEllipse(FloatRect(20, 10, 30, 50));
+    context.strokeEllipse(FloatRect(20, 10, 30, 50));
     EXPECT_EQ_RECT(IntRect(51, 41, 49, 59), context.opaqueRegion().asRect());
     EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
 }
@@ -703,10 +709,6 @@ TEST(GraphicsContextTest, trackOpaqueTextTest)
     alphaPaint.setXfermodeMode(SkXfermode::kSrc_Mode);
 
     SkPoint point = SkPoint::Make(0, 0);
-    SkScalar pointX = 0;
-    SkPath path;
-    path.moveTo(SkPoint::Make(0, 0));
-    path.lineTo(SkPoint::Make(100, 0));
 
     context.fillRect(FloatRect(50, 50, 50, 50), opaque, CompositeSourceOver);
     EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
@@ -724,25 +726,9 @@ TEST(GraphicsContextTest, trackOpaqueTextTest)
     EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
     EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
 
-    context.drawPosTextH("A", 1, &pointX, 0, textRect, opaquePaint);
-    EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
-    EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
-
-    context.drawPosTextH("A", 1, &pointX, 0, textRect, alphaPaint);
-    EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
-    EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
-
     context.fillRect(FloatRect(50, 50, 50, 50), opaque, CompositeSourceOver);
     EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
     EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
-
-    context.drawTextOnPath("A", 1, path, textRect, 0, opaquePaint);
-    EXPECT_EQ_RECT(IntRect(50, 50, 50, 50), context.opaqueRegion().asRect());
-    EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
-
-    context.drawTextOnPath("A", 1, path, textRect, 0, alphaPaint);
-    EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
-    EXPECT_PIXELS_MATCH(bitmap, context.opaqueRegion().asRect());
 }
 
 TEST(GraphicsContextTest, trackOpaqueWritePixelsTest)
@@ -1092,4 +1078,45 @@ TEST(GraphicsContextTest, RecordingTotalMatrix)
     EXPECT_EQ(context.getCTM(), controlContext.getCTM());
 }
 
+TEST(GraphicsContextTest, DisplayList)
+{
+    FloatRect rect(0, 0, 1, 1);
+    RefPtr<DisplayList> dl = adoptRef(new DisplayList(rect));
+
+    // picture() returns 0 initially
+    SkPicture* pic = dl->picture();
+    EXPECT_FALSE(pic);
+
+    // endRecording without a beginRecording does nothing
+    dl->endRecording();
+    pic = dl->picture();
+    EXPECT_FALSE(pic);
+
+    // Two beginRecordings in a row generate two canvases.
+    // Unfortunately the new one could be allocated in the same
+    // spot as the old one so ref the first one to prolong its life.
+    IntSize size(1, 1);
+    SkCanvas* canvas1 = dl->beginRecording(size);
+    EXPECT_TRUE(canvas1);
+    canvas1->ref();
+    SkCanvas* canvas2 = dl->beginRecording(size);
+    EXPECT_TRUE(canvas2);
+
+    EXPECT_NE(canvas1, canvas2);
+    EXPECT_EQ(1, canvas1->getRefCnt());
+    canvas1->unref();
+
+    EXPECT_TRUE(dl->isRecording());
+
+    // picture() returns 0 during recording
+    pic = dl->picture();
+    EXPECT_FALSE(pic);
+
+    // endRecording finally makes the picture accessible
+    dl->endRecording();
+    pic = dl->picture();
+    EXPECT_TRUE(pic);
+    EXPECT_EQ(1, pic->getRefCnt());
+}
+
 } // namespace