Skip to content

Commit 4302be5

Browse files
committed
browser: update urls after redirection
1 parent 8b16d0e commit 4302be5

File tree

1 file changed

+32
-18
lines changed

1 file changed

+32
-18
lines changed

src/browser/browser.zig

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -351,23 +351,7 @@ pub const Page = struct {
351351
return;
352352
}
353353

354-
// own the url
355-
self.rawuri = try arena.dupe(u8, uri);
356-
self.uri = std.Uri.parse(self.rawuri.?) catch try std.Uri.parseAfterScheme("", self.rawuri.?);
357-
358-
self.url = try URL.constructor(arena, self.rawuri.?, null);
359-
self.location.url = &self.url.?;
360-
try self.session.window.replaceLocation(&self.location);
361-
362-
// prepare origin value.
363-
var buf: std.ArrayListUnmanaged(u8) = .{};
364-
try self.uri.writeToStream(.{
365-
.scheme = true,
366-
.authority = true,
367-
}, buf.writer(arena));
368-
self.origin = buf.items;
369-
370-
// TODO handle fragment in url.
354+
self.uri = std.Uri.parse(uri) catch try std.Uri.parseAfterScheme("", uri);
371355

372356
self.session.app.telemetry.record(.{ .navigate = .{
373357
.proxy = false,
@@ -380,7 +364,37 @@ pub const Page = struct {
380364

381365
var response = try request.sendSync(.{});
382366
const header = response.header;
383-
try self.session.cookie_jar.populateFromResponse(self.uri, &header);
367+
try self.session.cookie_jar.populateFromResponse(request.uri, &header);
368+
369+
// update uri after eventual redirection
370+
var buf: std.ArrayListUnmanaged(u8) = .{};
371+
defer buf.deinit(arena);
372+
373+
buf.clearRetainingCapacity();
374+
try request.uri.writeToStream(.{
375+
.scheme = true,
376+
.authentication = true,
377+
.authority = true,
378+
.path = true,
379+
.query = true,
380+
.fragment = true,
381+
}, buf.writer(arena));
382+
self.rawuri = try buf.toOwnedSlice(arena);
383+
384+
self.uri = try std.Uri.parse(self.rawuri.?);
385+
386+
// TODO handle fragment in url.
387+
self.url = try URL.constructor(arena, self.rawuri.?, null);
388+
self.location.url = &self.url.?;
389+
try self.session.window.replaceLocation(&self.location);
390+
391+
// prepare origin value.
392+
buf.clearRetainingCapacity();
393+
try request.uri.writeToStream(.{
394+
.scheme = true,
395+
.authority = true,
396+
}, buf.writer(arena));
397+
self.origin = try buf.toOwnedSlice(arena);
384398

385399
log.info("GET {any} {d}", .{ self.uri, header.status });
386400

0 commit comments

Comments
 (0)