mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-12 12:32:21 +00:00
LibWeb: Implement the LegacyUnforgeable attribute
Some checks are pending
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
Some checks are pending
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (macos-14, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
This fixes the frame-ancestors WPT tests from crashing when an iframe is blocked from loading. This is because it would get an undefined location.href from the cross-origin iframe, which causes a crash as it expects it to be there.
This commit is contained in:
parent
7853b757c2
commit
c7d25301d3
Notes:
github-actions[bot]
2025-03-28 00:10:01 +00:00
Author: https://github.com/Lubrsi
Commit: c7d25301d3
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3973
Reviewed-by: https://github.com/tcl3 ✅
15 changed files with 511 additions and 76 deletions
|
@ -0,0 +1,33 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="../include.js"></script>
|
||||
<script>
|
||||
test(() => {
|
||||
const unforgeableProperties = [
|
||||
"location",
|
||||
];
|
||||
|
||||
const documents = [
|
||||
document,
|
||||
new Document(),
|
||||
document.implementation.createDocument("http://www.w3.org/1999/xhtml", null, null),
|
||||
document.implementation.createDocument("http://www.w3.org/2000/svg", null, null),
|
||||
document.implementation.createDocument(null, null, null),
|
||||
document.implementation.createHTMLDocument(),
|
||||
];
|
||||
|
||||
for (const document of documents) {
|
||||
const documentPrototype = Object.getPrototypeOf(document);
|
||||
|
||||
for (const property of unforgeableProperties) {
|
||||
println(`${property} exists on document itself: ${Object.hasOwn(document, property)}`);
|
||||
println(`${property} does not exist on LocationPrototype: ${!Object.hasOwn(documentPrototype, property)}`);
|
||||
|
||||
const propertyDescriptor = Object.getOwnPropertyDescriptor(document, property);
|
||||
println(`${property} descriptor is not undefined: ${propertyDescriptor !== undefined}`);
|
||||
println(`${property} enumerable: ${propertyDescriptor.enumerable}`);
|
||||
println(`${property} configurable: ${propertyDescriptor.configurable}`);
|
||||
println(`${property} writable: ${propertyDescriptor.writable}`);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,25 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="../include.js"></script>
|
||||
<script>
|
||||
test(() => {
|
||||
const unforgeableProperties = [
|
||||
"isTrusted",
|
||||
];
|
||||
|
||||
for (const eventType of [Event, UIEvent, CustomEvent]) {
|
||||
const event = new eventType("test");
|
||||
const eventPrototype = Object.getPrototypeOf(event);
|
||||
|
||||
for (const property of unforgeableProperties) {
|
||||
println(`${property} exists on ${eventType.name} instance itself: ${Object.hasOwn(event, property)}`);
|
||||
println(`${property} does not exist on LocationPrototype: ${!Object.hasOwn(eventPrototype, property)}`);
|
||||
|
||||
const propertyDescriptor = Object.getOwnPropertyDescriptor(event, property);
|
||||
println(`${property} descriptor is not undefined: ${propertyDescriptor !== undefined}`);
|
||||
println(`${property} enumerable: ${propertyDescriptor.enumerable}`);
|
||||
println(`${property} configurable: ${propertyDescriptor.configurable}`);
|
||||
println(`${property} writable: ${propertyDescriptor.writable}`);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue