function isGtk() { // Set in Tools/WebKitTestRunner/gtk/TestControllerGTK.cpp. return navigator.userAgent.includes("WebKitTestRunnerGTK"); } function isWPE() { // Set in Tools/WebKitTestRunner/wpe/TestControllerWPE.cpp. return navigator.userAgent.includes("WebKitTestRunnerWPE"); } function videoCanvasPixelComparisonTolerance() { if (isGtk()) return 6; return 2; } function checkPixelColorWithTolerance(pixel, r, g, b, a) { const tolerance = videoCanvasPixelComparisonTolerance(); return Math.abs(pixel[0] - r) <= tolerance && Math.abs(pixel[1] - g) <= tolerance && Math.abs(pixel[2] - b) <= tolerance && Math.abs(pixel[3] - a) <= tolerance; } function isPixelBlack(pixel) { return checkPixelColorWithTolerance(pixel, 0, 0, 0, 255); } function isPixelTransparent(pixel) { return checkPixelColorWithTolerance(pixel, 0, 0, 0, 0); } function isPixelWhite(pixel) { return checkPixelColorWithTolerance(pixel, 255, 255, 255, 255); } function isPixelGray(pixel) { return checkPixelColorWithTolerance(pixel, 128, 128, 128, 255); }