<!DOCTYPE html>
<title>Upgrade Insecure Requests: Basics.</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

<script>
// This is a bit of a hack. UPGRADE doesn't upgrade the port number, so we
// specify this non-existent URL ('http' over port 8443). If UPGRADE doesn't
// work, it won't load.
var insecureImage = "http://127.0.0.1:8443/security/resources/abe.png";

(function() {
    var t = async_test("Verify that images are upgraded.");
    t.step(function () {
        var i = document.createElement('img');
        i.onload = t.step_func(function () {
            assert_equals(i.naturalHeight, 103, "Height.");
            assert_equals(i.naturalWidth, 76, "Width.");
            t.done();
        });
        i.onerror = t.step_func(function () {
            assert_unreached("The image should load successfully.");
        });

        i.src = insecureImage;
    });
}());

(function() {
    var t = async_test("Verify that images have correct cross-origin behavior.");
    t.step(function () {
        var i = document.createElement('img');
        i.onload = t.step_func(function () {
            // Draw the image onto a canvas.
            var canvas = document.createElement('canvas');
            var ctx = canvas.getContext('2d');
            ctx.drawImage(i, 0, 0);

            // Grab a pixel to verify that the image is same-origin:
            try {
                var pixel = ctx.getImageData(0, 0, 1, 1);
                t.done();
            } catch (e) {
                assert_unreached("The image should be same-origin with this document.");
            }
        });
        i.onerror = t.step_func(function () {
            assert_unreached("The image should load successfully.");
        });

        i.src = insecureImage;
    });
}());
</script>

Add a simple end-to-end test.
Upgrade: Add a simple end-to-end test.

I realized today that I can indeed add some layout tests for UPGRADE, as
the port will be left alone if it's non-standard. This patch adds a
simple test that verifies that images are upgraded and have the same
cross-origin semantics as redirected images.

BUG=455674

Review URL: https://codereview.chromium.org/1031993003

git-svn-id: bf5cd6ccde378db821296732a091cfbcf5285fbd@192607 bbb929c8-8fbe-4397-9dbb-9b2b20218538
