Revision 03598e505d3e3cd46ce992b3d6f358791125b04f authored by Ben Wells on 27 March 2018, 05:42:26 UTC, committed by Chromium WPT Sync on 27 March 2018, 05:42:26 UTC
This reverts commit aeecb4f32ece14a8a294e4f9b80a5bb2278091c9.

Reason for revert: Causing lots of failures on webkit bots, e.g.:
https://ci.chromium.org/buildbot/chromium.webkit/WebKit%20Linux%20Trusty/42143

Original change's description:
> Don't adjust the NavigationTimings on redirects
>
> We adjust the timings in WebDocumentLoaderImpl::UpdateNavigation(),
> shouldn't update in each AddRedirect() (which is called in a batch
> way after all the redirects are handled in the browser process with PlzNavigate,
> adjusting timings there with current timestamp is totally wrong)
>
> R=​ksakamoto,arthursonzogni
>
> Bug: 813889
> Change-Id: I3a57d3fdf1833c300feb5ee61737b64cece0946b
> Reviewed-on: https://chromium-review.googlesource.com/974673
> Reviewed-by: Kunihiko Sakamoto <ksakamoto@chromium.org>
> Commit-Queue: Kinuko Yasuda <kinuko@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#546001}

TBR=kinuko@chromium.org,ksakamoto@chromium.org,arthursonzogni@chromium.org

