| Index: third_party/WebKit/LayoutTests/fast/canvas/canvas-large-fills.html
|
| diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-large-fills.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-large-fills.html
|
| index dd4c03ee23f39d62df72e3055cc126b6c647f444..5b81aef4619f49ff92d6a407c026207e81bace6f 100644
|
| --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-large-fills.html
|
| +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-large-fills.html
|
| @@ -1,11 +1,11 @@
|
| -<!DOCTYPE html>
|
| -
|
| -<script src="../../resources/js-test.js"></script>
|
| +<script src="../../resources/testharness.js"></script>
|
| +<script src="../../resources/testharnessreport.js"></script>
|
|
|
| <pre id="console"></pre>
|
| -<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
|
| +<canvas id="c" width="100" height="50"></canvas>
|
|
|
| <script>
|
| +// Tests that using the different composite modes to fill large rects doesn't crash and works as expected.
|
| var canvas = document.getElementById("c");
|
| var ctx = canvas.getContext("2d");
|
|
|
| @@ -15,57 +15,38 @@ function clearContextToGreen() {
|
| ctx.fillRect(0, 0, canvas.width, canvas.height);
|
| }
|
|
|
| -var testData = [
|
| - {compositeMode: 'source-over', expected: [0, 0, 255]},
|
| - {compositeMode: 'source-in', expected: [0, 0, 255]},
|
| - {compositeMode: 'source-out', expected: [0, 0, 0]},
|
| - {compositeMode: 'source-atop', expected: [0, 0, 255]},
|
| - {compositeMode: 'destination-over', expected: [0, 255, 0]},
|
| - {compositeMode: 'destination-in', expected: [0, 255, 0]},
|
| - {compositeMode: 'destination-out', expected: [0, 0, 0]},
|
| - {compositeMode: 'destination-atop', expected: [0, 255, 0]},
|
| - {compositeMode: 'lighter', expected: [0, 255, 255]},
|
| - {compositeMode: 'copy', expected: [0, 0, 255]},
|
| - {compositeMode: 'xor', expected: [0, 0, 0]},
|
| +var testScenarios = [
|
| + ['Test source-over', 'source-over', [0, 0, 255]],
|
| + ['Test source-in', 'source-in', [0, 0, 255]],
|
| + ['Test source-out', 'source-out', [0, 0, 0]],
|
| + ['Test source-atop', 'source-atop', [0, 0, 255]],
|
| + ['Test destination-over', 'destination-over', [0, 255, 0]],
|
| + ['Test destiation-in', 'destination-in', [0, 255, 0]],
|
| + ['Test destination-out', 'destination-out', [0, 0, 0]],
|
| + ['Test destination-atop', 'destination-atop', [0, 255, 0]],
|
| + ['Test lighter', 'lighter', [0, 255, 255]],
|
| + ['Test copy', 'copy', [0, 0, 255]],
|
| + ['Test xor', 'xor', [0, 0, 0]]
|
| ];
|
|
|
| -function toHexString(number) {
|
| - var hexString = number.toString(16).toUpperCase();
|
| - if (number <= 9)
|
| - hexString = '0' + hexString;
|
| - return hexString;
|
| -}
|
| -
|
| -function doTest(dataItem, fillSize) {
|
| +var fillSize = 0;
|
| +function testLargeRect(compositeMode, expected) {
|
| clearContextToGreen();
|
| ctx.fillStyle = "rgb(0, 0, 255)";
|
| - ctx.globalCompositeOperation = dataItem.compositeMode;
|
| + ctx.globalCompositeOperation = compositeMode;
|
| ctx.fillRect(0, 0, fillSize, fillSize);
|
|
|
| - var data = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
| - var pixelOK = true;
|
| - var pixelString = '#';
|
| - var expectedString = '#';
|
| -
|
| - for (var x = 0; x < 3; x++) {
|
| - pixelString = pixelString + toHexString(data.data[x]);
|
| - expectedString = expectedString + toHexString(dataItem.expected[x]);
|
| - if (data.data[x] != dataItem.expected[x])
|
| - pixelOK = false;
|
| - }
|
| -
|
| - var testName = "Fill Size " + fillSize + ', ' + dataItem.compositeMode;
|
| - if (pixelOK)
|
| - testPassed(testName + ': ' + pixelString);
|
| - else
|
| - testFailed(testName + ': EXPECTED ' + expectedString + ', GOT ' + pixelString);
|
| + var data = ctx.getImageData(0, 0, canvas.width, canvas.height).data;
|
| + var testPassed = true;
|
| + for (var i = 0; i < 3; i++)
|
| + if (data[i] != expected[i])
|
| + testPassed = false;
|
| + assert_true(testPassed);
|
| }
|
|
|
| -debug("Tests that using the different composite modes to fill large rects doesn't crash and works as expected.");
|
| -[10000, 50000, 100000].forEach(function(fillSize) {
|
| - testData.forEach(function(dataItem) {
|
| - doTest(dataItem, fillSize)
|
| - })});
|
| +[10000, 50000, 100000].forEach(function(fillSizeItem) {
|
| + fillSize = fillSizeItem;
|
| + generate_tests(testLargeRect, testScenarios);
|
| +});
|
|
|
| </script>
|
| -</html>
|
|
|