-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Bug 1750958 [wpt PR 32449] - WebKit export of https://bugs.webkit.org…
…/show_bug.cgi?id=232387, a=testonly Automatic update from web-platform-tests WebKit export of https://bugs.webkit.org/show_bug.cgi?id=232387 (#32449) -- wpt-commits: 26926987909aaaa5ffac76adf733c5867d8f04ea wpt-pr: 32449
- Loading branch information
1 parent
11cab40
commit abf2a59
Showing
9 changed files
with
217 additions
and
43 deletions.
There are no files selected for viewing
75 changes: 75 additions & 0 deletions
75
testing/web-platform/tests/dom/events/EventListener-handleEvent-cross-realm.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8"> | ||
<title>Cross-realm EventListener throws TypeError of its associated Realm</title> | ||
<link rel="help" href="https://webidl.spec.whatwg.org/#ref-for-prepare-to-run-script"> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
|
||
<iframe name="eventListenerGlobalObject" src="resources/empty-document.html"></iframe> | ||
|
||
<script> | ||
setup({ allow_uncaught_exception: true }); | ||
|
||
test_onload(() => { | ||
const eventTarget = new EventTarget; | ||
const eventListener = new eventListenerGlobalObject.Object; | ||
|
||
eventTarget.addEventListener("foo", eventListener); | ||
assert_reports_exception(eventListenerGlobalObject.TypeError, () => { eventTarget.dispatchEvent(new Event("foo")); }); | ||
}, "EventListener is cross-realm plain object without 'handleEvent' property"); | ||
|
||
test_onload(() => { | ||
const eventTarget = new EventTarget; | ||
const eventListener = new eventListenerGlobalObject.Object; | ||
eventListener.handleEvent = {}; | ||
|
||
eventTarget.addEventListener("foo", eventListener); | ||
assert_reports_exception(eventListenerGlobalObject.TypeError, () => { eventTarget.dispatchEvent(new Event("foo")); }); | ||
}, "EventListener is cross-realm plain object with non-callable 'handleEvent' property"); | ||
|
||
test_onload(() => { | ||
const eventTarget = new EventTarget; | ||
const { proxy, revoke } = Proxy.revocable(() => {}, {}); | ||
revoke(); | ||
|
||
const eventListener = new eventListenerGlobalObject.Object; | ||
eventListener.handleEvent = proxy; | ||
|
||
eventTarget.addEventListener("foo", eventListener); | ||
assert_reports_exception(eventListenerGlobalObject.TypeError, () => { eventTarget.dispatchEvent(new Event("foo")); }); | ||
}, "EventListener is cross-realm plain object with revoked Proxy as 'handleEvent' property"); | ||
|
||
test_onload(() => { | ||
const eventTarget = new EventTarget; | ||
const { proxy, revoke } = eventListenerGlobalObject.Proxy.revocable({}, {}); | ||
revoke(); | ||
|
||
eventTarget.addEventListener("foo", proxy); | ||
assert_reports_exception(eventListenerGlobalObject.TypeError, () => { eventTarget.dispatchEvent(new Event("foo")); }); | ||
}, "EventListener is cross-realm non-callable revoked Proxy"); | ||
|
||
test_onload(() => { | ||
const eventTarget = new EventTarget; | ||
const { proxy, revoke } = eventListenerGlobalObject.Proxy.revocable(() => {}, {}); | ||
revoke(); | ||
|
||
eventTarget.addEventListener("foo", proxy); | ||
assert_reports_exception(eventListenerGlobalObject.TypeError, () => { eventTarget.dispatchEvent(new Event("foo")); }); | ||
}, "EventListener is cross-realm callable revoked Proxy"); | ||
|
||
function test_onload(fn, desc) { | ||
async_test(t => { window.addEventListener("load", t.step_func_done(fn)); }, desc); | ||
} | ||
|
||
function assert_reports_exception(expectedConstructor, fn) { | ||
let error; | ||
const onErrorHandler = event => { error = event.error; }; | ||
|
||
eventListenerGlobalObject.addEventListener("error", onErrorHandler); | ||
fn(); | ||
eventListenerGlobalObject.removeEventListener("error", onErrorHandler); | ||
|
||
assert_equals(typeof error, "object"); | ||
assert_equals(error.constructor, expectedConstructor); | ||
} | ||
</script> |
3 changes: 3 additions & 0 deletions
3
testing/web-platform/tests/dom/events/resources/empty-document.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8"> | ||
<body> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
67 changes: 53 additions & 14 deletions
67
testing/web-platform/tests/dom/traversal/TreeWalker-acceptNode-filter-cross-realm.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,60 @@ | ||
<!DOCTYPE html> | ||
<title>TreeWalker: cross-realm NodeFilter throws TypeError of current realm</title> | ||
<meta charset="utf-8"> | ||
<title>TreeWalker: cross-realm NodeFilter throws TypeError of its associated Realm</title> | ||
<link rel="help" href="https://webidl.spec.whatwg.org/#ref-for-prepare-to-run-script"> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<link rel="help" href="https://webidl.spec.whatwg.org/#call-a-user-objects-operation"> | ||
|
||
<body id="treeWalkerRoot"> | ||
<div></div> | ||
<iframe name="nodeFilterGlobalObject" src="support/empty-document.html"></iframe> | ||
|
||
<div id="treeWalkerRoot"> | ||
<div class="firstChild"></div> | ||
</div> | ||
|
||
<script> | ||
const iframe = document.createElement("iframe"); | ||
iframe.src = "support/TreeWalker-acceptNode-filter-cross-realm-subframe.html"; | ||
iframe.onload = () => { | ||
for (const testCase of iframe.contentWindow.testCases) { | ||
test(t => { | ||
assert_equals(testCase.actual.constructor, testCase.expected); | ||
}, testCase.description); | ||
} | ||
}; | ||
document.body.append(iframe); | ||
test_onload(() => { | ||
const nodeFilter = new nodeFilterGlobalObject.Object; | ||
|
||
const walker = document.createTreeWalker(treeWalkerRoot, NodeFilter.SHOW_ELEMENT, nodeFilter); | ||
assert_throws_js(nodeFilterGlobalObject.TypeError, () => { walker.firstChild(); }); | ||
}, "NodeFilter is cross-realm plain object without 'acceptNode' property"); | ||
|
||
test_onload(() => { | ||
const nodeFilter = new nodeFilterGlobalObject.Object; | ||
nodeFilter.acceptNode = {}; | ||
|
||
const walker = document.createTreeWalker(treeWalkerRoot, NodeFilter.SHOW_ELEMENT, nodeFilter); | ||
assert_throws_js(nodeFilterGlobalObject.TypeError, () => { walker.firstChild(); }); | ||
}, "NodeFilter is cross-realm plain object with non-callable 'acceptNode' property"); | ||
|
||
test_onload(() => { | ||
const { proxy, revoke } = Proxy.revocable(() => {}, {}); | ||
revoke(); | ||
|
||
const nodeFilter = new nodeFilterGlobalObject.Object; | ||
nodeFilter.acceptNode = proxy; | ||
|
||
const walker = document.createTreeWalker(treeWalkerRoot, NodeFilter.SHOW_ELEMENT, nodeFilter); | ||
assert_throws_js(nodeFilterGlobalObject.TypeError, () => { walker.firstChild(); }); | ||
}, "NodeFilter is cross-realm plain object with revoked Proxy as 'acceptNode' property"); | ||
|
||
test_onload(() => { | ||
const { proxy, revoke } = nodeFilterGlobalObject.Proxy.revocable({}, {}); | ||
revoke(); | ||
|
||
const walker = document.createTreeWalker(treeWalkerRoot, NodeFilter.SHOW_ELEMENT, proxy); | ||
assert_throws_js(nodeFilterGlobalObject.TypeError, () => { walker.firstChild(); }); | ||
}, "NodeFilter is cross-realm non-callable revoked Proxy"); | ||
|
||
test_onload(() => { | ||
const { proxy, revoke } = nodeFilterGlobalObject.Proxy.revocable(() => {}, {}); | ||
revoke(); | ||
|
||
const walker = document.createTreeWalker(treeWalkerRoot, NodeFilter.SHOW_ELEMENT, proxy); | ||
assert_throws_js(nodeFilterGlobalObject.TypeError, () => { walker.firstChild(); }); | ||
}, "NodeFilter is cross-realm callable revoked Proxy"); | ||
|
||
function test_onload(fn, desc) { | ||
async_test(t => { window.addEventListener("load", t.step_func_done(fn)); }, desc); | ||
} | ||
</script> |
22 changes: 0 additions & 22 deletions
22
...atform/tests/dom/traversal/support/TreeWalker-acceptNode-filter-cross-realm-subframe.html
This file was deleted.
Oops, something went wrong.
3 changes: 3 additions & 0 deletions
3
testing/web-platform/tests/dom/traversal/support/empty-document.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8"> | ||
<body> |
67 changes: 67 additions & 0 deletions
67
testing/web-platform/tests/domxpath/resolver-callback-interface-cross-realm.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8"> | ||
<title>Cross-realm XPathNSResolver throws TypeError of its associated Realm</title> | ||
<link rel="help" href="https://webidl.spec.whatwg.org/#ref-for-prepare-to-run-script"> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="resources/invalid_namespace_test.js"></script> | ||
|
||
<iframe name="resolverGlobalObject" src="resources/empty-document.html"></iframe> | ||
|
||
<script> | ||
setup({ allow_uncaught_exception: true }); | ||
|
||
const iframeLoaded = new Promise(resolve => { window.addEventListener("load", resolve); }); | ||
|
||
promise_test(async t => { | ||
await iframeLoaded; | ||
const resolver = new resolverGlobalObject.Object; | ||
|
||
return promise_rejects_js(t, resolverGlobalObject.TypeError, | ||
invalid_namespace_test(t, resolver, resolverGlobalObject) | ||
); | ||
}, "XPathNSResolver is cross-realm plain object without 'lookupNamespaceURI' property"); | ||
|
||
promise_test(async t => { | ||
await iframeLoaded; | ||
const resolver = new resolverGlobalObject.Object; | ||
resolver.lookupNamespaceURI = {}; | ||
|
||
return promise_rejects_js(t, resolverGlobalObject.TypeError, | ||
invalid_namespace_test(t, resolver, resolverGlobalObject) | ||
); | ||
}, "XPathNSResolver is cross-realm plain object with non-callable 'lookupNamespaceURI' property"); | ||
|
||
promise_test(async t => { | ||
await iframeLoaded; | ||
const { proxy, revoke } = Proxy.revocable(() => {}, {}); | ||
revoke(); | ||
|
||
const resolver = new resolverGlobalObject.Object; | ||
resolver.lookupNamespaceURI = proxy; | ||
|
||
return promise_rejects_js(t, resolverGlobalObject.TypeError, | ||
invalid_namespace_test(t, resolver, resolverGlobalObject) | ||
); | ||
}, "XPathNSResolver is cross-realm plain object with revoked Proxy as 'lookupNamespaceURI' property"); | ||
|
||
promise_test(async t => { | ||
await iframeLoaded; | ||
const { proxy, revoke } = resolverGlobalObject.Proxy.revocable({}, {}); | ||
revoke(); | ||
|
||
return promise_rejects_js(t, resolverGlobalObject.TypeError, | ||
invalid_namespace_test(t, proxy, resolverGlobalObject) | ||
); | ||
}, "XPathNSResolver is cross-realm non-callable revoked Proxy"); | ||
|
||
promise_test(async t => { | ||
await iframeLoaded; | ||
const { proxy, revoke } = resolverGlobalObject.Proxy.revocable(() => {}, {}); | ||
revoke(); | ||
|
||
return promise_rejects_js(t, resolverGlobalObject.TypeError, | ||
invalid_namespace_test(t, proxy, resolverGlobalObject) | ||
); | ||
}, "XPathNSResolver is cross-realm callable revoked Proxy"); | ||
</script> |
3 changes: 3 additions & 0 deletions
3
testing/web-platform/tests/domxpath/resources/empty-document.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
<!DOCTYPE html> | ||
<meta charset="utf-8"> | ||
<body> |
6 changes: 3 additions & 3 deletions
6
testing/web-platform/tests/domxpath/resources/invalid_namespace_test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters