Revision e8c4654cef692388e68e8ded7a9316d6bd613570 authored by Darren Shen on 06 April 2018, 07:51:02 UTC, committed by Chromium WPT Sync on 06 April 2018, 07:51:02 UTC
We cannot support background-repeat and background-position yet because
they are both implemented as shorthands in Blink, but are not shorthands
in the spec.

We'd need to refactor the existing code to allow shorthands to reify
as proper Typed OM objects. There are also some tricky bits to support
styleMap.set with shorthands given a proper Typed OM object.

Bug: 820299
Change-Id: I064ce37a48bee3d73965b66b323e20abf5a9099f
Reviewed-on: https://chromium-review.googlesource.com/994593
Commit-Queue: Darren Shen <shend@chromium.org>
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/master@{#548705}
1 parent d6a82fd
Raw File
preflight-cache.htm
<!DOCTYPE html>
<meta charset=utf-8>
<title>CORS - preflight cache</title>
<meta name=author title="Odin Hørthe Omdal" href="mailto:odiho@opera.com">

<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/common/utils.js></script>
<script src=support.js?pipe=sub></script>

<h1>Preflight cache</h1>

<div id=log></div>
<script>

/*
 * Cache
 */

function did_preflight(expect, client, settings) {
    var uuid_token = (settings && settings.token) || token();
    if(!settings)
        settings = {}

    set = {
        method: 'method' in settings ? settings.method : 'GET',
        extra: 'extra' in settings ? '&' + settings.extra : ''
    }

    client.open(set.method,
            CROSSDOMAIN + 'resources/preflight.py?token=' + uuid_token + set.extra,
            false)
    client.setRequestHeader('x-print', uuid_token)
    client.send()

    client.open('GET', 'resources/preflight.py?check&token=' + uuid_token, false)
    client.send()
    assert_equals(client.response, expect === true ? '1' : '0', "did preflight")
    return uuid_token;
}

/*
 * Should run preflight
 */

test(function() {
    var time = new Date().getTime()
    var client = new XMLHttpRequest()
    did_preflight(true, client);
},
'Test preflight')

test(function() {
    var time = new Date().getTime()
    var client = new XMLHttpRequest()

    var id = did_preflight(true,  client)
    did_preflight(false, client, {token: id})
},
'preflight for x-print should be cached')

test(function() {
    var time = new Date().getTime()
    var client = new XMLHttpRequest()

    var id = did_preflight(true, client, {extra:'max_age=0'})
    did_preflight(true, client, {extra:'max_age=0', token: id})
},
'age = 0, should not be cached')

test(function() {
    var time = new Date().getTime()
    var client = new XMLHttpRequest()

    var id = did_preflight(true, client, {extra:'max_age=-1'})
    did_preflight(true, client, {extra:'max_age=-1', token: id})
},
'age = -1, should not be cached');

(function() {
    var test = async_test("preflight first request, second from cache, wait, third should preflight again", { timeout: 6000 }),
        time = new Date().getTime(),
        dothing = function (url, msg, set_request, func) {
            client = new XMLHttpRequest(),
            client.open('GET', url, true)
            if (set_request)
                client.setRequestHeader('x-print', msg)
            client.onload = test.step_func(function() {
                assert_equals(client.response, msg, "response " + url)
                if (func)
                    test.step(func)
            })
            client.onerror = test.step_func(function(e) {
                assert_unreached("Got unexpected error event on the XHR object")
            })
            client.send()
        }

    var token1 = token();
    test.step(function() {
        /* First cycle, gets x-print into the cache, with timeout 1 */
        var request_url = CROSSDOMAIN + 'resources/preflight.py?max_age=1&token=' + token1;
        dothing(request_url,
        'first', true, function() {
            test = test;

            /* Check if we did a preflight like we expected */
            dothing('resources/preflight.py?check&1&token=' + token1,
            '1', false, function() {
                test = test;
                dothing(request_url,
                'second', true, function() {
                    test = test;

                    /* Check that we didn't do a preflight (hasn't gone 1 second yet) */
                    dothing('resources/preflight.py?check&2&token=' + token1,
                    '0', false, function() {
                        test = test;

                        /* Wait until the preflight cache age is old (and thus cleared) */
                        test.step_timeout(() => {
                            dothing(request_url,
                            'third', true, function() {
                                test = test;

                                /* Expect that we did indeed do a preflight */
                                dothing('resources/preflight.py?check&3&token=' + token1,
                                '1', false, function() {
                                    test.done()
                                })
                            })
                        }, 1500)
                    })
                })
            })
        })
    })
})();

</script>
back to top