mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-30 15:41:48 +00:00
Add more tests cases for event capture/target/bubbles phases
Signed-off-by: Francis Bouvier <francis@lightpanda.io>
This commit is contained in:
@@ -57,28 +57,83 @@ pub fn testExecFn(
|
|||||||
_: std.mem.Allocator,
|
_: std.mem.Allocator,
|
||||||
js_env: *jsruntime.Env,
|
js_env: *jsruntime.Env,
|
||||||
) anyerror!void {
|
) anyerror!void {
|
||||||
var basic = [_]Case{
|
var common = [_]Case{
|
||||||
.{ .src = "let event = new Event('myEvent')", .ex = "undefined" },
|
|
||||||
.{ .src = "let content = document.getElementById('content')", .ex = "undefined" },
|
.{ .src = "let content = document.getElementById('content')", .ex = "undefined" },
|
||||||
|
.{ .src = "let para = document.getElementById('para')", .ex = "undefined" },
|
||||||
.{ .src =
|
.{ .src =
|
||||||
\\var nb = 0;
|
\\var nb = 0; var evt; var phase; var cur;
|
||||||
\\var evt = undefined;
|
\\function cbk(event) {
|
||||||
\\var phase = undefined;
|
|
||||||
\\var cur = undefined;
|
|
||||||
\\content.addEventListener('myEvent',
|
|
||||||
\\function(event) {
|
|
||||||
\\evt = event;
|
\\evt = event;
|
||||||
\\phase = event.eventPhase;
|
\\phase = event.eventPhase;
|
||||||
\\cur = event.currentTarget;
|
\\cur = event.currentTarget;
|
||||||
\\nb ++;
|
\\nb ++;
|
||||||
\\})
|
\\}
|
||||||
, .ex = "undefined" },
|
, .ex = "undefined" },
|
||||||
.{ .src = "content.dispatchEvent(event)", .ex = "true" },
|
};
|
||||||
|
try checkCases(js_env, &common);
|
||||||
|
|
||||||
|
var basic = [_]Case{
|
||||||
|
.{ .src = "content.addEventListener('basic', cbk)", .ex = "undefined" },
|
||||||
|
.{ .src = "content.dispatchEvent(new Event('basic'))", .ex = "true" },
|
||||||
.{ .src = "nb", .ex = "1" },
|
.{ .src = "nb", .ex = "1" },
|
||||||
.{ .src = "evt instanceof Event", .ex = "true" },
|
.{ .src = "evt instanceof Event", .ex = "true" },
|
||||||
.{ .src = "evt.type", .ex = "myEvent" },
|
.{ .src = "evt.type", .ex = "basic" },
|
||||||
.{ .src = "phase", .ex = "2" },
|
.{ .src = "phase", .ex = "2" },
|
||||||
.{ .src = "cur.localName", .ex = "div" },
|
.{ .src = "cur.getAttribute('id')", .ex = "content" },
|
||||||
};
|
};
|
||||||
try checkCases(js_env, &basic);
|
try checkCases(js_env, &basic);
|
||||||
|
|
||||||
|
var basic_child = [_]Case{
|
||||||
|
.{ .src = "nb = 0; evt = undefined; phase = undefined; cur = undefined", .ex = "undefined" },
|
||||||
|
.{ .src = "para.dispatchEvent(new Event('basic'))", .ex = "true" },
|
||||||
|
.{ .src = "nb", .ex = "0" }, // handler is not called, no capture, not the target, no bubbling
|
||||||
|
.{ .src = "evt === undefined", .ex = "true" },
|
||||||
|
};
|
||||||
|
try checkCases(js_env, &basic_child);
|
||||||
|
|
||||||
|
var capture = [_]Case{
|
||||||
|
.{ .src = "nb = 0; evt = undefined; phase = undefined; cur = undefined", .ex = "undefined" },
|
||||||
|
.{ .src = "content.addEventListener('capture', cbk, true)", .ex = "undefined" },
|
||||||
|
.{ .src = "content.dispatchEvent(new Event('capture'))", .ex = "true" },
|
||||||
|
.{ .src = "nb", .ex = "1" },
|
||||||
|
.{ .src = "evt instanceof Event", .ex = "true" },
|
||||||
|
.{ .src = "evt.type", .ex = "capture" },
|
||||||
|
.{ .src = "phase", .ex = "2" },
|
||||||
|
.{ .src = "cur.getAttribute('id')", .ex = "content" },
|
||||||
|
};
|
||||||
|
try checkCases(js_env, &capture);
|
||||||
|
|
||||||
|
var capture_child = [_]Case{
|
||||||
|
.{ .src = "nb = 0; evt = undefined; phase = undefined; cur = undefined", .ex = "undefined" },
|
||||||
|
.{ .src = "para.dispatchEvent(new Event('capture'))", .ex = "true" },
|
||||||
|
.{ .src = "nb", .ex = "1" },
|
||||||
|
.{ .src = "evt instanceof Event", .ex = "true" },
|
||||||
|
.{ .src = "evt.type", .ex = "capture" },
|
||||||
|
.{ .src = "phase", .ex = "1" },
|
||||||
|
.{ .src = "cur.getAttribute('id')", .ex = "content" },
|
||||||
|
};
|
||||||
|
try checkCases(js_env, &capture_child);
|
||||||
|
|
||||||
|
var bubbles = [_]Case{
|
||||||
|
.{ .src = "nb = 0; evt = undefined; phase = undefined; cur = undefined", .ex = "undefined" },
|
||||||
|
.{ .src = "content.addEventListener('bubbles', cbk)", .ex = "undefined" },
|
||||||
|
.{ .src = "content.dispatchEvent(new Event('bubbles', {bubbles: true}))", .ex = "true" },
|
||||||
|
.{ .src = "nb", .ex = "1" },
|
||||||
|
.{ .src = "evt instanceof Event", .ex = "true" },
|
||||||
|
.{ .src = "evt.type", .ex = "bubbles" },
|
||||||
|
.{ .src = "phase", .ex = "2" },
|
||||||
|
.{ .src = "cur.getAttribute('id')", .ex = "content" },
|
||||||
|
};
|
||||||
|
try checkCases(js_env, &bubbles);
|
||||||
|
|
||||||
|
var bubbles_child = [_]Case{
|
||||||
|
.{ .src = "nb = 0; evt = undefined; phase = undefined; cur = undefined", .ex = "undefined" },
|
||||||
|
.{ .src = "para.dispatchEvent(new Event('bubbles', {bubbles: true}))", .ex = "true" },
|
||||||
|
.{ .src = "nb", .ex = "1" },
|
||||||
|
.{ .src = "evt instanceof Event", .ex = "true" },
|
||||||
|
.{ .src = "evt.type", .ex = "bubbles" },
|
||||||
|
.{ .src = "phase", .ex = "3" },
|
||||||
|
.{ .src = "cur.getAttribute('id')", .ex = "content" },
|
||||||
|
};
|
||||||
|
try checkCases(js_env, &bubbles_child);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user