mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-26 17:55:07 +02: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:
committed by
Tim Ledbetter
parent
f388d3c88c
commit
57479c2d4b
Notes:
github-actions[bot]
2025-01-12 18:50:52 +00:00
Author: https://github.com/shannonbooth Commit: https://github.com/LadybirdBrowser/ladybird/commit/57479c2d4b9 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3232 Reviewed-by: https://github.com/tcl3 ✅
@@ -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`);
|
||||
Reference in New Issue
Block a user