chromium/third_party/blink/web_tests/fast/canvas-api/canvas-whitespace-parsing.html

<!DOCTYPE html>
<title>Test whitespace parsing on canvas attributes that invoke the CSS parser</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>

var ctx;
function whiteSpaceTest(attribute, input, output) {
    var canvas = document.createElement('canvas');
    ctx = canvas.getContext('2d');
    eval('ctx.' + attribute + ' = "' + input + '"');
    assert_equals(eval('ctx.' + attribute), output);
}

generate_tests(whiteSpaceTest, [
    ['', 'fillStyle', ' red', '#ff0000'],
    ['', 'fillStyle', 'red ', '#ff0000'],
    ['', 'fillStyle', '\tred', '#ff0000'],
    ['', 'fillStyle', 'red\t', '#ff0000'],
    ['', 'fillStyle', ' #f00', '#ff0000'],
    ['', 'fillStyle', '#f00 ', '#ff0000'],
    ['', 'fillStyle', '\t#f00', '#ff0000'],
    ['', 'fillStyle', '#f00\t', '#ff0000'],
    ['', 'fillStyle', ' rgb(255, 0, 0)', '#ff0000'],
    ['', 'fillStyle', 'rgb(255,0,0) ', '#ff0000'],
    ['', 'fillStyle', 'invalid', '#000000'], // Sanity check
    ['', 'strokeStyle', ' red', '#ff0000'],
    ['', 'strokeStyle', 'red ', '#ff0000'],
    ['', 'strokeStyle', '\tred', '#ff0000'],
    ['', 'strokeStyle', 'red\t', '#ff0000'],
    ['', 'strokeStyle', 'invalid', '#000000'], // Sanity check
// The filter attribute is different: it does not get re-serialized
    ['', 'filter', ' blur(5px)', ' blur(5px)'],
    ['', 'filter', 'blur(5px) ', 'blur(5px) '],
    ['', 'filter', 'blur( 5px)', 'blur( 5px)'],
    ['', 'filter', '\tblur(5px)', '\tblur(5px)'],
    ['', 'filter', 'blur(5px)\t', 'blur(5px)\t'],
    ['', 'filter', 'invalid', 'none'], // Sanity check
  ]);

</script>