mirror of
https://github.com/lightpanda-io/browser.git
synced 2026-06-11 09:35:59 -04:00
add Network.clearBrowserCache CDP Method
This commit is contained in:
@@ -44,6 +44,7 @@ pub fn processMessage(cmd: *CDP.Command) !void {
|
||||
setUserAgentOverride,
|
||||
deleteCookies,
|
||||
clearBrowserCookies,
|
||||
clearBrowserCache,
|
||||
setCookie,
|
||||
setCookies,
|
||||
getCookies,
|
||||
@@ -59,6 +60,7 @@ pub fn processMessage(cmd: *CDP.Command) !void {
|
||||
.setExtraHTTPHeaders => return setExtraHTTPHeaders(cmd),
|
||||
.deleteCookies => return deleteCookies(cmd),
|
||||
.clearBrowserCookies => return clearBrowserCookies(cmd),
|
||||
.clearBrowserCache => return clearBrowserCache(cmd),
|
||||
.setCookie => return setCookie(cmd),
|
||||
.setCookies => return setCookies(cmd),
|
||||
.getCookies => return getCookies(cmd),
|
||||
@@ -162,6 +164,17 @@ fn clearBrowserCookies(cmd: *CDP.Command) !void {
|
||||
return cmd.sendResult(null, .{});
|
||||
}
|
||||
|
||||
fn clearBrowserCache(cmd: *CDP.Command) !void {
|
||||
// Network.clearBrowserCache takes no parameters per the CDP spec, but most
|
||||
// CDP clients (chrome-remote-interface, chromedp, custom websocket clients)
|
||||
// include an empty `"params":{}` object on every command for ergonomics.
|
||||
// Chrome accepts that and clears the jar; reject only on truly malformed JSON.
|
||||
const bc = cmd.browser_context orelse return error.BrowserContextNotLoaded;
|
||||
const network = bc.cdp.browser.http_client.network;
|
||||
if (network.cache) |*c| try c.clear();
|
||||
return cmd.sendResult(null, .{});
|
||||
}
|
||||
|
||||
fn setCookie(cmd: *CDP.Command) !void {
|
||||
const params = (try cmd.params(
|
||||
CdpStorage.CdpCookie,
|
||||
@@ -673,3 +686,28 @@ test "cdp.Network: getAllCookies returns whole jar regardless of current origin"
|
||||
},
|
||||
}, .{ .id = 3 });
|
||||
}
|
||||
|
||||
test "cdp.Network: clearBrowserCache succeeds" {
|
||||
var ctx = try testing.context();
|
||||
defer ctx.deinit();
|
||||
_ = try ctx.loadBrowserContext(.{ .id = "BID-CC1" });
|
||||
|
||||
try ctx.processMessage(.{
|
||||
.id = 1,
|
||||
.method = "Network.clearBrowserCache",
|
||||
});
|
||||
try ctx.expectSentResult(null, .{ .id = 1 });
|
||||
}
|
||||
|
||||
test "cdp.Network: clearBrowserCache accepts empty params object" {
|
||||
var ctx = try testing.context();
|
||||
defer ctx.deinit();
|
||||
_ = try ctx.loadBrowserContext(.{ .id = "BID-CC2" });
|
||||
|
||||
// Most CDP clients always include a `params` field on every command,
|
||||
// even for methods that take none. Chrome ignores the empty object; we should too.
|
||||
try ctx.processMessage(
|
||||
\\{"id":1,"method":"Network.clearBrowserCache","params":{}}
|
||||
);
|
||||
try ctx.expectSentResult(null, .{ .id = 1 });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user