mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-28 11:49:44 +00:00
LibWeb/HTML: Include better information in 'report an exception' event
Instead of always reporting a colno and lineno of zero try and use the values from the Error object that may be provided, falling back to the source location of the invocation if not provided. We can definitely improve the reporting even more, but this is a start! Also update this function to latest spec while we're in the area.
This commit is contained in:
parent
f388d3c88c
commit
57479c2d4b
Notes:
github-actions[bot]
2025-01-12 18:50:52 +00:00
Author: https://github.com/shannonbooth
Commit: 57479c2d4b
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3232
Reviewed-by: https://github.com/tcl3 ✅
6 changed files with 204 additions and 72 deletions
|
@ -0,0 +1,15 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
|
||||
<script>
|
||||
self.GLOBAL = {
|
||||
isWindow: function() { return true; },
|
||||
isWorker: function() { return false; },
|
||||
isShadowRealm: function() { return false; },
|
||||
};
|
||||
</script>
|
||||
<script src="../../../resources/testharness.js"></script>
|
||||
<script src="../../../resources/testharnessreport.js"></script>
|
||||
|
||||
<div id=log></div>
|
||||
<script src="../../../html/webappapis/scripting/reporterror.any.js"></script>
|
|
@ -0,0 +1,49 @@
|
|||
setup({ allow_uncaught_exception:true });
|
||||
|
||||
[
|
||||
1,
|
||||
new TypeError(),
|
||||
undefined
|
||||
].forEach(throwable => {
|
||||
test(t => {
|
||||
let happened = false;
|
||||
self.addEventListener("error", t.step_func(e => {
|
||||
assert_true(e.message !== "");
|
||||
assert_equals(e.filename, new URL("reporterror.any.js", location.href).href);
|
||||
assert_greater_than(e.lineno, 0);
|
||||
assert_greater_than(e.colno, 0);
|
||||
assert_equals(e.error, throwable);
|
||||
happened = true;
|
||||
}), { once:true });
|
||||
self.reportError(throwable);
|
||||
assert_true(happened);
|
||||
}, `self.reportError(${throwable})`);
|
||||
});
|
||||
|
||||
test(() => {
|
||||
assert_throws_js(TypeError, () => self.reportError());
|
||||
}, `self.reportError() (without arguments) throws`);
|
||||
|
||||
test(() => {
|
||||
// Workaround for https://github.com/web-platform-tests/wpt/issues/32105
|
||||
let invoked = false;
|
||||
self.reportError({
|
||||
get name() {
|
||||
invoked = true;
|
||||
assert_unreached('get name')
|
||||
},
|
||||
get message() {
|
||||
invoked = true;
|
||||
assert_unreached('get message');
|
||||
},
|
||||
get fileName() {
|
||||
invoked = true;
|
||||
assert_unreached('get fileName');
|
||||
},
|
||||
get lineNumber() {
|
||||
invoked = true;
|
||||
assert_unreached('get lineNumber');
|
||||
}
|
||||
});
|
||||
assert_false(invoked);
|
||||
}, `self.reportError() doesn't invoke getters`);
|
Loading…
Add table
Add a link
Reference in a new issue