From 42afacf0af7a3751480d1aaa86a4bc148082a4e1 Mon Sep 17 00:00:00 2001 From: Karl Seguin Date: Mon, 16 Feb 2026 08:32:42 +0800 Subject: [PATCH] add link crossOrigin accessor --- src/browser/tests/element/html/link.html | 9 +++++++++ src/browser/webapi/element/html/Link.zig | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/browser/tests/element/html/link.html b/src/browser/tests/element/html/link.html index 25fd5430..28dc1d52 100644 --- a/src/browser/tests/element/html/link.html +++ b/src/browser/tests/element/html/link.html @@ -9,4 +9,13 @@ l2.href = '/over/9000'; testing.expectEqual('http://127.0.0.1:9582/over/9000', l2.href); + + l2.crossOrigin = 'nope'; + testing.expectEqual('anonymous', l2.crossOrigin); + + l2.crossOrigin = 'use-Credentials'; + testing.expectEqual('use-credentials', l2.crossOrigin); + + l2.crossOrigin = ''; + testing.expectEqual('anonymous', l2.crossOrigin); diff --git a/src/browser/webapi/element/html/Link.zig b/src/browser/webapi/element/html/Link.zig index 2e215bfa..0a0f8961 100644 --- a/src/browser/webapi/element/html/Link.zig +++ b/src/browser/webapi/element/html/Link.zig @@ -16,6 +16,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . +const std = @import("std"); const js = @import("../../../js/js.zig"); const Page = @import("../../../Page.zig"); @@ -68,6 +69,18 @@ pub fn setAs(self: *Link, value: []const u8, page: *Page) !void { return self.asElement().setAttributeSafe(comptime .wrap("as"), .wrap(value), page); } +pub fn getCrossOrigin(self: *const Link) ?[]const u8 { + return self.asConstElement().getAttributeSafe(comptime .wrap("crossOrigin")); +} + +pub fn setCrossOrigin(self: *Link, value: []const u8, page: *Page) !void { + var normalized: []const u8 = "anonymous"; + if (std.ascii.eqlIgnoreCase(value, "use-credentials")) { + normalized = "use-credentials"; + } + return self.asElement().setAttributeSafe(comptime .wrap("crossOrigin"), .wrap(normalized), page); +} + pub const JsApi = struct { pub const bridge = js.Bridge(Link); @@ -80,6 +93,7 @@ pub const JsApi = struct { pub const as = bridge.accessor(Link.getAs, Link.setAs, .{}); pub const rel = bridge.accessor(Link.getRel, Link.setRel, .{}); pub const href = bridge.accessor(Link.getHref, Link.setHref, .{}); + pub const crossOrigin = bridge.accessor(Link.getCrossOrigin, Link.setCrossOrigin, .{}); pub const relList = bridge.accessor(_getRelList, null, .{ .null_as_undefined = true }); fn _getRelList(self: *Link, page: *Page) !?*@import("../../collections.zig").DOMTokenList {