<!DOCTYPE html>
<!-- DO NOT EDIT! This test has been generated by tools/gentest.py. -->
<title>Canvas test: toDataURL.jpeg.quality.basic</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/canvas-tests.js"></script>
<link rel="stylesheet" href="/common/canvas-tests.css">
<body class="show_output">

<h1>toDataURL.jpeg.quality.basic</h1>
<p class="desc">toDataURL with JPEG uses the quality parameter</p>


<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
<p class="output expectedtext">Expected output:<p><img src="toDataURL.jpeg.quality.basic.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
var t = async_test("toDataURL with JPEG uses the quality parameter");
_addTest(function(canvas, ctx) {

ctx.fillStyle = '#00f';
ctx.fillRect(0, 0, 100, 50);
ctx.fillStyle = '#0ff';
ctx.fillRect(0, 3, 100, 1);
// Check for JPEG support first
var data = canvas.toDataURL('image/jpeg');
if (!data.match(/^data:image\/jpeg[;,]/)) {
  _assert(true, "true");
} else {
  var data_hi = canvas.toDataURL('image/jpeg', 0.99);
  var data_lo = canvas.toDataURL('image/jpeg', 0.01);
  ctx.fillStyle = '#f00';
  ctx.fillRect(0, 0, 100, 50);
  deferTest();
  var img_hi = new Image();
  img_hi.onload = function ()
  {
      var img_lo = new Image();
      img_lo.onload = t.step_func_done(function ()
      {
          ctx.drawImage(img_hi, 0, 0, 50, 50, 0, 0, 50, 50);
          ctx.drawImage(img_lo, 0, 0, 50, 50, 50, 0, 50, 50);
          _assert(data_hi.length > data_lo.length, "data_hi.length > data_lo.length");
          _assertPixelApprox(canvas, 25,25, 0,0,255,255, "25,25", "0,0,255,255", 8);
          _assertPixelApprox(canvas, 75,25, 0,0,255,255, "75,25", "0,0,255,255", 32);
      });
      img_lo.src = data_lo;
  };
  img_hi.src = data_hi;
}


});
</script>

