Commit 135e65f5 authored by rbyers's avatar rbyers Committed by Commit bot
Browse files

Update web-platform-tests

Import wpt@fed03d61ac548fb94838e0f868f75c619d9a8edb

Using update-w3c-deps in Chromium 1353ef00.

BUG=622853,622819

Review-Url: https://codereview.chromium.org/2086283003
Cr-Commit-Position: refs/heads/master@{#402318}
parent f2c441c2
......@@ -49,7 +49,7 @@ crbug.com/622898 fast/repaint/window-resize-background-image-non-fixed.html [ Ne
crbug.com/538697 [ Win7 Debug ] virtual/threaded/printing/webgl-oversized-printing.html [ Crash ]
crbug.com/538697 [ Win7 Debug ] printing/webgl-oversized-printing.html [ Crash ]
crbug.com/617152 imported/wpt/mediacapture-streams/GUM-impossible-constraint.html [ Skip ]
crbug.com/617152 imported/wpt/mediacapture-streams/GUM-impossible-constraint.https.html [ Skip ]
# Expected to fail until OffscreenCanvas can render on the gpu
crbug.com/593514 virtual/gpu/fast/canvas/OffscreenCanvas-strokeRect-in-worker.html [ Failure ]
......@@ -571,19 +571,19 @@ crbug.com/552532 [ Win10 ] plugins/tabindex.html [ Pass Crash ]
crbug.com/602110 hittesting/border-hittest-with-image-fallback.html [ Failure ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStreamTrack-end.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStreamTrack-init.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStream-audio-only.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStream-finished-add.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStream-idl.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStream-removetrack.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-audio-is-silence.https.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStreamTrack-MediaElement-disabled-video-is-black.https.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStreamTrack-end.https.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStreamTrack-init.https.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStream-audio-only.https.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStream-finished-add.https.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStream-idl.https.html [ Skip ]
crbug.com/387740 imported/wpt/mediacapture-streams/MediaStream-removetrack.https.html [ Skip ]
crbug.com/412381 imported/wpt/mediacapture-streams/GUM-empty-option-param.html [ Failure ]
crbug.com/412381 imported/wpt/mediacapture-streams/GUM-trivial-constraint.html [ Failure ]
crbug.com/412381 imported/wpt/mediacapture-streams/GUM-unknownkey-option-param.html [ Failure ]
crbug.com/412381 imported/wpt/mediacapture-streams/MediaStream-MediaElement-preload-none.html [ Pass Timeout Failure ]
crbug.com/412381 imported/wpt/mediacapture-streams/GUM-empty-option-param.https.html [ Failure ]
crbug.com/412381 imported/wpt/mediacapture-streams/GUM-trivial-constraint.https.html [ Failure ]
crbug.com/412381 imported/wpt/mediacapture-streams/GUM-unknownkey-option-param.https.html [ Failure ]
crbug.com/412381 imported/wpt/mediacapture-streams/MediaStream-MediaElement-preload-none.https.html [ Pass Timeout Failure ]
crbug.com/325673 imported/wpt/custom-elements/v0/concepts/custom-elements-type-allowed-chars-first-char.html [ Failure Timeout ]
crbug.com/325673 imported/wpt/custom-elements/v0/concepts/custom-elements-type-allowed-chars.html [ Failure Timeout ]
......@@ -1264,6 +1264,8 @@ crbug.com/612924 virtual/pointerevent/imported/wpt/pointerevents/pointerevent_to
crbug.com/612924 imported/wpt/pointerevents/pointerevent_touch-action-table-test_touch-manual.html [ Skip ]
crbug.com/612924 virtual/pointerevent/imported/wpt/pointerevents/pointerevent_touch-action-verification.html [ Skip ]
crbug.com/612924 imported/wpt/pointerevents/pointerevent_touch-action-verification.html [ Skip ]
crbug.com/612924 imported/wpt/pointerevents/pointerevent_properties_mouse-manual.html [ Skip ]
crbug.com/612924 virtual/pointerevent/imported/wpt/pointerevents/pointerevent_properties_mouse-manual.html [ Skip ]
# These testcases are incorrect, mark them as failing until they're fixed in the testsuite.
# https://lists.w3.org/Archives/Public/www-style/2016Jan/0275.html
......@@ -1564,8 +1566,8 @@ crbug.com/599115 http/tests/preload/document-write/document_write_no_preload.htm
crbug.com/601669 [ Win ] svg/as-image/svg-nested.html [ Crash ]
crbug.com/600261 imported/wpt/mediacapture-streams/GUM-deny.html [ Failure ]
crbug.com/600261 imported/wpt/mediacapture-streams/MediaStream-MediaElement-srcObject.html [ Failure ]
crbug.com/600261 imported/wpt/mediacapture-streams/GUM-deny.https.html [ Failure ]
crbug.com/600261 imported/wpt/mediacapture-streams/MediaStream-MediaElement-srcObject.https.html [ Failure ]
crbug.com/605525 [ Win ] http/tests/xmlhttprequest/redirect-cross-origin-post.html [ Failure Pass ]
......@@ -1658,6 +1660,8 @@ crbug.com/619978 fast/css/giant-stylesheet-crash.html [ Skip ]
crbug.com/622368 [ Linux Win Debug ] fast/repaint/obscured-background-no-repaint.html [ Pass Failure ]
crbug.com/622819 imported/wpt/IndexedDB/transaction-lifetime-empty.html [ Skip ]
crbug.com/621892 css3/filters/effect-brightness-clamping-hw.html [ Pass Failure ]
crbug.com/621892 css3/filters/effect-brightness-hw.html [ Pass Failure ]
crbug.com/621892 css3/filters/effect-hue-rotate-hw.html [ Pass Failure ]
......
......@@ -218,6 +218,7 @@ imported/wpt/domxpath [ Skip ]
imported/wpt/editing [ Skip ]
## Owners: jsbell@chromium.org
# imported/wpt/encoding [ Pass ]
imported/wpt/encrypted-media [ Skip ]
imported/wpt/eventsource [ Skip ]
imported/wpt/ext-xhtml-pubid [ Skip ]
imported/wpt/fetch [ Skip ]
......@@ -252,6 +253,7 @@ imported/wpt/mixed-content [ Skip ]
imported/wpt/navigation-timing [ Skip ]
imported/wpt/notifications [ Skip ]
imported/wpt/old-tests [ Skip ]
imported/wpt/orientation-event [ Skip ]
imported/wpt/page-visibility [ Skip ]
imported/wpt/performance-timeline [ Skip ]
## Owners: mustaq@chromium.org
......@@ -458,6 +460,7 @@ imported/wpt/html/browsers/browsing-the-web/history-traversal/browsing_context_n
imported/wpt/html/browsers/browsing-the-web/history-traversal/browsing_context_name_cross_origin_3.html [ Skip ]
imported/wpt/html/browsers/browsing-the-web/navigating-across-documents [ Skip ]
imported/wpt/html/browsers/browsing-the-web/unloading-documents [ Skip ]
imported/wpt/html/browsers/history/joint-session-history/joint-session-history-only-fully-active.html [ Skip ]
imported/wpt/html/browsers/history/the-history-interface/001.html [ Skip ]
imported/wpt/html/browsers/history/the-history-interface/002.html [ Skip ]
imported/wpt/html/browsers/history/the-history-interface/009.html [ Skip ]
......@@ -528,6 +531,7 @@ imported/wpt/html/editing/focus/document-level-focus-apis/document-level-apis.ht
imported/wpt/html/semantics/document-metadata/the-base-element/base_multiple.html [ Skip ]
imported/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping.html [ Skip ]
imported/wpt/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping.html [ Skip ]
imported/wpt/html/semantics/embedded-content/the-iframe-element/change_parentage.html [ Skip ]
imported/wpt/html/semantics/embedded-content/the-object-element/object-handler.html [ Skip ]
imported/wpt/html/semantics/forms/attributes-common-to-form-controls/dirname-ltr.html [ Skip ]
imported/wpt/html/semantics/forms/the-button-element/button-activate.html [ Skip ]
......@@ -573,6 +577,8 @@ imported/wpt/html/infrastructure/urls/resolving-urls [ Skip ]
imported/wpt/html/infrastructure/urls/terminology-0/multiple-base.sub.html [ Skip ]
imported/wpt/html/semantics/document-metadata/the-base-element/base_href_specified.sub.html [ Skip ]
imported/wpt/html/semantics/embedded-content/media-elements/track/track-element/cors [ Skip ]
imported/wpt/dom/events/EventListener-incumbent-global-1.sub.html [ Skip ]
imported/wpt/dom/events/EventListener-incumbent-global-2.sub.html [ Skip ]
# https://github.com/w3c/web-platform-tests/issues/1862:
# The test doesn't handle ':' after a drive letter in file: URL on Windows.
......
......@@ -5,7 +5,7 @@
<script src=/resources/testharnessreport.js></script>
<script>
test( function() {
test(function() {
var closedRange = IDBKeyRange.bound(5, 20);
assert_true(!!closedRange.includes, "IDBKeyRange has a .includes");
assert_true(closedRange.includes(7), "in range");
......@@ -17,17 +17,45 @@
"invalid key");
}, "IDBKeyRange.includes() with a closed range");
test( function() {
test(function() {
var openRange = IDBKeyRange.bound(5, 20, true, true);
assert_false(openRange.includes(5) || openRange.includes(20),
"boundary points");
}, "IDBKeyRange.includes() with an open range");
test( function() {
test(function() {
var range = IDBKeyRange.only(42);
assert_true(range.includes(42), "in range");
assert_false(range.includes(1), "below range");
assert_false(range.includes(9000), "above range");
}, "IDBKeyRange.includes() with an only range");
test(function() {
var range = IDBKeyRange.lowerBound(5);
assert_false(range.includes(4), 'value before closed lower bound');
assert_true(range.includes(5), 'value at closed lower bound');
assert_true(range.includes(6), 'value after closed lower bound');
}, "IDBKeyRange.includes() with an closed lower-bounded range");
test(function() {
var range = IDBKeyRange.lowerBound(5, true);
assert_false(range.includes(4), 'value before open lower bound');
assert_false(range.includes(5), 'value at open lower bound');
assert_true(range.includes(6), 'value after open lower bound');
}, "IDBKeyRange.includes() with an open lower-bounded range");
test(function() {
var range = IDBKeyRange.upperBound(5);
assert_true(range.includes(4), 'value before closed upper bound');
assert_true(range.includes(5), 'value at closed upper bound');
assert_false(range.includes(6), 'value after closed upper bound');
}, "IDBKeyRange.includes() with an closed upper-bounded range");
test(function() {
var range = IDBKeyRange.upperBound(5, true);
assert_true(range.includes(4), 'value before open upper bound');
assert_false(range.includes(5), 'value at open upper bound');
assert_false(range.includes(6), 'value after open upper bound');
}, "IDBKeyRange.includes() with an open upper-bounded range");
</script>
......@@ -4,31 +4,10 @@
<link rel="help" href="http://w3c.github.io/IndexedDB/#dom-idbobjectstore-createindex">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support.js"></script>
<script>
function indexeddb_test(description, upgrade_func, open_func = null) {
async_test(function(t) {
var dbname = document.location + "-" + t.name;
var del = indexedDB.deleteDatabase(dbname);
del.onerror = t.unreached_func("deleteDatabase should succeed");
var open = indexedDB.open(dbname, 1);
open.onerror = t.unreached_func("open should succeed");
open.onupgradeneeded = t.step_func(function() {
var db = open.result;
var tx = open.transaction;
upgrade_func(t, db, tx);
});
if (open_func) {
open.onsuccess = t.step_func(function() {
var db = open.result;
open_func(t, db);
});
}
}, description);
}
indexeddb_test(
"InvalidStateError(Incorrect mode) vs. TransactionInactiveError",
function(t, db, txn) {
var store = db.createObjectStore("s");
},
......@@ -41,12 +20,12 @@ indexeddb_test(
}, "Mode check should precede state check of the transaction");
t.done();
};
}
},
"InvalidStateError(Incorrect mode) vs. TransactionInactiveError"
);
var gDeletedObjectStore;
indexeddb_test(
"InvalidStateError(Deleted ObjectStore) vs. TransactionInactiveError",
function(t, db, txn) {
gDeletedObjectStore = db.createObjectStore("s");
db.deleteObjectStore("s");
......@@ -56,11 +35,12 @@ indexeddb_test(
}, "Deletion check should precede transaction-state check");
t.done();
};
}
},
null,
"InvalidStateError(Deleted ObjectStore) vs. TransactionInactiveError"
);
indexeddb_test(
"TransactionInactiveError vs. ConstraintError",
function(t, db, txn) {
var store = db.createObjectStore("s");
store.createIndex("index", "foo");
......@@ -70,11 +50,12 @@ indexeddb_test(
}, "Transaction-state check should precede index name check");
t.done();
};
}
},
null,
"TransactionInactiveError vs. ConstraintError"
);
indexeddb_test(
"ConstraintError vs. SyntaxError",
function(t, db) {
var store = db.createObjectStore("s");
store.createIndex("index", "foo");
......@@ -86,11 +67,12 @@ indexeddb_test(
["invalid key path 1", "invalid key path 2"]);
}, "Index name check should precede syntax check of the key path");
t.done();
}
},
null,
"ConstraintError vs. SyntaxError"
);
indexeddb_test(
"SyntaxError vs. InvalidAccessError",
function(t, db) {
var store = db.createObjectStore("s");
assert_throws("SyntaxError", function() {
......@@ -99,7 +81,9 @@ indexeddb_test(
{ multiEntry: true });
}, "Syntax check should precede multiEntry check of the key path");
t.done();
}
},
null,
"SyntaxError vs. InvalidAccessError"
);
</script>
......@@ -2,27 +2,9 @@
<title>IndexedDB: IDBTransaction.objectStoreNames attribute</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support.js"></script>
<script>
function indexeddb_test(upgrade_func, open_func, description) {
async_test(function(t) {
var dbname = document.location + '-' + t.name;
var del = indexedDB.deleteDatabase(dbname);
del.onerror = t.unreached_func('deleteDatabase should succeed');
var open = indexedDB.open(dbname, 1);
open.onerror = t.unreached_func('open should succeed');
open.onupgradeneeded = t.step_func(function() {
var db = open.result;
var tx = open.transaction;
upgrade_func(t, db, tx);
});
open.onsuccess = t.step_func(function() {
var db = open.result;
open_func(t, db);
});
}, description);
}
function with_stores_test(store_names, open_func, description) {
indexeddb_test(function(t, db, tx) {
store_names.forEach(function(name) {
......
......@@ -101,3 +101,23 @@ function createdb_for_multiple_tests(dbname, version) {
function assert_key_equals(actual, expected, description) {
assert_equals(indexedDB.cmp(actual, expected), 0, description);
}
function indexeddb_test(upgrade_func, open_func, description) {
async_test(function(t) {
var dbname = document.location + '-' + t.name;
var del = indexedDB.deleteDatabase(dbname);
del.onerror = t.unreached_func('deleteDatabase should succeed');
var open = indexedDB.open(dbname, 1);
open.onerror = t.unreached_func('open should succeed');
open.onupgradeneeded = t.step_func(function() {
var db = open.result;
var tx = open.transaction;
upgrade_func(t, db, tx);
});
open.onsuccess = t.step_func(function() {
var db = open.result;
if (open_func)
open_func(t, db);
});
}, description);
}
<!DOCTYPE html>
<title>IndexedDB: Commit ordering of empty transactions</title>
<script src='../../resources/testharness.js'></script>
<script src='../../resources/testharnessreport.js'></script>
<script src='support.js'></script>
<script>
// Call with a test object and array of expected values. Returns a
// function to call with each actual value. Once the expected number
// of values is seen, asserts that the value orders match and completes
// the test.
function expect(t, expected) {
var results = [];
return result => {
results.push(result);
if (results.length === expected.length) {
assert_array_equals(results, expected);
t.done();
}
};
}
indexeddb_test(
(t, db) => {
db.createObjectStore('store');
},
(t, db) => {
var saw = expect(t, ['rq1.onsuccess',
'rq2.onsuccess',
'tx1.oncomplete',
'tx2.oncomplete']);
var tx1 = db.transaction('store', 'readwrite');
tx1.onabort = t.unreached_func('transaction should commit');
tx1.oncomplete = t.step_func(() => saw('tx1.oncomplete'));
var store = tx1.objectStore('store');
var rq1 = store.put('a', 1);
rq1.onerror = t.unreached_func('put should succeed');
rq1.onsuccess = t.step_func(() => {
saw('rq1.onsuccess');
var tx2 = db.transaction('store', 'readonly');
tx2.onabort = t.unreached_func('transaction should commit');
tx2.oncomplete = t.step_func(() => saw('tx2.oncomplete'));
var rq2 = store.put('b', 2);
rq2.onsuccess = t.step_func(() => saw('rq2.onsuccess'));
rq2.onerror = t.unreached_func('request should succeed');
});
},
'Transactions without requests complete in the expected order');
indexeddb_test(
(t, db) => {
db.createObjectStore('store');
},
(t, db) => {
var saw = expect(t, ['rq1.onsuccess',
'rq2.onsuccess',
'tx1.oncomplete',
'tx2.oncomplete',
'tx3.oncomplete']);
var tx1 = db.transaction('store', 'readwrite');
tx1.onabort = t.unreached_func('transaction should commit');
tx1.oncomplete = t.step_func(() => saw('tx1.oncomplete'));
var store = tx1.objectStore('store');
var rq1 = store.put('a', 1);
rq1.onerror = t.unreached_func('put should succeed');
rq1.onsuccess = t.step_func(() => {
saw('rq1.onsuccess');
var tx2 = db.transaction('store', 'readonly');
tx2.onabort = t.unreached_func('transaction should commit');
tx2.oncomplete = t.step_func(() => saw('tx2.oncomplete'));
var tx3 = db.transaction('store', 'readonly');
tx3.onabort = t.unreached_func('transaction should commit');
tx3.oncomplete = t.step_func(() => saw('tx3.oncomplete'));
var rq2 = store.put('b', 2);
rq2.onsuccess = t.step_func(() => saw('rq2.onsuccess'));
rq2.onerror = t.unreached_func('request should succeed');
});
},
'Multiple transactions without requests complete in the expected order');
</script>
......@@ -73,9 +73,7 @@ FAIL If extends is spacer, should throw a NotSupportedError assert_throws: funct
FAIL If extends is elementnametobeunknownelement, should throw a NotSupportedError assert_throws: function "() => {
customElements.define('test-define-extend-' + name, class {}, { extends: name });
}" did not throw
FAIL If constructor.observedAttributes throws, should rethrow assert_throws: function "() => {
customElements.define('test-define-observedattributes-rethrow', C);
}" did not throw
PASS If constructor.observedAttributes throws, should rethrow
PASS If constructor.prototype throws, should rethrow
PASS If Type(constructor.prototype) is undefined, should throw a TypeError
PASS If Type(constructor.prototype) is string, should throw a TypeError
......
......@@ -164,6 +164,7 @@
test(() => {
class C {
static get observedAttributes() { throw_rethrown_error(); }
attributeChangedCallback() {}
}
assert_rethrown(() => {
customElements.define('test-define-observedattributes-rethrow', C);
......
<!DOCTYPE HTML>
<meta charset="utf-8">
<title>EventListenerOptions.passive</title>
<link rel="author" title="Rick Byers" href="mailto:rbyers@chromium.org">
<link rel="help" href="https://dom.spec.whatwg.org/#dom-addeventlisteneroptions-passive">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
var supportsPassive = false;
var query_options = {
get passive() {
supportsPassive = true;
return false;
},
get dummy() {
assert_unreached("dummy value getter invoked");
return false;
}
};
document.addEventListener('test_event', null, query_options);
assert_true(supportsPassive, "addEventListener doesn't support the passive option");
supportsPassive = false;
document.removeEventListener('test_event', null, query_options);
assert_false(supportsPassive, "removeEventListener supports the passive option when it should not");
}, "Supports passive option on addEventListener only");
function testPassiveValue(optionsValue, expectedDefaultPrevented) {
var defaultPrevented = undefined;
var handler = function handler(e) {
assert_false(e.defaultPrevented, "Event prematurely marked defaultPrevented");
e.preventDefault();
defaultPrevented = e.defaultPrevented;
}
document.addEventListener('test', handler, optionsValue);
var uncanceled = document.body.dispatchEvent(new Event('test', {bubbles: true, cancelable: true}));
assert_equals(defaultPrevented, expectedDefaultPrevented, "Incorrect defaultPrevented for options: " + JSON.stringify(optionsValue));
assert_equals(uncanceled, !expectedDefaultPrevented, "Incorrect return value from dispatchEvent");
document.removeEventListener('test', handler, optionsValue);
}
test(function() {
testPassiveValue(undefined, true);
testPassiveValue({}, true);
testPassiveValue({passive: false}, true);
testPassiveValue({passive: true}, false);
testPassiveValue({passive: 0}, true);
testPassiveValue({passive: 1}, false);
}, "preventDefault should be ignored if-and-only-if the passive option is true");
function testPassiveWithOtherHandlers(optionsValue, expectedDefaultPrevented) {
var handlerInvoked1 = false;
var dummyHandler1 = function() {
handlerInvoked1 = true;
};
var handlerInvoked2 = false;
var dummyHandler2 = function() {
handlerInvoked2 = true;
};
document.addEventListener('test', dummyHandler1, {passive:true});
document.addEventListener('test', dummyHandler2);
testPassiveValue(optionsValue, expectedDefaultPrevented);
assert_true(handlerInvoked1, "Extra passive handler not invoked");
assert_true(handlerInvoked2, "Extra non-passive handler not invoked");
document.removeEventListener('test', dummyHandler1);
document.removeEventListener('test', dummyHandler2);
}
test(function() {
testPassiveWithOtherHandlers({}, true);
testPassiveWithOtherHandlers({passive: false}, true);
testPassiveWithOtherHandlers({passive: true}, false);
}, "passive behavior of one listener should be unaffeted by the presence of other listeners");
function testOptionEquivalence(optionValue1, optionValue2, expectedEquality) {
var invocationCount = 0;
var handler = function handler(e) {
invocationCount++;
}
document.addEventListener('test', handler, optionValue1);
document.addEventListener('test', handler, optionValue2);
document.body.dispatchEvent(new Event('test', {bubbles: true}));
assert_equals(invocationCount, expectedEquality ? 1 : 2, "equivalence of options " +
JSON.stringify(optionValue1) + " and " + JSON.stringify(optionValue2));
document.removeEventListener('test', handler, optionValue1);
document.removeEventListener('test', handler, optionValue2);
}
test(function() {
// Sanity check options that should be treated as distinct handlers
testOptionEquivalence({capture:true}, {capture:false, passive:false}, false);
testOptionEquivalence({capture:true}, {passive:true}, false);
// Option values that should be treated as equivalent
testOptionEquivalence({}, {passive:false}, true);
testOptionEquivalence({passive:true}, {passive:false}, true);
testOptionEquivalence(undefined, {passive:true}, true);
testOptionEquivalence({capture: true, passive: false}, {capture: true, passive: true}, true);
}, "Equivalence of option values");
</script>
......@@ -32,7 +32,7 @@ test(function() {
ev.preventDefault();
assert_equals(ev.cancelable, true, "cancelable (after)");
assert_equals(ev.defaultPrevented, true, "defaultPrevented");
}, "preventDefault() should change defaultPrevented if cancelable is false.");
}, "preventDefault() should change defaultPrevented if cancelable is true.");
test(function() {
ev.initEvent("foo", true, true);