<!DOCTYPE HTML>
<html>
 <head>
  <title>WebStorage Test: localStorage event - StorageEventInit</title>
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
 </head>
 <body>
    <h1>event_local_StorageEventInit</h1>
    <div id="log"></div>
    <script>
        async_test(function(t) {

            function onStorageEvent(event) {
                assert_equals(event.key, 'key');
                assert_equals(event.oldValue, 'oldValue');
                assert_equals(event.newValue, 'newValue');
                assert_equals(event.url, window.location.href);
                assert_equals(event.storageArea, window.localStorage);
                t.done();
            }

            window.addEventListener('storage', t.step_func(onStorageEvent), false);

            var event = new StorageEvent('storage', {
                key: 'key',
                oldValue: 'oldValue',
                newValue: 'newValue',
                url: window.location.href,
                storageArea: window.localStorage
            });

            window.dispatchEvent(event);
        }, "storageeventinit test - Storage event is fired due to set values for StorageEventInit.");
    </script>
 </body>
</html>
