mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-03-22 04:34:44 +00:00
move *addedCallbacks to respective types
This commit is contained in:
@@ -1035,47 +1035,6 @@ pub fn iframeAddedCallback(self: *Page, iframe: *Element.Html.IFrame) !void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn linkAddedCallback(self: *Page, link: *Element.Html.Link) !void {
|
|
||||||
// if we're planning on navigating to another page, don't trigger load event.
|
|
||||||
if (self.isGoingAway()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const element = link.asElement();
|
|
||||||
// Exit if rel not set.
|
|
||||||
const rel = element.getAttributeSafe(comptime .wrap("rel")) orelse return;
|
|
||||||
// Exit if rel is not stylesheet.
|
|
||||||
if (!std.mem.eql(u8, rel, "stylesheet")) return;
|
|
||||||
// Exit if href not set.
|
|
||||||
const href = element.getAttributeSafe(comptime .wrap("href")) orelse return;
|
|
||||||
if (href.len == 0) return;
|
|
||||||
|
|
||||||
try self._to_load.append(self.arena, link._proto);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn styleAddedCallback(self: *Page, style: *Element.Html.Style) !void {
|
|
||||||
// if we're planning on navigating to another page, don't trigger load event.
|
|
||||||
if (self.isGoingAway()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try self._to_load.append(self.arena, style._proto);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn imageAddedCallback(self: *Page, image: *Element.Html.Image) !void {
|
|
||||||
// if we're planning on navigating to another page, don't trigger load event.
|
|
||||||
if (self.isGoingAway()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const element = image.asElement();
|
|
||||||
// Exit if src not set.
|
|
||||||
const src = element.getAttributeSafe(comptime .wrap("src")) orelse return;
|
|
||||||
if (src.len == 0) return;
|
|
||||||
|
|
||||||
try self._to_load.append(self.arena, image._proto);
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn domChanged(self: *Page) void {
|
pub fn domChanged(self: *Page) void {
|
||||||
self.version += 1;
|
self.version += 1;
|
||||||
|
|
||||||
@@ -2886,12 +2845,12 @@ fn nodeIsReady(self: *Page, comptime from_parser: bool, node: *Node) !void {
|
|||||||
return err;
|
return err;
|
||||||
};
|
};
|
||||||
} else if (node.is(Element.Html.Link)) |link| {
|
} else if (node.is(Element.Html.Link)) |link| {
|
||||||
self.linkAddedCallback(link) catch |err| {
|
link.linkAddedCallback(self) catch |err| {
|
||||||
log.err(.page, "page.nodeIsReady", .{ .err = err, .element = "link", .type = self._type });
|
log.err(.page, "page.nodeIsReady", .{ .err = err, .element = "link", .type = self._type });
|
||||||
return error.LinkLoadError;
|
return error.LinkLoadError;
|
||||||
};
|
};
|
||||||
} else if (node.is(Element.Html.Style)) |style| {
|
} else if (node.is(Element.Html.Style)) |style| {
|
||||||
self.styleAddedCallback(style) catch |err| {
|
style.styleAddedCallback(self) catch |err| {
|
||||||
log.err(.page, "page.nodeIsReady", .{ .err = err, .element = "style", .type = self._type });
|
log.err(.page, "page.nodeIsReady", .{ .err = err, .element = "style", .type = self._type });
|
||||||
return error.StyleLoadError;
|
return error.StyleLoadError;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ pub fn setSrc(self: *Image, value: []const u8, page: *Page) !void {
|
|||||||
const element = self.asElement();
|
const element = self.asElement();
|
||||||
try element.setAttributeSafe(comptime .wrap("src"), .wrap(value), page);
|
try element.setAttributeSafe(comptime .wrap("src"), .wrap(value), page);
|
||||||
// No need to check if `Image` is connected to DOM; this is a special case.
|
// No need to check if `Image` is connected to DOM; this is a special case.
|
||||||
return page.imageAddedCallback(self);
|
return self.imageAddedCallback(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn getAlt(self: *const Image) []const u8 {
|
pub fn getAlt(self: *const Image) []const u8 {
|
||||||
@@ -123,6 +123,21 @@ pub fn getComplete(_: *const Image) bool {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Used in `Page.nodeIsReady`.
|
||||||
|
pub fn imageAddedCallback(self: *Image, page: *Page) !void {
|
||||||
|
// if we're planning on navigating to another page, don't trigger load event.
|
||||||
|
if (page.isGoingAway()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const element = self.asElement();
|
||||||
|
// Exit if src not set.
|
||||||
|
const src = element.getAttributeSafe(comptime .wrap("src")) orelse return;
|
||||||
|
if (src.len == 0) return;
|
||||||
|
|
||||||
|
try page._to_load.append(page.arena, self._proto);
|
||||||
|
}
|
||||||
|
|
||||||
pub const JsApi = struct {
|
pub const JsApi = struct {
|
||||||
pub const bridge = js.Bridge(Image);
|
pub const bridge = js.Bridge(Image);
|
||||||
|
|
||||||
@@ -148,7 +163,7 @@ pub const JsApi = struct {
|
|||||||
pub const Build = struct {
|
pub const Build = struct {
|
||||||
pub fn created(node: *Node, page: *Page) !void {
|
pub fn created(node: *Node, page: *Page) !void {
|
||||||
const self = node.as(Image);
|
const self = node.as(Image);
|
||||||
return page.imageAddedCallback(self);
|
return self.imageAddedCallback(page);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ pub fn setHref(self: *Link, value: []const u8, page: *Page) !void {
|
|||||||
try element.setAttributeSafe(comptime .wrap("href"), .wrap(value), page);
|
try element.setAttributeSafe(comptime .wrap("href"), .wrap(value), page);
|
||||||
|
|
||||||
if (element.asNode().isConnected()) {
|
if (element.asNode().isConnected()) {
|
||||||
try page.linkAddedCallback(self);
|
try self.linkAddedCallback(page);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,6 +86,24 @@ pub fn setCrossOrigin(self: *Link, value: []const u8, page: *Page) !void {
|
|||||||
return self.asElement().setAttributeSafe(comptime .wrap("crossOrigin"), .wrap(normalized), page);
|
return self.asElement().setAttributeSafe(comptime .wrap("crossOrigin"), .wrap(normalized), page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn linkAddedCallback(self: *Link, page: *Page) !void {
|
||||||
|
// if we're planning on navigating to another page, don't trigger load event.
|
||||||
|
if (page.isGoingAway()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const element = self.asElement();
|
||||||
|
// Exit if rel not set.
|
||||||
|
const rel = element.getAttributeSafe(comptime .wrap("rel")) orelse return;
|
||||||
|
// Exit if rel is not stylesheet.
|
||||||
|
if (!std.mem.eql(u8, rel, "stylesheet")) return;
|
||||||
|
// Exit if href not set.
|
||||||
|
const href = element.getAttributeSafe(comptime .wrap("href")) orelse return;
|
||||||
|
if (href.len == 0) return;
|
||||||
|
|
||||||
|
try page._to_load.append(page.arena, self._proto);
|
||||||
|
}
|
||||||
|
|
||||||
pub const JsApi = struct {
|
pub const JsApi = struct {
|
||||||
pub const bridge = js.Bridge(Link);
|
pub const bridge = js.Bridge(Link);
|
||||||
|
|
||||||
|
|||||||
@@ -97,6 +97,15 @@ pub fn getSheet(self: *Style, page: *Page) !?*CSSStyleSheet {
|
|||||||
return sheet;
|
return sheet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn styleAddedCallback(self: *Style, page: *Page) !void {
|
||||||
|
// if we're planning on navigating to another page, don't trigger load event.
|
||||||
|
if (page.isGoingAway()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try page._to_load.append(page.arena, self._proto);
|
||||||
|
}
|
||||||
|
|
||||||
pub const JsApi = struct {
|
pub const JsApi = struct {
|
||||||
pub const bridge = js.Bridge(Style);
|
pub const bridge = js.Bridge(Style);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user