<script src="../../resources/get-host-info.js?pipe=sub"></script>
<script src="test-helpers.js"></script>
<script>
var image_path = base_path() + 'fetch-access-control.php?PNGIMAGE';
var host_info = get_host_info();
var results = '';

function test1() {
  var img = document.createElement('img');
  document.body.appendChild(img);
  img.onload = function() {
    test2();
  };
  img.onerror = function() {
    results += 'FAIL(1)';
    test2();
  };
  img.src = './dummy?url=' +
            encodeURIComponent(host_info['HTTPS_ORIGIN'] + image_path);
}

function test2() {
  var img = document.createElement('img');
  document.body.appendChild(img);
  img.onload = function() {
    test3();
  };
  img.onerror = function() {
    results += 'FAIL(2)';
    test3();
  };
  img.src = './dummy?mode=no-cors&url=' +
            encodeURIComponent(host_info['HTTPS_REMOTE_ORIGIN'] + image_path);
}

function test3() {
  var img = document.createElement('img');
  document.body.appendChild(img);
  img.onload = function() {
    results += 'FAIL(3)';
    finish();
  };
  img.onerror = function() {
    finish();
  };
  img.src = './dummy?mode=no-cors&url=' +
            encodeURIComponent(host_info['UNAUTHENTICATED_ORIGIN'] + image_path);
}

function finish() {
  results += 'finish';
  window.parent.postMessage({results: results}, host_info['HTTPS_ORIGIN']);
}
</script>

<body onload='test1();'>
</body>
