Revision 9f72b689165309d4b959f3dbc724f18fe9a77111 authored by Mike West on 05 April 2018, 12:29:12 UTC, committed by Chromium WPT Sync on 05 April 2018, 12:29:12 UTC
This patch adjusts the `SecureContext` IDL attribute to take an argument,
as we need to restrict the relevant bits and pieces to secure contexts
iff a specific flag is set. We'll unfortunately need to keep that in place
until and unless we decide that we can reasonably remove an enterprise
opt-out.

Intent to Deprecate/Remove: https://groups.google.com/a/chromium.org/d/msg/blink-dev/ANnafFBhReY/1Xdr53KxBAAJ
Spec bug: https://github.com/whatwg/html/issues/3440

Bug: 588931
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng
Change-Id: I5bedd2ca6f420a88ddbcff65e4223fad224ac0a7
Reviewed-on: https://chromium-review.googlesource.com/982625
Reviewed-by: Yoav Weiss <yoav@yoav.ws>
Reviewed-by: Yuki Shiino <yukishiino@chromium.org>
Reviewed-by: Hitoshi Yoshida <peria@chromium.org>
Commit-Queue: Mike West <mkwst@chromium.org>
Cr-Commit-Position: refs/heads/master@{#548391}
1 parent d725f2a
Raw File
event_setattribute.js
testStorages(function(storageString) {
    async_test(function(t) {
        assert_true(storageString in window, storageString + " exist");
        var storage = window[storageString];
        t.add_cleanup(function() { storage.clear() });

        clearStorage(storageString, t.step_func(step0));
        assert_equals(storage.length, 0, "storage.length");

        function step0(msg)
        {
            iframe.onload = t.step_func(step1);
            // Null out the existing handler eventTestHarness.js set up;
            // otherwise this test won't be testing much of anything useful.
            iframe.contentWindow.onstorage = null;
            iframe.src = "resources/event_setattribute_handler.html";
        }

        function step1(msg)
        {
            storage.setItem('FOO', 'BAR');

            runAfterNStorageEvents(t.step_func(step2), 1);
        }

        function step2(msg)
        {
            if(msg != undefined) {
                assert_unreached(msg);
            }
            assert_equals(storageEventList.length, 1);
            assert_equals(storageEventList[0].key, "FOO");
            assert_equals(storageEventList[0].oldValue, null);
            assert_equals(storageEventList[0].newValue, "BAR");

            storage.setItem('FU', 'BAR');
            storage.setItem('a', '1');
            storage.setItem('b', '2');
            storage.setItem('b', '3');

            runAfterNStorageEvents(t.step_func(step3), 5);
        }

        function step3(msg)
        {
            if(msg != undefined) {
                assert_unreached(msg);
            }
            assert_equals(storageEventList.length, 5);
            assert_equals(storageEventList[1].key, "FU");
            assert_equals(storageEventList[1].oldValue, null);
            assert_equals(storageEventList[1].newValue, "BAR");

            assert_equals(storageEventList[2].key, "a");
            assert_equals(storageEventList[2].oldValue, null);
            assert_equals(storageEventList[2].newValue, "1");

            assert_equals(storageEventList[3].key, "b");
            assert_equals(storageEventList[3].oldValue, null);
            assert_equals(storageEventList[3].newValue, "2");

            assert_equals(storageEventList[4].key, "b");
            assert_equals(storageEventList[4].oldValue, "2");
            assert_equals(storageEventList[4].newValue, "3");

            storage.removeItem('FOO');

            runAfterNStorageEvents(t.step_func(step4), 6);
        }

        function step4(msg)
        {
            if(msg != undefined) {
                assert_unreached(msg);
            }
            assert_equals(storageEventList.length, 6);
            assert_equals(storageEventList[5].key, "FOO");
            assert_equals(storageEventList[5].oldValue, "BAR");
            assert_equals(storageEventList[5].newValue, null);

            storage.removeItem('FU');

            runAfterNStorageEvents(t.step_func(step5), 7);
        }

        function step5(msg)
        {
            if(msg != undefined) {
                assert_unreached(msg);
            }
            assert_equals(storageEventList.length, 7);
            assert_equals(storageEventList[6].key, "FU");
            assert_equals(storageEventList[6].oldValue, "BAR");
            assert_equals(storageEventList[6].newValue, null);

            storage.clear();

            runAfterNStorageEvents(t.step_func(step6), 8);
        }

        function step6(msg)
        {
            if(msg != undefined) {
                assert_unreached(msg);
            }
            assert_equals(storageEventList.length, 8);
            assert_equals(storageEventList[7].key, null);
            assert_equals(storageEventList[7].oldValue, null);
            assert_equals(storageEventList[7].newValue, null);

            t.done();
        }

    }, storageString + " mutations fire StorageEvents that are caught by the event listener attached via setattribute.");
});
back to top