chromium/content/test/data/gpu/canvas_2d_gpu_crash.html

<!DOCTYPE HTML>

<title>Validates canvas 2D loss and restoration after GPU crash</title>
<canvas id="canvas" width="300" height="300"></canvas>

<script>
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');

let lost = false;
let restored = false;

canvas.addEventListener('contextlost', evt => {
  if (lost) {
    return TestFailed('contextlost unexpectedly fired twice.');
  }
  if (restored) {
    return TestFailed('contextlost fired after contextrestored.');
  }
  lost = true;
});

canvas.addEventListener('contextrestored', evt => {
  if (!lost) {
    return TestFailed('contextrestored event fired without contextlost.');
  }
  if (restored) {
    return TestFailed('contextrestored unexpectedly fired twice.');
  }
  restored = true;
  ctx.fillStyle = 'rgb(0, 255, 0)';
  ctx.fillRect(0, 0, 300, 300);

  var imgData = ctx.getImageData(150, 150, 1, 1);
  if (imgData.data[0] == 0 && imgData.data[1] == 255 && imgData.data[2] == 0) {
    window.domAutomationController.send('SUCCESS');
  } else {
    TestFailed('Expected canvas to contain green color.');
  }
});

ctx.fillStyle = 'rgb(255, 0, 0)';
ctx.fillRect(0, 0, 300, 300);

window.domAutomationController.send('LOADED');

function TestFailed(msg) {
  console.log(msg);
  window.domAutomationController.send('FAILED');
}
</script>