<!DOCTYPE HTML>
<html>
 <head>
  <title>WebStorage Test: StorageEvent - StorageEventInit with null value</title>
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
 </head>
 <body>
    <h1>event_Constructor</h1>
    <div id="log"></div>
    <script>
        async_test(function(t) {
            function onStorageEvent(event) {
                assert_equals(event.type, 'storage', 'type');
                assert_equals(event.key, null, 'key');
                assert_equals(event.oldValue, null, 'oldValue');
                assert_equals(event.newValue, null, 'newValue');
                assert_equals(event.url, 'null', 'url');
                assert_equals(event.storageArea, null, 'storageArea');
                t.done();
            }

            window.addEventListener('storage', t.step_func(onStorageEvent), false);
            var event = new StorageEvent('storage', {
                key: null,
                oldValue: null,
                newValue: null,
                url: null
            });
            window.dispatchEvent(event);
        }, "StorageEvent constructor and nulls - Construct StorageEvent with StorageEventInit.");
    </script>
 </body>
</html>