Change-Id: I467ed888084ea0eda06faa903d1797fabffc47da
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 813889
Reviewed-on: https://chromium-review.googlesource.com/981912
Reviewed-by: Ben Wells <benwells@chromium.org>
Commit-Queue: Ben Wells <benwells@chromium.org>
Cr-Commit-Position: refs/heads/master@{#546025}
1 parent 8ec345b
Raw File
keyorder.htm
<!DOCTYPE html>
<!-- Submitted from TestTWF Paris -->
<meta charset="utf-8">
<title>Key sort order</title>
<link rel=help href="http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#key-construct">
<link rel=assert title="For purposes of comparison, all Arrays are greater than all DOMString, Date and float values; all DOMString values are greater than all Date and float values; and all Date values are greater than all float values. Values of type float are compared to other float values numerically. Values of type Date are compared to other Date values chronologically. Values of type DOMString are compared to other values of type DOMString by using the algorithm defined by step 4 of section 11.8.5, The Abstract Relational Comparison Algorithm, of the ECMAScript Language Specification [ECMA-262]. Values of type Array are compared to other values of type Array as follows:

1. Let A be the first Array value and B be the second Array value.
2. Let length be the lesser of A's length and B's length.
3. Let i be 0.
4. If the ith value of A is less than the ith value of B, then A is less than B. Skip the remaining steps.
5. If the ith value of A is greater than the ith value of B, then A is greater than B. Skip the remaining steps.
6. Increase i by 1.
7. If i is not equal to length, go back to step 4. Otherwise continue to next step.
8. If A's length is less than B's length, then A is less than B. If A's length is greater than B's length, then A is greater than B. Otherwise A and B are equal.">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support.js"></script>

<script>
    var global_db = createdb_for_multiple_tests();

    function keysort(desc, unsorted, expected) {
        var db,
            t = async_test("Database readback sort - " + desc, { timeout: 10000 }),
            store_name = 'store-' + Date.now() + Math.random();

        // The database test
        var open_rq = global_db.setTest(t);
        open_rq.onupgradeneeded = function(e) {
            db = e.target.result;
            var objStore = db.createObjectStore(store_name);

            for (var i = 0; i < unsorted.length; i++)
                objStore.add("value", unsorted[i]);
        };

        open_rq.onsuccess = function(e) {
            var actual_keys = [],
              rq = db.transaction(store_name)
                     .objectStore(store_name)
                     .openCursor();

            rq.onsuccess = t.step_func(function(e) {
                var cursor = e.target.result;

                if (cursor) {
                    actual_keys.push(cursor.key);
                    cursor.continue();
                }
                else {
                    assert_key_equals(actual_keys, expected, "keyorder array");
                    assert_equals(actual_keys.length, expected.length, "array length");

                    t.done();
                }
            });
        };

        // The IDBKey.cmp test
        test(function () {
            var sorted = unsorted.slice(0).sort(function(a, b) { return indexedDB.cmp(a, b)});
            assert_key_equals(sorted, expected, "sorted array");

        }, "IDBKey.cmp sorted - " + desc);
    }

    var now = new Date(),
        one_sec_ago = new Date(now - 1000),
        one_min_future = new Date(now.getTime() + (1000*60));

    keysort('String < Array',
        [ [0], "yo", "", [] ],
        [ "", "yo", [], [0] ]);

    keysort('float < String',
        [ Infinity, "yo", 0, "", 100 ],
        [ 0, 100, Infinity, "", "yo" ]);

    keysort('float < Date',
        [ now, 0, 9999999999999, -0.22 ],
        [ -0.22, 0, 9999999999999, now ]);

    keysort('float < Date < String < Array',
        [ [], "", now, [0], "-1", 0, 9999999999999, ],
        [ 0, 9999999999999, now, "", "-1", [], [0] ]);


    keysort('Date(1 sec ago) < Date(now) < Date(1 minute in future)',
        [ now, one_sec_ago, one_min_future ],
        [ one_sec_ago, now, one_min_future ]);

    keysort('-1.1 < 1 < 1.01337 < 1.013373 < 2',
        [ 1.013373, 2, 1.01337, -1.1, 1 ],
        [ -1.1, 1, 1.01337, 1.013373, 2 ]);

    keysort('-Infinity < -0.01 < 0 < Infinity',
        [ 0, -0.01, -Infinity, Infinity ],
        [ -Infinity, -0.01, 0, Infinity ]);

    keysort('"" < "a" < "ab" < "b" < "ba"',
        [ "a", "ba", "", "b", "ab" ],
        [ "", "a", "ab", "b", "ba" ]);

    keysort('Arrays',
        [ [[0]], [0], [], [0, 0], [0, [0]] ],
        [ [], [0], [0, 0], [0, [0]], [[0]] ]);

    var big_array = [], bigger_array = [];
    for (var i=0; i < 10000; i++) {
        big_array.push(i);
        bigger_array.push(i);
    }
    bigger_array.push(0);

    keysort('Array.length: 10,000 < Array.length: 10,001',
        [ bigger_array, [0, 2, 3], [0], [9], big_array ],
        [ [0], big_array, bigger_array, [0, 2, 3], [9] ]);

    keysort('Infinity inside arrays',
        [ [Infinity, 1], [Infinity, Infinity], [1, 1],
            [1, Infinity], [1, -Infinity], [-Infinity, Infinity] ],
        [ [-Infinity, Infinity], [1, -Infinity], [1, 1],
            [1, Infinity], [Infinity, 1], [Infinity, Infinity] ]);


    keysort('Test different stuff at once',
        [
          now,
          [0, []],
          "test",
          1,
          ["a", [1, [-1]]],
          ["b", "a"],
          [ 0, 2, "c"],
          ["a", [1, 2]],
          [],
          [0, [], 3],
          ["a", "b"],
          [ 1, 2 ],
          ["a", "b", "c"],
          one_sec_ago,
          [ 0, "b", "c"],
          Infinity,
          -Infinity,
          2.55,
          [ 0, now ],
          [1]
        ],
        [
          -Infinity,
          1,
          2.55,
          Infinity,
          one_sec_ago,
          now,
          "test",
          [],
          [0 ,2, "c"],
          [0, now],
          [0, "b", "c"],
          [0, []],
          [0, [], 3],
          [1],
          [1, 2],
          ["a", "b"],
          ["a", "b", "c"],
          ["a", [1, 2]],
          ["a", [1, [-1]]],
          ["b", "a"]
        ]);

</script>

<div id="log"></div>
back to top