mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-03-22 04:34:44 +00:00
Merge pull request #1692 from lightpanda-io/rename_page_id_to_frame_id
Rename page.id to page._frame_id
This commit is contained in:
@@ -105,7 +105,7 @@ pub const PageRemove = struct {};
|
|||||||
|
|
||||||
pub const PageNavigate = struct {
|
pub const PageNavigate = struct {
|
||||||
req_id: u32,
|
req_id: u32,
|
||||||
page_id: u32,
|
frame_id: u32,
|
||||||
timestamp: u64,
|
timestamp: u64,
|
||||||
url: [:0]const u8,
|
url: [:0]const u8,
|
||||||
opts: Page.NavigateOpts,
|
opts: Page.NavigateOpts,
|
||||||
@@ -113,7 +113,7 @@ pub const PageNavigate = struct {
|
|||||||
|
|
||||||
pub const PageNavigated = struct {
|
pub const PageNavigated = struct {
|
||||||
req_id: u32,
|
req_id: u32,
|
||||||
page_id: u32,
|
frame_id: u32,
|
||||||
timestamp: u64,
|
timestamp: u64,
|
||||||
url: [:0]const u8,
|
url: [:0]const u8,
|
||||||
opts: Page.NavigatedOpts,
|
opts: Page.NavigatedOpts,
|
||||||
@@ -121,18 +121,18 @@ pub const PageNavigated = struct {
|
|||||||
|
|
||||||
pub const PageNetworkIdle = struct {
|
pub const PageNetworkIdle = struct {
|
||||||
req_id: u32,
|
req_id: u32,
|
||||||
page_id: u32,
|
frame_id: u32,
|
||||||
timestamp: u64,
|
timestamp: u64,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const PageNetworkAlmostIdle = struct {
|
pub const PageNetworkAlmostIdle = struct {
|
||||||
req_id: u32,
|
req_id: u32,
|
||||||
page_id: u32,
|
frame_id: u32,
|
||||||
timestamp: u64,
|
timestamp: u64,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const PageFrameCreated = struct {
|
pub const PageFrameCreated = struct {
|
||||||
page_id: u32,
|
frame_id: u32,
|
||||||
parent_id: u32,
|
parent_id: u32,
|
||||||
timestamp: u64,
|
timestamp: u64,
|
||||||
};
|
};
|
||||||
@@ -319,7 +319,7 @@ test "Notification" {
|
|||||||
|
|
||||||
// noop
|
// noop
|
||||||
notifier.dispatch(.page_navigate, &.{
|
notifier.dispatch(.page_navigate, &.{
|
||||||
.page_id = 0,
|
.frame_id = 0,
|
||||||
.req_id = 1,
|
.req_id = 1,
|
||||||
.timestamp = 4,
|
.timestamp = 4,
|
||||||
.url = undefined,
|
.url = undefined,
|
||||||
@@ -330,7 +330,7 @@ test "Notification" {
|
|||||||
|
|
||||||
try notifier.register(.page_navigate, &tc, TestClient.pageNavigate);
|
try notifier.register(.page_navigate, &tc, TestClient.pageNavigate);
|
||||||
notifier.dispatch(.page_navigate, &.{
|
notifier.dispatch(.page_navigate, &.{
|
||||||
.page_id = 0,
|
.frame_id = 0,
|
||||||
.req_id = 1,
|
.req_id = 1,
|
||||||
.timestamp = 4,
|
.timestamp = 4,
|
||||||
.url = undefined,
|
.url = undefined,
|
||||||
@@ -340,7 +340,7 @@ test "Notification" {
|
|||||||
|
|
||||||
notifier.unregisterAll(&tc);
|
notifier.unregisterAll(&tc);
|
||||||
notifier.dispatch(.page_navigate, &.{
|
notifier.dispatch(.page_navigate, &.{
|
||||||
.page_id = 0,
|
.frame_id = 0,
|
||||||
.req_id = 1,
|
.req_id = 1,
|
||||||
.timestamp = 10,
|
.timestamp = 10,
|
||||||
.url = undefined,
|
.url = undefined,
|
||||||
@@ -351,25 +351,25 @@ test "Notification" {
|
|||||||
try notifier.register(.page_navigate, &tc, TestClient.pageNavigate);
|
try notifier.register(.page_navigate, &tc, TestClient.pageNavigate);
|
||||||
try notifier.register(.page_navigated, &tc, TestClient.pageNavigated);
|
try notifier.register(.page_navigated, &tc, TestClient.pageNavigated);
|
||||||
notifier.dispatch(.page_navigate, &.{
|
notifier.dispatch(.page_navigate, &.{
|
||||||
.page_id = 0,
|
.frame_id = 0,
|
||||||
.req_id = 1,
|
.req_id = 1,
|
||||||
.timestamp = 10,
|
.timestamp = 10,
|
||||||
.url = undefined,
|
.url = undefined,
|
||||||
.opts = .{},
|
.opts = .{},
|
||||||
});
|
});
|
||||||
notifier.dispatch(.page_navigated, &.{ .page_id = 0, .req_id = 1, .timestamp = 6, .url = undefined, .opts = .{} });
|
notifier.dispatch(.page_navigated, &.{ .frame_id = 0, .req_id = 1, .timestamp = 6, .url = undefined, .opts = .{} });
|
||||||
try testing.expectEqual(14, tc.page_navigate);
|
try testing.expectEqual(14, tc.page_navigate);
|
||||||
try testing.expectEqual(6, tc.page_navigated);
|
try testing.expectEqual(6, tc.page_navigated);
|
||||||
|
|
||||||
notifier.unregisterAll(&tc);
|
notifier.unregisterAll(&tc);
|
||||||
notifier.dispatch(.page_navigate, &.{
|
notifier.dispatch(.page_navigate, &.{
|
||||||
.page_id = 0,
|
.frame_id = 0,
|
||||||
.req_id = 1,
|
.req_id = 1,
|
||||||
.timestamp = 100,
|
.timestamp = 100,
|
||||||
.url = undefined,
|
.url = undefined,
|
||||||
.opts = .{},
|
.opts = .{},
|
||||||
});
|
});
|
||||||
notifier.dispatch(.page_navigated, &.{ .page_id = 0, .req_id = 1, .timestamp = 100, .url = undefined, .opts = .{} });
|
notifier.dispatch(.page_navigated, &.{ .frame_id = 0, .req_id = 1, .timestamp = 100, .url = undefined, .opts = .{} });
|
||||||
try testing.expectEqual(14, tc.page_navigate);
|
try testing.expectEqual(14, tc.page_navigate);
|
||||||
try testing.expectEqual(6, tc.page_navigated);
|
try testing.expectEqual(6, tc.page_navigated);
|
||||||
|
|
||||||
@@ -377,27 +377,27 @@ test "Notification" {
|
|||||||
// unregister
|
// unregister
|
||||||
try notifier.register(.page_navigate, &tc, TestClient.pageNavigate);
|
try notifier.register(.page_navigate, &tc, TestClient.pageNavigate);
|
||||||
try notifier.register(.page_navigated, &tc, TestClient.pageNavigated);
|
try notifier.register(.page_navigated, &tc, TestClient.pageNavigated);
|
||||||
notifier.dispatch(.page_navigate, &.{ .page_id = 0, .req_id = 1, .timestamp = 100, .url = undefined, .opts = .{} });
|
notifier.dispatch(.page_navigate, &.{ .frame_id = 0, .req_id = 1, .timestamp = 100, .url = undefined, .opts = .{} });
|
||||||
notifier.dispatch(.page_navigated, &.{ .page_id = 0, .req_id = 1, .timestamp = 1000, .url = undefined, .opts = .{} });
|
notifier.dispatch(.page_navigated, &.{ .frame_id = 0, .req_id = 1, .timestamp = 1000, .url = undefined, .opts = .{} });
|
||||||
try testing.expectEqual(114, tc.page_navigate);
|
try testing.expectEqual(114, tc.page_navigate);
|
||||||
try testing.expectEqual(1006, tc.page_navigated);
|
try testing.expectEqual(1006, tc.page_navigated);
|
||||||
|
|
||||||
notifier.unregister(.page_navigate, &tc);
|
notifier.unregister(.page_navigate, &tc);
|
||||||
notifier.dispatch(.page_navigate, &.{ .page_id = 0, .req_id = 1, .timestamp = 100, .url = undefined, .opts = .{} });
|
notifier.dispatch(.page_navigate, &.{ .frame_id = 0, .req_id = 1, .timestamp = 100, .url = undefined, .opts = .{} });
|
||||||
notifier.dispatch(.page_navigated, &.{ .page_id = 0, .req_id = 1, .timestamp = 1000, .url = undefined, .opts = .{} });
|
notifier.dispatch(.page_navigated, &.{ .frame_id = 0, .req_id = 1, .timestamp = 1000, .url = undefined, .opts = .{} });
|
||||||
try testing.expectEqual(114, tc.page_navigate);
|
try testing.expectEqual(114, tc.page_navigate);
|
||||||
try testing.expectEqual(2006, tc.page_navigated);
|
try testing.expectEqual(2006, tc.page_navigated);
|
||||||
|
|
||||||
notifier.unregister(.page_navigated, &tc);
|
notifier.unregister(.page_navigated, &tc);
|
||||||
notifier.dispatch(.page_navigate, &.{ .page_id = 0, .req_id = 1, .timestamp = 100, .url = undefined, .opts = .{} });
|
notifier.dispatch(.page_navigate, &.{ .frame_id = 0, .req_id = 1, .timestamp = 100, .url = undefined, .opts = .{} });
|
||||||
notifier.dispatch(.page_navigated, &.{ .page_id = 0, .req_id = 1, .timestamp = 1000, .url = undefined, .opts = .{} });
|
notifier.dispatch(.page_navigated, &.{ .frame_id = 0, .req_id = 1, .timestamp = 1000, .url = undefined, .opts = .{} });
|
||||||
try testing.expectEqual(114, tc.page_navigate);
|
try testing.expectEqual(114, tc.page_navigate);
|
||||||
try testing.expectEqual(2006, tc.page_navigated);
|
try testing.expectEqual(2006, tc.page_navigated);
|
||||||
|
|
||||||
// already unregistered, try anyways
|
// already unregistered, try anyways
|
||||||
notifier.unregister(.page_navigated, &tc);
|
notifier.unregister(.page_navigated, &tc);
|
||||||
notifier.dispatch(.page_navigate, &.{ .page_id = 0, .req_id = 1, .timestamp = 100, .url = undefined, .opts = .{} });
|
notifier.dispatch(.page_navigate, &.{ .frame_id = 0, .req_id = 1, .timestamp = 100, .url = undefined, .opts = .{} });
|
||||||
notifier.dispatch(.page_navigated, &.{ .page_id = 0, .req_id = 1, .timestamp = 1000, .url = undefined, .opts = .{} });
|
notifier.dispatch(.page_navigated, &.{ .frame_id = 0, .req_id = 1, .timestamp = 1000, .url = undefined, .opts = .{} });
|
||||||
try testing.expectEqual(114, tc.page_navigate);
|
try testing.expectEqual(114, tc.page_navigate);
|
||||||
try testing.expectEqual(2006, tc.page_navigated);
|
try testing.expectEqual(2006, tc.page_navigated);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ const Page = @This();
|
|||||||
|
|
||||||
// This is the "id" of the frame. It can be re-used from page-to-page, e.g.
|
// This is the "id" of the frame. It can be re-used from page-to-page, e.g.
|
||||||
// when navigating.
|
// when navigating.
|
||||||
id: u32,
|
_frame_id: u32,
|
||||||
|
|
||||||
_session: *Session,
|
_session: *Session,
|
||||||
|
|
||||||
@@ -242,7 +242,7 @@ _type: enum { root, frame }, // only used for logs right now
|
|||||||
_req_id: u32 = 0,
|
_req_id: u32 = 0,
|
||||||
_navigated_options: ?NavigatedOpts = null,
|
_navigated_options: ?NavigatedOpts = null,
|
||||||
|
|
||||||
pub fn init(self: *Page, id: u32, session: *Session, parent: ?*Page) !void {
|
pub fn init(self: *Page, frame_id: u32, session: *Session, parent: ?*Page) !void {
|
||||||
if (comptime IS_DEBUG) {
|
if (comptime IS_DEBUG) {
|
||||||
log.debug(.page, "page.init", .{});
|
log.debug(.page, "page.init", .{});
|
||||||
}
|
}
|
||||||
@@ -262,7 +262,6 @@ pub fn init(self: *Page, id: u32, session: *Session, parent: ?*Page) !void {
|
|||||||
})).asDocument();
|
})).asDocument();
|
||||||
|
|
||||||
self.* = .{
|
self.* = .{
|
||||||
.id = id,
|
|
||||||
.js = undefined,
|
.js = undefined,
|
||||||
.parent = parent,
|
.parent = parent,
|
||||||
.arena = page_arena,
|
.arena = page_arena,
|
||||||
@@ -270,6 +269,7 @@ pub fn init(self: *Page, id: u32, session: *Session, parent: ?*Page) !void {
|
|||||||
.window = undefined,
|
.window = undefined,
|
||||||
.arena_pool = arena_pool,
|
.arena_pool = arena_pool,
|
||||||
.call_arena = call_arena,
|
.call_arena = call_arena,
|
||||||
|
._frame_id = frame_id,
|
||||||
._session = session,
|
._session = session,
|
||||||
._factory = factory,
|
._factory = factory,
|
||||||
._pending_loads = 1, // always 1 for the ScriptManager
|
._pending_loads = 1, // always 1 for the ScriptManager
|
||||||
@@ -465,7 +465,7 @@ pub fn navigate(self: *Page, request_url: [:0]const u8, opts: NavigateOpts) !voi
|
|||||||
self.documentIsComplete();
|
self.documentIsComplete();
|
||||||
|
|
||||||
session.notification.dispatch(.page_navigate, &.{
|
session.notification.dispatch(.page_navigate, &.{
|
||||||
.page_id = self.id,
|
.frame_id = self._frame_id,
|
||||||
.req_id = req_id,
|
.req_id = req_id,
|
||||||
.opts = opts,
|
.opts = opts,
|
||||||
.url = request_url,
|
.url = request_url,
|
||||||
@@ -481,7 +481,7 @@ pub fn navigate(self: *Page, request_url: [:0]const u8, opts: NavigateOpts) !voi
|
|||||||
});
|
});
|
||||||
|
|
||||||
session.notification.dispatch(.page_navigated, &.{
|
session.notification.dispatch(.page_navigated, &.{
|
||||||
.page_id = self.id,
|
.frame_id = self._frame_id,
|
||||||
.req_id = req_id,
|
.req_id = req_id,
|
||||||
.opts = .{
|
.opts = .{
|
||||||
.cdp_id = opts.cdp_id,
|
.cdp_id = opts.cdp_id,
|
||||||
@@ -517,7 +517,7 @@ pub fn navigate(self: *Page, request_url: [:0]const u8, opts: NavigateOpts) !voi
|
|||||||
// We dispatch page_navigate event before sending the request.
|
// We dispatch page_navigate event before sending the request.
|
||||||
// It ensures the event page_navigated is not dispatched before this one.
|
// It ensures the event page_navigated is not dispatched before this one.
|
||||||
session.notification.dispatch(.page_navigate, &.{
|
session.notification.dispatch(.page_navigate, &.{
|
||||||
.page_id = self.id,
|
.frame_id = self._frame_id,
|
||||||
.req_id = req_id,
|
.req_id = req_id,
|
||||||
.opts = opts,
|
.opts = opts,
|
||||||
.url = self.url,
|
.url = self.url,
|
||||||
@@ -535,7 +535,7 @@ pub fn navigate(self: *Page, request_url: [:0]const u8, opts: NavigateOpts) !voi
|
|||||||
http_client.request(.{
|
http_client.request(.{
|
||||||
.ctx = self,
|
.ctx = self,
|
||||||
.url = self.url,
|
.url = self.url,
|
||||||
.page_id = self.id,
|
.frame_id = self._frame_id,
|
||||||
.method = opts.method,
|
.method = opts.method,
|
||||||
.headers = headers,
|
.headers = headers,
|
||||||
.body = opts.body,
|
.body = opts.body,
|
||||||
@@ -712,7 +712,7 @@ pub fn documentIsComplete(self: *Page) void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
self._session.notification.dispatch(.page_navigated, &.{
|
self._session.notification.dispatch(.page_navigated, &.{
|
||||||
.page_id = self.id,
|
.frame_id = self._frame_id,
|
||||||
.req_id = self._req_id,
|
.req_id = self._req_id,
|
||||||
.opts = self._navigated_options.?,
|
.opts = self._navigated_options.?,
|
||||||
.url = self.url,
|
.url = self.url,
|
||||||
@@ -964,17 +964,17 @@ pub fn iframeAddedCallback(self: *Page, iframe: *Element.Html.IFrame) !void {
|
|||||||
iframe._executed = true;
|
iframe._executed = true;
|
||||||
|
|
||||||
const session = self._session;
|
const session = self._session;
|
||||||
const page_id = session.nextPageId();
|
const frame_id = session.nextFrameId();
|
||||||
const page_frame = try self.arena.create(Page);
|
const page_frame = try self.arena.create(Page);
|
||||||
try Page.init(page_frame, page_id, session, self);
|
try Page.init(page_frame, frame_id, session, self);
|
||||||
|
|
||||||
self._pending_loads += 1;
|
self._pending_loads += 1;
|
||||||
page_frame.iframe = iframe;
|
page_frame.iframe = iframe;
|
||||||
iframe._content_window = page_frame.window;
|
iframe._content_window = page_frame.window;
|
||||||
|
|
||||||
self._session.notification.dispatch(.page_frame_created, &.{
|
self._session.notification.dispatch(.page_frame_created, &.{
|
||||||
.page_id = page_id,
|
.frame_id = frame_id,
|
||||||
.parent_id = self.id,
|
.parent_id = self._frame_id,
|
||||||
.timestamp = timestamp(.monotonic),
|
.timestamp = timestamp(.monotonic),
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1327,8 +1327,8 @@ pub fn deliverSlotchangeEvents(self: *Page) void {
|
|||||||
pub fn notifyNetworkIdle(self: *Page) void {
|
pub fn notifyNetworkIdle(self: *Page) void {
|
||||||
lp.assert(self._notified_network_idle == .done, "Page.notifyNetworkIdle", .{});
|
lp.assert(self._notified_network_idle == .done, "Page.notifyNetworkIdle", .{});
|
||||||
self._session.notification.dispatch(.page_network_idle, &.{
|
self._session.notification.dispatch(.page_network_idle, &.{
|
||||||
.page_id = self.id,
|
|
||||||
.req_id = self._req_id,
|
.req_id = self._req_id,
|
||||||
|
.frame_id = self._frame_id,
|
||||||
.timestamp = timestamp(.monotonic),
|
.timestamp = timestamp(.monotonic),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1336,8 +1336,8 @@ pub fn notifyNetworkIdle(self: *Page) void {
|
|||||||
pub fn notifyNetworkAlmostIdle(self: *Page) void {
|
pub fn notifyNetworkAlmostIdle(self: *Page) void {
|
||||||
lp.assert(self._notified_network_almost_idle == .done, "Page.notifyNetworkAlmostIdle", .{});
|
lp.assert(self._notified_network_almost_idle == .done, "Page.notifyNetworkAlmostIdle", .{});
|
||||||
self._session.notification.dispatch(.page_network_almost_idle, &.{
|
self._session.notification.dispatch(.page_network_almost_idle, &.{
|
||||||
.page_id = self.id,
|
|
||||||
.req_id = self._req_id,
|
.req_id = self._req_id,
|
||||||
|
.frame_id = self._frame_id,
|
||||||
.timestamp = timestamp(.monotonic),
|
.timestamp = timestamp(.monotonic),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ pub fn addFromElement(self: *ScriptManager, comptime from_parser: bool, script_e
|
|||||||
.url = url,
|
.url = url,
|
||||||
.ctx = script,
|
.ctx = script,
|
||||||
.method = .GET,
|
.method = .GET,
|
||||||
.page_id = page.id,
|
.frame_id = page._frame_id,
|
||||||
.headers = try self.getHeaders(url),
|
.headers = try self.getHeaders(url),
|
||||||
.blocking = is_blocking,
|
.blocking = is_blocking,
|
||||||
.cookie_jar = &page._session.cookie_jar,
|
.cookie_jar = &page._session.cookie_jar,
|
||||||
@@ -384,7 +384,7 @@ pub fn preloadImport(self: *ScriptManager, url: [:0]const u8, referrer: []const
|
|||||||
.url = url,
|
.url = url,
|
||||||
.ctx = script,
|
.ctx = script,
|
||||||
.method = .GET,
|
.method = .GET,
|
||||||
.page_id = page.id,
|
.frame_id = page._frame_id,
|
||||||
.headers = try self.getHeaders(url),
|
.headers = try self.getHeaders(url),
|
||||||
.cookie_jar = &page._session.cookie_jar,
|
.cookie_jar = &page._session.cookie_jar,
|
||||||
.resource_type = .script,
|
.resource_type = .script,
|
||||||
@@ -487,7 +487,7 @@ pub fn getAsyncImport(self: *ScriptManager, url: [:0]const u8, cb: ImportAsync.C
|
|||||||
try self.client.request(.{
|
try self.client.request(.{
|
||||||
.url = url,
|
.url = url,
|
||||||
.method = .GET,
|
.method = .GET,
|
||||||
.page_id = page.id,
|
.frame_id = page._frame_id,
|
||||||
.headers = try self.getHeaders(url),
|
.headers = try self.getHeaders(url),
|
||||||
.ctx = script,
|
.ctx = script,
|
||||||
.resource_type = .script,
|
.resource_type = .script,
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ navigation: Navigation,
|
|||||||
|
|
||||||
page: ?Page,
|
page: ?Page,
|
||||||
|
|
||||||
page_id_gen: u32,
|
frame_id_gen: u32,
|
||||||
|
|
||||||
pub fn init(self: *Session, browser: *Browser, notification: *Notification) !void {
|
pub fn init(self: *Session, browser: *Browser, notification: *Notification) !void {
|
||||||
const allocator = browser.app.allocator;
|
const allocator = browser.app.allocator;
|
||||||
@@ -65,7 +65,7 @@ pub fn init(self: *Session, browser: *Browser, notification: *Notification) !voi
|
|||||||
.page = null,
|
.page = null,
|
||||||
.arena = arena,
|
.arena = arena,
|
||||||
.history = .{},
|
.history = .{},
|
||||||
.page_id_gen = 0,
|
.frame_id_gen = 0,
|
||||||
// The prototype (EventTarget) for Navigation is created when a Page is created.
|
// The prototype (EventTarget) for Navigation is created when a Page is created.
|
||||||
.navigation = .{ ._proto = undefined },
|
.navigation = .{ ._proto = undefined },
|
||||||
.storage_shed = .{},
|
.storage_shed = .{},
|
||||||
@@ -93,7 +93,7 @@ pub fn createPage(self: *Session) !*Page {
|
|||||||
|
|
||||||
self.page = @as(Page, undefined);
|
self.page = @as(Page, undefined);
|
||||||
const page = &self.page.?;
|
const page = &self.page.?;
|
||||||
try Page.init(page, self.nextPageId(), self, null);
|
try Page.init(page, self.nextFrameId(), self, null);
|
||||||
|
|
||||||
// Creates a new NavigationEventTarget for this page.
|
// Creates a new NavigationEventTarget for this page.
|
||||||
try self.navigation.onNewPage(page);
|
try self.navigation.onNewPage(page);
|
||||||
@@ -131,7 +131,7 @@ pub fn replacePage(self: *Session) !*Page {
|
|||||||
lp.assert(self.page != null, "Session.replacePage null page", .{});
|
lp.assert(self.page != null, "Session.replacePage null page", .{});
|
||||||
|
|
||||||
var current = self.page.?;
|
var current = self.page.?;
|
||||||
const page_id = current.id;
|
const frame_id = current._frame_id;
|
||||||
const parent = current.parent;
|
const parent = current.parent;
|
||||||
current.deinit();
|
current.deinit();
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ pub fn replacePage(self: *Session) !*Page {
|
|||||||
|
|
||||||
self.page = @as(Page, undefined);
|
self.page = @as(Page, undefined);
|
||||||
const page = &self.page.?;
|
const page = &self.page.?;
|
||||||
try Page.init(page, page_id, self, parent);
|
try Page.init(page, frame_id, self, parent);
|
||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -153,9 +153,9 @@ pub const WaitResult = enum {
|
|||||||
cdp_socket,
|
cdp_socket,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn findPage(self: *Session, id: u32) ?*Page {
|
pub fn findPage(self: *Session, frame_id: u32) ?*Page {
|
||||||
const page = self.currentPage() orelse return null;
|
const page = self.currentPage() orelse return null;
|
||||||
return if (page.id == id) page else null;
|
return if (page._frame_id == frame_id) page else null;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn wait(self: *Session, wait_ms: u32) WaitResult {
|
pub fn wait(self: *Session, wait_ms: u32) WaitResult {
|
||||||
@@ -347,20 +347,20 @@ fn processScheduledNavigation(self: *Session, current_page: *Page) !*Page {
|
|||||||
current_page._queued_navigation = null;
|
current_page._queued_navigation = null;
|
||||||
defer browser.arena_pool.release(qn.arena);
|
defer browser.arena_pool.release(qn.arena);
|
||||||
|
|
||||||
const page_id, const parent = blk: {
|
const frame_id, const parent = blk: {
|
||||||
const page = &self.page.?;
|
const page = &self.page.?;
|
||||||
const page_id = page.id;
|
const frame_id = page._frame_id;
|
||||||
const parent = page.parent;
|
const parent = page.parent;
|
||||||
|
|
||||||
browser.http_client.abort();
|
browser.http_client.abort();
|
||||||
self.removePage();
|
self.removePage();
|
||||||
|
|
||||||
break :blk .{ page_id, parent };
|
break :blk .{ frame_id, parent };
|
||||||
};
|
};
|
||||||
|
|
||||||
self.page = @as(Page, undefined);
|
self.page = @as(Page, undefined);
|
||||||
const page = &self.page.?;
|
const page = &self.page.?;
|
||||||
try Page.init(page, page_id, self, parent);
|
try Page.init(page, frame_id, self, parent);
|
||||||
|
|
||||||
// Creates a new NavigationEventTarget for this page.
|
// Creates a new NavigationEventTarget for this page.
|
||||||
try self.navigation.onNewPage(page);
|
try self.navigation.onNewPage(page);
|
||||||
@@ -377,8 +377,8 @@ fn processScheduledNavigation(self: *Session, current_page: *Page) !*Page {
|
|||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn nextPageId(self: *Session) u32 {
|
pub fn nextFrameId(self: *Session) u32 {
|
||||||
const id = self.page_id_gen +% 1;
|
const id = self.frame_id_gen +% 1;
|
||||||
self.page_id_gen = id;
|
self.frame_id_gen = id;
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,9 +72,9 @@ pub fn init(input: Input, options: ?InitOpts, page: *Page) !js.Promise {
|
|||||||
|
|
||||||
try http_client.request(.{
|
try http_client.request(.{
|
||||||
.ctx = fetch,
|
.ctx = fetch,
|
||||||
.page_id = page.id,
|
|
||||||
.url = request._url,
|
.url = request._url,
|
||||||
.method = request._method,
|
.method = request._method,
|
||||||
|
.frame_id = page._frame_id,
|
||||||
.body = request._body,
|
.body = request._body,
|
||||||
.headers = headers,
|
.headers = headers,
|
||||||
.resource_type = .fetch,
|
.resource_type = .fetch,
|
||||||
|
|||||||
@@ -223,9 +223,9 @@ pub fn send(self: *XMLHttpRequest, body_: ?[]const u8) !void {
|
|||||||
try http_client.request(.{
|
try http_client.request(.{
|
||||||
.ctx = self,
|
.ctx = self,
|
||||||
.url = self._url,
|
.url = self._url,
|
||||||
.page_id = page.id,
|
|
||||||
.method = self._method,
|
.method = self._method,
|
||||||
.headers = headers,
|
.headers = headers,
|
||||||
|
.frame_id = page._frame_id,
|
||||||
.body = self._request_body,
|
.body = self._request_body,
|
||||||
.cookie_jar = if (cookie_support) &page._session.cookie_jar else null,
|
.cookie_jar = if (cookie_support) &page._session.cookie_jar else null,
|
||||||
.resource_type = .xhr,
|
.resource_type = .xhr,
|
||||||
|
|||||||
@@ -193,7 +193,7 @@ pub fn requestIntercept(bc: anytype, intercept: *const Notification.RequestInter
|
|||||||
|
|
||||||
try bc.cdp.sendEvent("Fetch.requestPaused", .{
|
try bc.cdp.sendEvent("Fetch.requestPaused", .{
|
||||||
.requestId = &id.toInterceptId(transfer.id),
|
.requestId = &id.toInterceptId(transfer.id),
|
||||||
.frameId = &id.toFrameId(transfer.req.page_id),
|
.frameId = &id.toFrameId(transfer.req.frame_id),
|
||||||
.request = network.TransferAsRequestWriter.init(transfer),
|
.request = network.TransferAsRequestWriter.init(transfer),
|
||||||
.resourceType = switch (transfer.req.resource_type) {
|
.resourceType = switch (transfer.req.resource_type) {
|
||||||
.script => "Script",
|
.script => "Script",
|
||||||
@@ -397,7 +397,7 @@ pub fn requestAuthRequired(bc: anytype, intercept: *const Notification.RequestAu
|
|||||||
|
|
||||||
try bc.cdp.sendEvent("Fetch.authRequired", .{
|
try bc.cdp.sendEvent("Fetch.authRequired", .{
|
||||||
.requestId = &id.toInterceptId(transfer.id),
|
.requestId = &id.toInterceptId(transfer.id),
|
||||||
.frameId = &id.toFrameId(transfer.req.page_id),
|
.frameId = &id.toFrameId(transfer.req.frame_id),
|
||||||
.request = network.TransferAsRequestWriter.init(transfer),
|
.request = network.TransferAsRequestWriter.init(transfer),
|
||||||
.resourceType = switch (transfer.req.resource_type) {
|
.resourceType = switch (transfer.req.resource_type) {
|
||||||
.script => "Script",
|
.script => "Script",
|
||||||
|
|||||||
@@ -237,8 +237,8 @@ pub fn httpRequestStart(bc: anytype, msg: *const Notification.RequestStart) !voi
|
|||||||
|
|
||||||
const transfer = msg.transfer;
|
const transfer = msg.transfer;
|
||||||
const req = &transfer.req;
|
const req = &transfer.req;
|
||||||
const page_id = req.page_id;
|
const frame_id = req.frame_id;
|
||||||
const page = bc.session.findPage(page_id) orelse return;
|
const page = bc.session.findPage(frame_id) orelse return;
|
||||||
|
|
||||||
// Modify request with extra CDP headers
|
// Modify request with extra CDP headers
|
||||||
for (bc.extra_headers.items) |extra| {
|
for (bc.extra_headers.items) |extra| {
|
||||||
@@ -249,7 +249,7 @@ pub fn httpRequestStart(bc: anytype, msg: *const Notification.RequestStart) !voi
|
|||||||
try bc.cdp.sendEvent("Network.requestWillBeSent", .{
|
try bc.cdp.sendEvent("Network.requestWillBeSent", .{
|
||||||
.loaderId = &id.toLoaderId(transfer.id),
|
.loaderId = &id.toLoaderId(transfer.id),
|
||||||
.requestId = &id.toRequestId(transfer.id),
|
.requestId = &id.toRequestId(transfer.id),
|
||||||
.frameId = &id.toFrameId(page_id),
|
.frameId = &id.toFrameId(frame_id),
|
||||||
.type = req.resource_type.string(),
|
.type = req.resource_type.string(),
|
||||||
.documentURL = page.url,
|
.documentURL = page.url,
|
||||||
.request = TransferAsRequestWriter.init(transfer),
|
.request = TransferAsRequestWriter.init(transfer),
|
||||||
@@ -270,7 +270,7 @@ pub fn httpResponseHeaderDone(arena: Allocator, bc: anytype, msg: *const Notific
|
|||||||
try bc.cdp.sendEvent("Network.responseReceived", .{
|
try bc.cdp.sendEvent("Network.responseReceived", .{
|
||||||
.loaderId = &id.toLoaderId(transfer.id),
|
.loaderId = &id.toLoaderId(transfer.id),
|
||||||
.requestId = &id.toRequestId(transfer.id),
|
.requestId = &id.toRequestId(transfer.id),
|
||||||
.frameId = &id.toFrameId(transfer.req.page_id),
|
.frameId = &id.toFrameId(transfer.req.frame_id),
|
||||||
.response = TransferAsResponseWriter.init(arena, msg.transfer),
|
.response = TransferAsResponseWriter.init(arena, msg.transfer),
|
||||||
.hasExtraInfo = false, // TODO change after adding Network.responseReceivedExtraInfo
|
.hasExtraInfo = false, // TODO change after adding Network.responseReceivedExtraInfo
|
||||||
}, .{ .session_id = session_id });
|
}, .{ .session_id = session_id });
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ fn setLifecycleEventsEnabled(cmd: anytype) !void {
|
|||||||
const page = bc.session.currentPage() orelse return error.PageNotLoaded;
|
const page = bc.session.currentPage() orelse return error.PageNotLoaded;
|
||||||
|
|
||||||
if (page._load_state == .complete) {
|
if (page._load_state == .complete) {
|
||||||
const frame_id = &id.toFrameId(page.id);
|
const frame_id = &id.toFrameId(page._frame_id);
|
||||||
const loader_id = &id.toLoaderId(page._req_id);
|
const loader_id = &id.toLoaderId(page._req_id);
|
||||||
|
|
||||||
const now = timestampF(.monotonic);
|
const now = timestampF(.monotonic);
|
||||||
@@ -239,7 +239,7 @@ pub fn pageNavigate(bc: anytype, event: *const Notification.PageNavigate) !void
|
|||||||
const session_id = bc.session_id orelse return;
|
const session_id = bc.session_id orelse return;
|
||||||
bc.reset();
|
bc.reset();
|
||||||
|
|
||||||
const frame_id = &id.toFrameId(event.page_id);
|
const frame_id = &id.toFrameId(event.frame_id);
|
||||||
const loader_id = &id.toLoaderId(event.req_id);
|
const loader_id = &id.toLoaderId(event.req_id);
|
||||||
|
|
||||||
var cdp = bc.cdp;
|
var cdp = bc.cdp;
|
||||||
@@ -308,7 +308,7 @@ pub fn pageFrameCreated(bc: anytype, event: *const Notification.PageFrameCreated
|
|||||||
const session_id = bc.session_id orelse return;
|
const session_id = bc.session_id orelse return;
|
||||||
|
|
||||||
const cdp = bc.cdp;
|
const cdp = bc.cdp;
|
||||||
const frame_id = &id.toFrameId(event.page_id);
|
const frame_id = &id.toFrameId(event.frame_id);
|
||||||
|
|
||||||
try cdp.sendEvent("Page.frameAttached", .{ .params = .{
|
try cdp.sendEvent("Page.frameAttached", .{ .params = .{
|
||||||
.frameId = frame_id,
|
.frameId = frame_id,
|
||||||
@@ -319,7 +319,7 @@ pub fn pageFrameCreated(bc: anytype, event: *const Notification.PageFrameCreated
|
|||||||
try cdp.sendEvent("Page.lifecycleEvent", LifecycleEvent{
|
try cdp.sendEvent("Page.lifecycleEvent", LifecycleEvent{
|
||||||
.name = "init",
|
.name = "init",
|
||||||
.frameId = frame_id,
|
.frameId = frame_id,
|
||||||
.loaderId = &id.toLoaderId(event.page_id),
|
.loaderId = &id.toLoaderId(event.frame_id),
|
||||||
.timestamp = event.timestamp,
|
.timestamp = event.timestamp,
|
||||||
}, .{ .session_id = session_id });
|
}, .{ .session_id = session_id });
|
||||||
}
|
}
|
||||||
@@ -331,7 +331,7 @@ pub fn pageNavigated(arena: Allocator, bc: anytype, event: *const Notification.P
|
|||||||
const session_id = bc.session_id orelse return;
|
const session_id = bc.session_id orelse return;
|
||||||
|
|
||||||
const timestamp = event.timestamp;
|
const timestamp = event.timestamp;
|
||||||
const frame_id = &id.toFrameId(event.page_id);
|
const frame_id = &id.toFrameId(event.frame_id);
|
||||||
const loader_id = &id.toLoaderId(event.req_id);
|
const loader_id = &id.toLoaderId(event.req_id);
|
||||||
|
|
||||||
var cdp = bc.cdp;
|
var cdp = bc.cdp;
|
||||||
@@ -478,11 +478,11 @@ pub fn pageNavigated(arena: Allocator, bc: anytype, event: *const Notification.P
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn pageNetworkIdle(bc: anytype, event: *const Notification.PageNetworkIdle) !void {
|
pub fn pageNetworkIdle(bc: anytype, event: *const Notification.PageNetworkIdle) !void {
|
||||||
return sendPageLifecycle(bc, "networkIdle", event.timestamp, &id.toFrameId(event.page_id), &id.toLoaderId(event.req_id));
|
return sendPageLifecycle(bc, "networkIdle", event.timestamp, &id.toFrameId(event.frame_id), &id.toLoaderId(event.req_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn pageNetworkAlmostIdle(bc: anytype, event: *const Notification.PageNetworkAlmostIdle) !void {
|
pub fn pageNetworkAlmostIdle(bc: anytype, event: *const Notification.PageNetworkAlmostIdle) !void {
|
||||||
return sendPageLifecycle(bc, "networkAlmostIdle", event.timestamp, &id.toFrameId(event.page_id), &id.toLoaderId(event.req_id));
|
return sendPageLifecycle(bc, "networkAlmostIdle", event.timestamp, &id.toFrameId(event.frame_id), &id.toLoaderId(event.req_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sendPageLifecycle(bc: anytype, name: []const u8, timestamp: u64, frame_id: []const u8, loader_id: []const u8) !void {
|
fn sendPageLifecycle(bc: anytype, name: []const u8, timestamp: u64, frame_id: []const u8, loader_id: []const u8) !void {
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ fn createTarget(cmd: anytype) !void {
|
|||||||
const page = try bc.session.createPage();
|
const page = try bc.session.createPage();
|
||||||
|
|
||||||
// the target_id == the frame_id of the "root" page
|
// the target_id == the frame_id of the "root" page
|
||||||
const frame_id = id.toFrameId(page.id);
|
const frame_id = id.toFrameId(page._frame_id);
|
||||||
bc.target_id = frame_id;
|
bc.target_id = frame_id;
|
||||||
const target_id = &bc.target_id.?;
|
const target_id = &bc.target_id.?;
|
||||||
{
|
{
|
||||||
@@ -421,7 +421,7 @@ fn setAutoAttach(cmd: anytype) !void {
|
|||||||
if (bc.target_id == null) {
|
if (bc.target_id == null) {
|
||||||
if (bc.session.currentPage()) |page| {
|
if (bc.session.currentPage()) |page| {
|
||||||
// the target_id == the frame_id of the "root" page
|
// the target_id == the frame_id of the "root" page
|
||||||
bc.target_id = id.toFrameId(page.id);
|
bc.target_id = id.toFrameId(page._frame_id);
|
||||||
try doAttachtoTarget(cmd, &bc.target_id.?);
|
try doAttachtoTarget(cmd, &bc.target_id.?);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ fn fetchRobotsThenProcessRequest(self: *Client, robots_url: [:0]const u8, req: R
|
|||||||
.method = .GET,
|
.method = .GET,
|
||||||
.headers = headers,
|
.headers = headers,
|
||||||
.blocking = false,
|
.blocking = false,
|
||||||
.page_id = req.page_id,
|
.frame_id = req.frame_id,
|
||||||
.cookie_jar = req.cookie_jar,
|
.cookie_jar = req.cookie_jar,
|
||||||
.notification = req.notification,
|
.notification = req.notification,
|
||||||
.resource_type = .fetch,
|
.resource_type = .fetch,
|
||||||
@@ -855,7 +855,7 @@ pub const RequestCookie = struct {
|
|||||||
};
|
};
|
||||||
|
|
||||||
pub const Request = struct {
|
pub const Request = struct {
|
||||||
page_id: u32,
|
frame_id: u32,
|
||||||
method: Method,
|
method: Method,
|
||||||
url: [:0]const u8,
|
url: [:0]const u8,
|
||||||
headers: Net.Headers,
|
headers: Net.Headers,
|
||||||
|
|||||||
Reference in New Issue
Block a user