mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-12-16 16:28:58 +00:00
Merge pull request #1049 from lightpanda-io/netsurf_event_errors
Some checks failed
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
Some checks failed
e2e-test / zig build release (push) Has been cancelled
e2e-test / demo-scripts (push) Has been cancelled
e2e-test / cdp-and-hyperfine-bench (push) Has been cancelled
e2e-test / perf-fmt (push) Has been cancelled
zig-test / zig build dev (push) Has been cancelled
zig-test / browser fetch (push) Has been cancelled
zig-test / zig test (push) Has been cancelled
zig-test / perf-fmt (push) Has been cancelled
nightly build / build-linux-x86_64 (push) Has been cancelled
nightly build / build-linux-aarch64 (push) Has been cancelled
nightly build / build-macos-aarch64 (push) Has been cancelled
nightly build / build-macos-x86_64 (push) Has been cancelled
wpt / web platform tests json output (push) Has been cancelled
wpt / perf-fmt (push) Has been cancelled
Remove unnecessary error handling from non-erroring netsurf event fun…
This commit is contained in:
@@ -649,10 +649,7 @@ const Script = struct {
|
|||||||
defer parser.eventDestroy(loadevt);
|
defer parser.eventDestroy(loadevt);
|
||||||
|
|
||||||
var result: Env.Function.Result = undefined;
|
var result: Env.Function.Result = undefined;
|
||||||
const iface = Event.toInterface(loadevt) catch |err| {
|
const iface = Event.toInterface(loadevt);
|
||||||
log.err(.browser, "SM event interface", .{ .err = err });
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
f.tryCall(void, .{iface}, &result) catch {
|
f.tryCall(void, .{iface}, &result) catch {
|
||||||
log.warn(.user_script, "script callback", .{
|
log.warn(.user_script, "script callback", .{
|
||||||
.url = self.url,
|
.url = self.url,
|
||||||
|
|||||||
@@ -252,7 +252,7 @@ pub const MessageEvent = struct {
|
|||||||
const event = try parser.eventCreate();
|
const event = try parser.eventCreate();
|
||||||
defer parser.eventDestroy(event);
|
defer parser.eventDestroy(event);
|
||||||
try parser.eventInit(event, "message", .{});
|
try parser.eventInit(event, "message", .{});
|
||||||
try parser.eventSetInternalType(event, .message_event);
|
parser.eventSetInternalType(event, .message_event);
|
||||||
|
|
||||||
return .{
|
return .{
|
||||||
.proto = event.*,
|
.proto = event.*,
|
||||||
|
|||||||
@@ -278,7 +278,7 @@ const Observer = struct {
|
|||||||
var mutation_observer = self.mutation_observer;
|
var mutation_observer = self.mutation_observer;
|
||||||
|
|
||||||
const node = blk: {
|
const node = blk: {
|
||||||
const event_target = try parser.eventTarget(event) orelse return;
|
const event_target = parser.eventTarget(event) orelse return;
|
||||||
break :blk parser.eventTargetToNode(event_target);
|
break :blk parser.eventTargetToNode(event_target);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -64,8 +64,8 @@ pub const Event = struct {
|
|||||||
pub const _AT_TARGET = 2;
|
pub const _AT_TARGET = 2;
|
||||||
pub const _BUBBLING_PHASE = 3;
|
pub const _BUBBLING_PHASE = 3;
|
||||||
|
|
||||||
pub fn toInterface(evt: *parser.Event) !Union {
|
pub fn toInterface(evt: *parser.Event) Union {
|
||||||
return switch (try parser.eventGetInternalType(evt)) {
|
return switch (parser.eventGetInternalType(evt)) {
|
||||||
.event, .abort_signal, .xhr_event => .{ .Event = evt },
|
.event, .abort_signal, .xhr_event => .{ .Event = evt },
|
||||||
.custom_event => .{ .CustomEvent = @as(*CustomEvent, @ptrCast(evt)).* },
|
.custom_event => .{ .CustomEvent = @as(*CustomEvent, @ptrCast(evt)).* },
|
||||||
.progress_event => .{ .ProgressEvent = @as(*ProgressEvent, @ptrCast(evt)).* },
|
.progress_event => .{ .ProgressEvent = @as(*ProgressEvent, @ptrCast(evt)).* },
|
||||||
@@ -89,41 +89,41 @@ pub const Event = struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_target(self: *parser.Event, page: *Page) !?EventTargetUnion {
|
pub fn get_target(self: *parser.Event, page: *Page) !?EventTargetUnion {
|
||||||
const et = try parser.eventTarget(self);
|
const et = parser.eventTarget(self);
|
||||||
if (et == null) return null;
|
if (et == null) return null;
|
||||||
return try EventTarget.toInterface(et.?, page);
|
return try EventTarget.toInterface(et.?, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_currentTarget(self: *parser.Event, page: *Page) !?EventTargetUnion {
|
pub fn get_currentTarget(self: *parser.Event, page: *Page) !?EventTargetUnion {
|
||||||
const et = try parser.eventCurrentTarget(self);
|
const et = parser.eventCurrentTarget(self);
|
||||||
if (et == null) return null;
|
if (et == null) return null;
|
||||||
return try EventTarget.toInterface(et.?, page);
|
return try EventTarget.toInterface(et.?, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_eventPhase(self: *parser.Event) !u8 {
|
pub fn get_eventPhase(self: *parser.Event) u8 {
|
||||||
return try parser.eventPhase(self);
|
return parser.eventPhase(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_bubbles(self: *parser.Event) !bool {
|
pub fn get_bubbles(self: *parser.Event) bool {
|
||||||
return try parser.eventBubbles(self);
|
return parser.eventBubbles(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_cancelable(self: *parser.Event) !bool {
|
pub fn get_cancelable(self: *parser.Event) bool {
|
||||||
return try parser.eventCancelable(self);
|
return parser.eventCancelable(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_defaultPrevented(self: *parser.Event) !bool {
|
pub fn get_defaultPrevented(self: *parser.Event) bool {
|
||||||
return try parser.eventDefaultPrevented(self);
|
return parser.eventDefaultPrevented(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_isTrusted(self: *parser.Event) !bool {
|
pub fn get_isTrusted(self: *parser.Event) bool {
|
||||||
return try parser.eventIsTrusted(self);
|
return parser.eventIsTrusted(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Even though this is supposed to to provide microsecond resolution, browser
|
// Even though this is supposed to to provide microsecond resolution, browser
|
||||||
// return coarser values to protect against fingerprinting. libdom returns
|
// return coarser values to protect against fingerprinting. libdom returns
|
||||||
// seconds, which is good enough.
|
// seconds, which is good enough.
|
||||||
pub fn get_timeStamp(self: *parser.Event) !u64 {
|
pub fn get_timeStamp(self: *parser.Event) u64 {
|
||||||
return parser.eventTimestamp(self);
|
return parser.eventTimestamp(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,19 +143,19 @@ pub const Event = struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn _stopPropagation(self: *parser.Event) !void {
|
pub fn _stopPropagation(self: *parser.Event) !void {
|
||||||
return try parser.eventStopPropagation(self);
|
return parser.eventStopPropagation(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn _stopImmediatePropagation(self: *parser.Event) !void {
|
pub fn _stopImmediatePropagation(self: *parser.Event) !void {
|
||||||
return try parser.eventStopImmediatePropagation(self);
|
return parser.eventStopImmediatePropagation(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn _preventDefault(self: *parser.Event) !void {
|
pub fn _preventDefault(self: *parser.Event) !void {
|
||||||
return try parser.eventPreventDefault(self);
|
return parser.eventPreventDefault(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn _composedPath(self: *parser.Event, page: *Page) ![]const EventTargetUnion {
|
pub fn _composedPath(self: *parser.Event, page: *Page) ![]const EventTargetUnion {
|
||||||
const et_ = try parser.eventTarget(self);
|
const et_ = parser.eventTarget(self);
|
||||||
const et = et_ orelse return &.{};
|
const et = et_ orelse return &.{};
|
||||||
|
|
||||||
var node: ?*parser.Node = switch (try parser.eventTargetInternalType(et)) {
|
var node: ?*parser.Node = switch (try parser.eventTargetInternalType(et)) {
|
||||||
@@ -326,11 +326,7 @@ pub const EventHandler = struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn handle(node: *parser.EventNode, event: *parser.Event) void {
|
fn handle(node: *parser.EventNode, event: *parser.Event) void {
|
||||||
const ievent = Event.toInterface(event) catch |err| {
|
const ievent = Event.toInterface(event);
|
||||||
log.err(.app, "toInterface error", .{ .err = err });
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
|
|
||||||
const self: *EventHandler = @fieldParentPtr("node", node);
|
const self: *EventHandler = @fieldParentPtr("node", node);
|
||||||
var result: Function.Result = undefined;
|
var result: Function.Result = undefined;
|
||||||
self.callback.tryCall(void, .{ievent}, &result) catch {
|
self.callback.tryCall(void, .{ievent}, &result) catch {
|
||||||
@@ -342,7 +338,7 @@ pub const EventHandler = struct {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (self.once) {
|
if (self.once) {
|
||||||
const target = (parser.eventTarget(event) catch return).?;
|
const target = parser.eventTarget(event).?;
|
||||||
const typ = parser.eventType(event) catch return;
|
const typ = parser.eventType(event) catch return;
|
||||||
parser.eventTargetRemoveEventListener(
|
parser.eventTargetRemoveEventListener(
|
||||||
target,
|
target,
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ const std = @import("std");
|
|||||||
const log = @import("../../log.zig");
|
const log = @import("../../log.zig");
|
||||||
const builtin = @import("builtin");
|
const builtin = @import("builtin");
|
||||||
|
|
||||||
const netsurf = @import("../netsurf.zig");
|
const parser = @import("../netsurf.zig");
|
||||||
const Event = @import("event.zig").Event;
|
const Event = @import("event.zig").Event;
|
||||||
const JsObject = @import("../env.zig").JsObject;
|
const JsObject = @import("../env.zig").JsObject;
|
||||||
|
|
||||||
@@ -30,13 +30,13 @@ const UIEvent = Event;
|
|||||||
|
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent
|
// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent
|
||||||
pub const KeyboardEvent = struct {
|
pub const KeyboardEvent = struct {
|
||||||
pub const Self = netsurf.KeyboardEvent;
|
pub const Self = parser.KeyboardEvent;
|
||||||
pub const prototype = *UIEvent;
|
pub const prototype = *UIEvent;
|
||||||
|
|
||||||
pub const ConstructorOptions = struct {
|
pub const ConstructorOptions = struct {
|
||||||
key: []const u8 = "",
|
key: []const u8 = "",
|
||||||
code: []const u8 = "",
|
code: []const u8 = "",
|
||||||
location: netsurf.KeyboardEventOpts.LocationCode = .standard,
|
location: parser.KeyboardEventOpts.LocationCode = .standard,
|
||||||
repeat: bool = false,
|
repeat: bool = false,
|
||||||
isComposing: bool = false,
|
isComposing: bool = false,
|
||||||
// Currently not supported but we take as argument.
|
// Currently not supported but we take as argument.
|
||||||
@@ -51,13 +51,13 @@ pub const KeyboardEvent = struct {
|
|||||||
metaKey: bool = false,
|
metaKey: bool = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn constructor(event_type: []const u8, maybe_options: ?ConstructorOptions) !*netsurf.KeyboardEvent {
|
pub fn constructor(event_type: []const u8, maybe_options: ?ConstructorOptions) !*parser.KeyboardEvent {
|
||||||
const options: ConstructorOptions = maybe_options orelse .{};
|
const options: ConstructorOptions = maybe_options orelse .{};
|
||||||
|
|
||||||
var event = try netsurf.keyboardEventCreate();
|
var event = try parser.keyboardEventCreate();
|
||||||
try netsurf.eventSetInternalType(@ptrCast(&event), .keyboard_event);
|
parser.eventSetInternalType(@ptrCast(&event), .keyboard_event);
|
||||||
|
|
||||||
try netsurf.keyboardEventInit(
|
try parser.keyboardEventInit(
|
||||||
event,
|
event,
|
||||||
event_type,
|
event_type,
|
||||||
.{
|
.{
|
||||||
@@ -122,19 +122,19 @@ pub const KeyboardEvent = struct {
|
|||||||
// Getters.
|
// Getters.
|
||||||
|
|
||||||
pub fn get_altKey(self: *Self) bool {
|
pub fn get_altKey(self: *Self) bool {
|
||||||
return netsurf.keyboardEventKeyIsSet(self, .alt);
|
return parser.keyboardEventKeyIsSet(self, .alt);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_ctrlKey(self: *Self) bool {
|
pub fn get_ctrlKey(self: *Self) bool {
|
||||||
return netsurf.keyboardEventKeyIsSet(self, .ctrl);
|
return parser.keyboardEventKeyIsSet(self, .ctrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_metaKey(self: *Self) bool {
|
pub fn get_metaKey(self: *Self) bool {
|
||||||
return netsurf.keyboardEventKeyIsSet(self, .meta);
|
return parser.keyboardEventKeyIsSet(self, .meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_shiftKey(self: *Self) bool {
|
pub fn get_shiftKey(self: *Self) bool {
|
||||||
return netsurf.keyboardEventKeyIsSet(self, .shift);
|
return parser.keyboardEventKeyIsSet(self, .shift);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_isComposing(self: *Self) bool {
|
pub fn get_isComposing(self: *Self) bool {
|
||||||
@@ -146,7 +146,7 @@ pub const KeyboardEvent = struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_key(self: *Self) ![]const u8 {
|
pub fn get_key(self: *Self) ![]const u8 {
|
||||||
return netsurf.keyboardEventGetKey(self);
|
return parser.keyboardEventGetKey(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_repeat(self: *Self) bool {
|
pub fn get_repeat(self: *Self) bool {
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ pub const MouseEvent = struct {
|
|||||||
const opts = opts_ orelse MouseEventInit{};
|
const opts = opts_ orelse MouseEventInit{};
|
||||||
|
|
||||||
var mouse_event = try parser.mouseEventCreate();
|
var mouse_event = try parser.mouseEventCreate();
|
||||||
try parser.eventSetInternalType(@ptrCast(&mouse_event), .mouse_event);
|
parser.eventSetInternalType(@ptrCast(&mouse_event), .mouse_event);
|
||||||
|
|
||||||
try parser.mouseEventInit(mouse_event, event_type, .{
|
try parser.mouseEventInit(mouse_event, event_type, .{
|
||||||
.x = opts.clientX,
|
.x = opts.clientX,
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ pub const AbortSignal = struct {
|
|||||||
self.reason = reason_ orelse DEFAULT_REASON;
|
self.reason = reason_ orelse DEFAULT_REASON;
|
||||||
|
|
||||||
const abort_event = try parser.eventCreate();
|
const abort_event = try parser.eventCreate();
|
||||||
try parser.eventSetInternalType(abort_event, .abort_signal);
|
parser.eventSetInternalType(abort_event, .abort_signal);
|
||||||
|
|
||||||
defer parser.eventDestroy(abort_event);
|
defer parser.eventDestroy(abort_event);
|
||||||
try parser.eventInit(abort_event, "abort", .{});
|
try parser.eventInit(abort_event, "abort", .{});
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ pub const ErrorEvent = struct {
|
|||||||
const event = try parser.eventCreate();
|
const event = try parser.eventCreate();
|
||||||
defer parser.eventDestroy(event);
|
defer parser.eventDestroy(event);
|
||||||
try parser.eventInit(event, event_type, .{});
|
try parser.eventInit(event, event_type, .{});
|
||||||
try parser.eventSetInternalType(event, .event);
|
parser.eventSetInternalType(event, .event);
|
||||||
|
|
||||||
const o = opts orelse ErrorEventInit{};
|
const o = opts orelse ErrorEventInit{};
|
||||||
|
|
||||||
|
|||||||
@@ -456,87 +456,87 @@ pub fn eventType(evt: *Event) ![]const u8 {
|
|||||||
return strToData(s.?);
|
return strToData(s.?);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventTarget(evt: *Event) !?*EventTarget {
|
pub fn eventTarget(evt: *Event) ?*EventTarget {
|
||||||
var et: ?*EventTarget = null;
|
var et: ?*EventTarget = null;
|
||||||
const err = c._dom_event_get_target(evt, &et);
|
const err = c._dom_event_get_target(evt, &et);
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
return et;
|
return et;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventCurrentTarget(evt: *Event) !?*EventTarget {
|
pub fn eventCurrentTarget(evt: *Event) ?*EventTarget {
|
||||||
var et: ?*EventTarget = null;
|
var et: ?*EventTarget = null;
|
||||||
const err = c._dom_event_get_current_target(evt, &et);
|
const err = c._dom_event_get_current_target(evt, &et);
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
return et;
|
return et;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventPhase(evt: *Event) !u8 {
|
pub fn eventPhase(evt: *Event) u8 {
|
||||||
var phase: c.dom_event_flow_phase = undefined;
|
var phase: c.dom_event_flow_phase = undefined;
|
||||||
const err = c._dom_event_get_event_phase(evt, &phase);
|
const err = c._dom_event_get_event_phase(evt, &phase);
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
return @as(u8, @intCast(phase));
|
return @as(u8, @intCast(phase));
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventBubbles(evt: *Event) !bool {
|
pub fn eventBubbles(evt: *Event) bool {
|
||||||
var res: bool = undefined;
|
var res: bool = undefined;
|
||||||
const err = c._dom_event_get_bubbles(evt, &res);
|
const err = c._dom_event_get_bubbles(evt, &res);
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventCancelable(evt: *Event) !bool {
|
pub fn eventCancelable(evt: *Event) bool {
|
||||||
var res: bool = undefined;
|
var res: bool = undefined;
|
||||||
const err = c._dom_event_get_cancelable(evt, &res);
|
const err = c._dom_event_get_cancelable(evt, &res);
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventDefaultPrevented(evt: *Event) !bool {
|
pub fn eventDefaultPrevented(evt: *Event) bool {
|
||||||
var res: bool = undefined;
|
var res: bool = undefined;
|
||||||
const err = c._dom_event_is_default_prevented(evt, &res);
|
const err = c._dom_event_is_default_prevented(evt, &res);
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventIsTrusted(evt: *Event) !bool {
|
pub fn eventIsTrusted(evt: *Event) bool {
|
||||||
var res: bool = undefined;
|
var res: bool = undefined;
|
||||||
const err = c._dom_event_get_is_trusted(evt, &res);
|
const err = c._dom_event_get_is_trusted(evt, &res);
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventTimestamp(evt: *Event) !u64 {
|
pub fn eventTimestamp(evt: *Event) u64 {
|
||||||
var ts: u64 = 0;
|
var ts: u64 = 0;
|
||||||
const err = c._dom_event_get_timestamp(evt, &ts);
|
const err = c._dom_event_get_timestamp(evt, &ts);
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
return ts;
|
return ts;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventStopPropagation(evt: *Event) !void {
|
pub fn eventStopPropagation(evt: *Event) void {
|
||||||
const err = c._dom_event_stop_propagation(evt);
|
const err = c._dom_event_stop_propagation(evt);
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventStopImmediatePropagation(evt: *Event) !void {
|
pub fn eventStopImmediatePropagation(evt: *Event) void {
|
||||||
const err = c._dom_event_stop_immediate_propagation(evt);
|
const err = c._dom_event_stop_immediate_propagation(evt);
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventPreventDefault(evt: *Event) !void {
|
pub fn eventPreventDefault(evt: *Event) void {
|
||||||
const err = c._dom_event_prevent_default(evt);
|
const err = c._dom_event_prevent_default(evt);
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventGetInternalType(evt: *Event) !EventType {
|
pub fn eventGetInternalType(evt: *Event) EventType {
|
||||||
var res: u32 = undefined;
|
var res: u32 = undefined;
|
||||||
const err = c._dom_event_get_internal_type(evt, &res);
|
const err = c._dom_event_get_internal_type(evt, &res);
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
return @enumFromInt(res);
|
return @enumFromInt(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn eventSetInternalType(evt: *Event, internal_type: EventType) !void {
|
pub fn eventSetInternalType(evt: *Event, internal_type: EventType) void {
|
||||||
const err = c._dom_event_set_internal_type(evt, @intFromEnum(internal_type));
|
const err = c._dom_event_set_internal_type(evt, @intFromEnum(internal_type));
|
||||||
try DOMErr(err);
|
std.debug.assert(err == c.DOM_NO_ERR);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const EventType = enum(u8) {
|
pub const EventType = enum(u8) {
|
||||||
|
|||||||
@@ -881,7 +881,7 @@ pub const Page = struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn _windowClicked(self: *Page, event: *parser.Event) !void {
|
fn _windowClicked(self: *Page, event: *parser.Event) !void {
|
||||||
const target = (try parser.eventTarget(event)) orelse return;
|
const target = parser.eventTarget(event) orelse return;
|
||||||
const node = parser.eventTargetToNode(target);
|
const node = parser.eventTargetToNode(target);
|
||||||
const tag = (try parser.nodeHTMLGetTagType(node)) orelse return;
|
const tag = (try parser.nodeHTMLGetTagType(node)) orelse return;
|
||||||
switch (tag) {
|
switch (tag) {
|
||||||
@@ -958,7 +958,7 @@ pub const Page = struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn _keydownCallback(self: *Page, event: *parser.Event) !void {
|
fn _keydownCallback(self: *Page, event: *parser.Event) !void {
|
||||||
const target = (try parser.eventTarget(event)) orelse return;
|
const target = parser.eventTarget(event) orelse return;
|
||||||
const node = parser.eventTargetToNode(target);
|
const node = parser.eventTargetToNode(target);
|
||||||
const tag = (try parser.nodeHTMLGetTagType(node)) orelse return;
|
const tag = (try parser.nodeHTMLGetTagType(node)) orelse return;
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ pub const ProgressEvent = struct {
|
|||||||
const event = try parser.eventCreate();
|
const event = try parser.eventCreate();
|
||||||
defer parser.eventDestroy(event);
|
defer parser.eventDestroy(event);
|
||||||
try parser.eventInit(event, event_type, .{});
|
try parser.eventInit(event, event_type, .{});
|
||||||
try parser.eventSetInternalType(event, .progress_event);
|
parser.eventSetInternalType(event, .progress_event);
|
||||||
|
|
||||||
const o = opts orelse EventInit{};
|
const o = opts orelse EventInit{};
|
||||||
|
|
||||||
|
|||||||
@@ -273,7 +273,7 @@ pub const XMLHttpRequest = struct {
|
|||||||
// We can we defer event destroy once the event is dispatched.
|
// We can we defer event destroy once the event is dispatched.
|
||||||
defer parser.eventDestroy(evt);
|
defer parser.eventDestroy(evt);
|
||||||
|
|
||||||
try parser.eventSetInternalType(evt, .xhr_event);
|
parser.eventSetInternalType(evt, .xhr_event);
|
||||||
|
|
||||||
try parser.eventInit(evt, typ, .{ .bubbles = true, .cancelable = true });
|
try parser.eventInit(evt, typ, .{ .bubbles = true, .cancelable = true });
|
||||||
_ = try parser.eventTargetDispatchEvent(@as(*parser.EventTarget, @ptrCast(self)), evt);
|
_ = try parser.eventTargetDispatchEvent(@as(*parser.EventTarget, @ptrCast(self)), evt);
|
||||||
|
|||||||
Reference in New Issue
Block a user