From fc8f89e1577a9a368f903e17535b32cbb22b6911 Mon Sep 17 00:00:00 2001 From: Muki Kiboigo Date: Thu, 13 Aug 2026 08:56:01 -0700 Subject: [PATCH] use URL.isSameOrigin in Frame.isSameOrigin --- src/browser/Frame.zig | 10 +--------- src/browser/URL.zig | 4 ++-- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/browser/Frame.zig b/src/browser/Frame.zig index aa0c2ece0..31503c01a 100644 --- a/src/browser/Frame.zig +++ b/src/browser/Frame.zig @@ -638,15 +638,7 @@ pub fn getPinnedArena(self: *Frame, size_or_bucket: anytype, debug: []const u8) pub fn isSameOrigin(self: *const Frame, url: [:0]const u8) bool { const current_origin = self.origin orelse return false; - - // fastpath - if (!std.mem.startsWith(u8, url, current_origin)) { - return false; - } - - // Starting here, at least protocols are equals. - // Compare hosts (domain:port) strictly - return std.mem.eql(u8, URL.getHost(url), URL.getHost(current_origin)); + return URL.isSameOrigin(url, current_origin); } pub fn navigate(self: *Frame, request_url: [:0]const u8, opts: NavigateOpts) !void { diff --git a/src/browser/URL.zig b/src/browser/URL.zig index 3a2f0d439..c0e9cdf71 100644 --- a/src/browser/URL.zig +++ b/src/browser/URL.zig @@ -215,7 +215,7 @@ pub fn getPathname(raw: [:0]const u8) []const u8 { return raw[path_start..query_or_hash_start]; } -pub fn getProtocol(raw: [:0]const u8) []const u8 { +pub fn getProtocol(raw: []const u8) []const u8 { const pos = std.mem.indexOfScalarPos(u8, raw, 0, ':') orelse return ""; return raw[0 .. pos + 1]; } @@ -341,7 +341,7 @@ pub fn getOrigin(allocator: Allocator, raw: [:0]const u8) !?[]const u8 { return raw[0..authority_end]; } -pub fn isSameOrigin(url: [:0]const u8, origin: [:0]const u8) bool { +pub fn isSameOrigin(url: []const u8, origin: []const u8) bool { return std.mem.eql(u8, getProtocol(url), getProtocol(origin)) and std.mem.eql(u8, getHost(url), getHost(origin)); }