<!DOCTYPE HTML>
<body/>
<script src="../../../../../resources/testharness.js"></script>
<script src="../../../../../resources/testharnessreport.js"></script>

<!-- This test is run with normal layout tests with passiveEventListeners
     enabled and in virtual/stable with passiveEventListeners disabled -->
<script>
test(function(t) {
    var supportsPassive = false;
    var query_function = function(e) {};
    var query_options = {
        get passive() {
            supportsPassive = true;
            return false;
        },
        get dummy() {
            assert_unreached("dummy value getter invoked");
            return false;
        }
    };

    document.addEventListener('test_event', query_function, query_options);
    assert_equals(supportsPassive, true);
    t.done();
}, "Supports Passive");
</script>
