chromium/third_party/blink/web_tests/images/color-profile-drag-image.html

<!DOCTYPE html>
<html>
<script src="../resources/run-after-layout-and-paint.js"></script>

<style>
  img, canvas { margin: 5px; width: 48% }
</style>

<body style="overflow: hidden">
  <!-- The _blue_ sector of the <img> image should be at 12 o'clock. -->
  <img>
  <!-- The red sector of the <canvas> image should be at 12 o'clock. -->
  <canvas></canvas>
</body>

<script>
if (window.testRunner) {
  // The pixel result will be the drag image. The blue sector if the
  // drag image should be at 12 o'clock.
  testRunner.dumpDragImage();
}

window.onload = function() {
  if (window.testRunner)
    testRunner.waitUntilDone();

  var image = document.querySelector('img');
  image.onload = function() {
    runAfterLayoutAndPaint(drawImagePatternToCanvas);
  };

  image.src = 'resources/red-at-12-oclock-with-color-profile.jpg';
};

function drawImagePatternToCanvas() {
  var canvas = document.querySelector('canvas');
  var ctx = canvas.getContext('2d');
  var pattern = ctx.createPattern(document.querySelector('img'), null);
  var scale = 0.1870;

  ctx.clearRect(0, 0, canvas.width = 300, canvas.height = 300);
  ctx.save();
  ctx.scale(scale, scale);
  ctx.fillStyle = pattern;
  ctx.fillRect(0, 0, canvas.width / scale, canvas.height / scale);
  ctx.restore();

  if (window.testRunner)
    runAfterLayoutAndPaint(dragImage);
}

function dragImage() {
  var image = document.querySelector('img');

  if (window.eventSender) {
    var x = image.offsetLeft + image.offsetWidth / 2;
    var y = image.offsetTop + image.offsetHeight / 2;

    eventSender.dragMode = true;
    eventSender.mouseMoveTo(x, y);
    eventSender.mouseDown();

    eventSender.leapForward(1000);
    eventSender.mouseMoveTo(x + 100, y + 100);
    eventSender.mouseUp();
  }

  if (window.testRunner)
    setTimeout(function() { testRunner.notifyDone() }, 100);
}

</script>
</html>