<!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(function() {

  var canvas = document.createElement('canvas');
  var clone = canvas.cloneNode(true);
  var ctx = clone.getContext('2d');
  var imagedata = ctx.getImageData(0, 0, 300, 150);
  postMessage([imagedata], '*');

  onmessage = this.step_func(function(e) {
    function processPixels(imagedata) {
      var pixeldata = imagedata.data;
      for (var i = 0; i < pixeldata.length; i = i+4) {
        pixeldata[i] = 128;
        assert_equals(pixeldata[i], 128);
      }
    }
    processPixels(e.data[0]);
    this.done();
  });

});
</script>

