<!--
onmessage = function(e) {
  function processPixels(imagedata) {
    var pixeldata = imagedata.data;
    for (var i = 0; i < pixeldata.length; i = i+4) {
      pixeldata[i] = 128;
    }
    postMessage(imagedata);
  }
  processPixels(e.data[0]);
}

/*
-->
<!doctype html>
<title>posting an imagedata (from a cloned canvas) in an array</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
(async_test()).step(function() {
  var worker = new Worker('#');
  var canvas = document.createElement('canvas');
  var clone = canvas.cloneNode(true);
  var ctx = clone.getContext('2d');
  var imagedata = ctx.getImageData(0, 0, 300, 150);
  worker.postMessage([imagedata]);
  worker.onmessage = this.step_func(function(e) {
    var pixeldata = e.data.data;
    for (var i = 0; i < pixeldata.length; i++) {
      assert_equals(pixeldata[i], (i % 4 == 0) ? 128 : 0);
    }
    this.done();
  });
});
</script>
<!--
*/
//-->