void TestInvocation::dumpPixelsAndCompareWithExpected(WKImageRef image, WKArrayRef repaintRects) { PlatformWebView* webView = TestController::shared().mainWebView(); WKRetainPtr<WKImageRef> windowSnapshot = webView->windowSnapshotImage(); // There is no way at this time to fake a window's scale factor, so we need to avoid the window // snapshots for HiDPI tests. if (WKPageGetBackingScaleFactor(webView->page()) != 1) windowSnapshot = 0; RetainPtr<CGContextRef> context; if (windowSnapshot) context = adoptCF(createCGContextFromImage(windowSnapshot.get(), DontFlipGraphicsContext)); else context = adoptCF(createCGContextFromImage(image)); // A non-null repaintRects array means we're doing a repaint test. if (repaintRects) paintRepaintRectOverlay(context.get(), image, repaintRects); char actualHash[33]; computeMD5HashStringForContext(context.get(), actualHash); if (!compareActualHashToExpectedAndDumpResults(actualHash)) dumpBitmap(context.get(), actualHash); }
void dumpWebViewAsPixelsAndCompareWithExpected(const std::string& expectedHash) { RefPtr<BitmapContext> context; #if PLATFORM(MAC) if (gLayoutTestController->isPrinting()) context = createPagedBitmapContext(); else #endif context = createBitmapContextFromWebView(gLayoutTestController->testOnscreen(), gLayoutTestController->testRepaint(), gLayoutTestController->testRepaintSweepHorizontally(), gLayoutTestController->dumpSelectionRect()); ASSERT(context); // Compute the hash of the bitmap context pixels char actualHash[33]; computeMD5HashStringForBitmapContext(context.get(), actualHash); printf("\nActualHash: %s\n", actualHash); // Check the computed hash against the expected one and dump image on mismatch bool dumpImage = true; if (expectedHash.length() > 0) { ASSERT(expectedHash.length() == 32); printf("\nExpectedHash: %s\n", expectedHash.c_str()); if (expectedHash == actualHash) // FIXME: do case insensitive compare dumpImage = false; } if (dumpImage) dumpBitmap(context.get()); }
void TestInvocation::dumpPixelsAndCompareWithExpected(WKImageRef image, WKArrayRef repaintRects, SnapshotResultType snapshotType) { RetainPtr<CGContextRef> context = adoptCF(createCGContextFromImage(image, snapshotType == SnapshotResultType::WebView ? DontFlipGraphicsContext : FlipGraphicsContext)); // A non-null repaintRects array means we're doing a repaint test. if (repaintRects) paintRepaintRectOverlay(context.get(), image, repaintRects); char actualHash[33]; computeMD5HashStringForContext(context.get(), actualHash); if (!compareActualHashToExpectedAndDumpResults(actualHash)) dumpBitmap(context.get(), actualHash); }
void TestInvocation::dumpPixelsAndCompareWithExpected(WKImageRef, WKArrayRef repaintRects) { cairo_surface_t* surface = WKImageCreateCairoSurface(TestController::singleton().mainWebView()->windowSnapshotImage().get()); if (repaintRects) paintRepaintRectOverlay(surface, repaintRects); char actualHash[33]; computeMD5HashStringForCairoSurface(surface, actualHash); if (!compareActualHashToExpectedAndDumpResults(actualHash)) dumpBitmap(surface, actualHash); cairo_surface_destroy(surface); }
void TestInvocation::dumpPixelsAndCompareWithExpected(WKImageRef wkImage, WKArrayRef repaintRects) { #if USE(ACCELERATED_COMPOSITING) && (PLATFORM(EFL) || PLATFORM(NIX)) UNUSED_PARAM(wkImage); cairo_surface_t* surface = WKImageCreateCairoSurface(TestController::shared().mainWebView()->windowSnapshotImage().get()); #else cairo_surface_t* surface = WKImageCreateCairoSurface(wkImage); #endif if (repaintRects) paintRepaintRectOverlay(surface, repaintRects); char actualHash[33]; computeMD5HashStringForCairoSurface(surface, actualHash); if (!compareActualHashToExpectedAndDumpResults(actualHash)) dumpBitmap(surface, actualHash); cairo_surface_destroy(surface); }