Index: tests/SurfaceTest.cpp |
=================================================================== |
--- tests/SurfaceTest.cpp (revision 8683) |
+++ tests/SurfaceTest.cpp (working copy) |
@@ -146,17 +146,49 @@ |
surface->newImageSnapshot()->unref(); // Create and destroy SkImage |
canvas->clear(2); |
} |
+static void TestSurfaceNoCanvas(skiatest::Reporter* reporter, |
+ SurfaceType surfaceType, |
+ GrContext* context) { |
+ // Verifies the robustness of SkSurface for handling use cases where calls |
+ // are made before a canvas is created. |
+ { |
+ // Test passes by not asserting |
+ SkSurface* surface = createSurface(surfaceType, context); |
+ SkAutoTUnref<SkSurface> aur_surface(surface); |
+ surface->notifyContentChanged(); |
+ surface->validate(); |
+ } |
+ { |
+ SkSurface* surface = createSurface(surfaceType, context); |
+ SkAutoTUnref<SkSurface> aur_surface(surface); |
+ SkImage* image1 = surface->newImageSnapshot(); |
+ SkAutoTUnref<SkImage> aur_image1(image1); |
+ image1->validate(); |
+ surface->validate(); |
+ surface->notifyContentChanged(); |
+ image1->validate(); |
+ surface->validate(); |
+ SkImage* image2 = surface->newImageSnapshot(); |
+ SkAutoTUnref<SkImage> aur_image2(image2); |
+ image2->validate(); |
+ surface->validate(); |
+ REPORTER_ASSERT(reporter, image1 != image2); |
+ } |
+ |
+} |
static void TestSurface(skiatest::Reporter* reporter, GrContextFactory* factory) { |
TestSurfaceCopyOnWrite(reporter, kRaster_SurfaceType, NULL); |
TestSurfaceCopyOnWrite(reporter, kPicture_SurfaceType, NULL); |
TestSurfaceWritableAfterSnapshotRelease(reporter, kRaster_SurfaceType, NULL); |
TestSurfaceWritableAfterSnapshotRelease(reporter, kPicture_SurfaceType, NULL); |
+ TestSurfaceNoCanvas(reporter, kRaster_SurfaceType, NULL); |
#if SK_SUPPORT_GPU |
if (NULL != factory) { |
GrContext* context = factory->get(GrContextFactory::kNative_GLContextType); |
TestSurfaceCopyOnWrite(reporter, kGpu_SurfaceType, context); |
TestSurfaceWritableAfterSnapshotRelease(reporter, kGpu_SurfaceType, context); |
+ TestSurfaceNoCanvas(reporter, kGpu_SurfaceType, context); |
} |
#endif |
} |