Skip to content

Commit 207f065

Browse files
authored
Merge pull request #1117 from lightpanda-io/cleanup_js
This is the last of the big changes to the js code
2 parents 88d64da + 2e734fa commit 207f065

31 files changed

+712
-774
lines changed

src/browser/ScriptManager.zig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,7 @@ const Script = struct {
663663
.cacheable = cacheable,
664664
});
665665

666-
const js_context = page.main_context;
666+
const js_context = page.js;
667667
var try_catch: js.TryCatch = undefined;
668668
try_catch.init(js_context);
669669
defer try_catch.deinit();
@@ -707,10 +707,10 @@ const Script = struct {
707707
switch (callback) {
708708
.string => |str| {
709709
var try_catch: js.TryCatch = undefined;
710-
try_catch.init(page.main_context);
710+
try_catch.init(page.js);
711711
defer try_catch.deinit();
712712

713-
_ = page.main_context.exec(str, typ) catch |err| {
713+
_ = page.js.exec(str, typ) catch |err| {
714714
const msg = try_catch.err(page.arena) catch @errorName(err) orelse "unknown";
715715
log.warn(.user_script, "script callback", .{
716716
.url = self.url,

src/browser/cssom/CSSStyleSheet.zig

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,7 @@ pub fn _replace(self: *CSSStyleSheet, text: []const u8, page: *Page) !js.Promise
7979
// TODO: clear self.css_rules
8080
// parse text and re-populate self.css_rules
8181

82-
const resolver = page.main_context.createPromiseResolver();
83-
try resolver.resolve({});
84-
return resolver.promise();
82+
return page.js.resolvePromise({});
8583
}
8684

8785
pub fn _replaceSync(self: *CSSStyleSheet, text: []const u8) !void {

src/browser/dom/Animation.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ pub fn get_pending(self: *const Animation) bool {
4949

5050
pub fn get_finished(self: *Animation, page: *Page) !js.Promise {
5151
if (self.finished_resolver == null) {
52-
const resolver = page.main_context.createPromiseResolver();
52+
const resolver = page.js.createPromiseResolver(.none);
5353
try resolver.resolve(self);
5454
self.finished_resolver = resolver;
5555
}
@@ -59,7 +59,7 @@ pub fn get_finished(self: *Animation, page: *Page) !js.Promise {
5959
pub fn get_ready(self: *Animation, page: *Page) !js.Promise {
6060
// never resolved, because we're always "finished"
6161
if (self.ready_resolver == null) {
62-
const resolver = page.main_context.createPromiseResolver();
62+
const resolver = page.js.createPromiseResolver(.none);
6363
self.ready_resolver = resolver;
6464
}
6565
return self.ready_resolver.?.promise();

src/browser/dom/document.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,7 @@ pub const Document = struct {
304304
return obj;
305305
}
306306

307-
const obj = try page.main_context.newArray(0).persist();
307+
const obj = try page.js.createArray(0).persist();
308308
state.adopted_style_sheets = obj;
309309
return obj;
310310
}

src/browser/dom/shadow_root.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ pub const ShadowRoot = struct {
5050
return obj;
5151
}
5252

53-
const obj = try page.main_context.newArray(0).persist();
53+
const obj = try page.js.createArray(0).persist();
5454
self.adopted_style_sheets = obj;
5555
return obj;
5656
}

src/browser/fetch/Headers.zig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ const Page = @import("../page.zig").Page;
2424

2525
const iterator = @import("../iterator/iterator.zig");
2626

27-
const v8 = @import("v8");
2827
// https://developer.mozilla.org/en-US/docs/Web/API/Headers
2928
const Headers = @This();
3029

src/browser/fetch/Request.zig

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ const Response = @import("./Response.zig");
2727
const Http = @import("../../http/Http.zig");
2828
const ReadableStream = @import("../streams/ReadableStream.zig");
2929

30-
const v8 = @import("v8");
31-
3230
const Headers = @import("Headers.zig");
3331
const HeadersInit = @import("Headers.zig").HeadersInit;
3432

@@ -245,20 +243,15 @@ pub fn _bytes(self: *Response, page: *Page) !js.Promise {
245243
if (self.body_used) {
246244
return error.TypeError;
247245
}
248-
249-
const resolver = page.main_context.createPromiseResolver();
250-
251-
try resolver.resolve(self.body);
252246
self.body_used = true;
253-
return resolver.promise();
247+
return page.js.resolvePromise(self.body);
254248
}
255249

256250
pub fn _json(self: *Response, page: *Page) !js.Promise {
257251
if (self.body_used) {
258252
return error.TypeError;
259253
}
260-
261-
const resolver = page.main_context.createPromiseResolver();
254+
self.body_used = true;
262255

263256
if (self.body) |body| {
264257
const p = std.json.parseFromSliceLeaky(
@@ -271,25 +264,17 @@ pub fn _json(self: *Response, page: *Page) !js.Promise {
271264
return error.SyntaxError;
272265
};
273266

274-
try resolver.resolve(p);
275-
} else {
276-
try resolver.resolve(null);
267+
return page.js.resolvePromise(p);
277268
}
278-
279-
self.body_used = true;
280-
return resolver.promise();
269+
return page.js.resolvePromise(null);
281270
}
282271

283272
pub fn _text(self: *Response, page: *Page) !js.Promise {
284273
if (self.body_used) {
285274
return error.TypeError;
286275
}
287-
288-
const resolver = page.main_context.createPromiseResolver();
289-
290-
try resolver.resolve(self.body);
291276
self.body_used = true;
292-
return resolver.promise();
277+
return page.js.resolvePromise(self.body);
293278
}
294279

295280
const testing = @import("../../testing.zig");

src/browser/fetch/Response.zig

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ const std = @import("std");
2020
const js = @import("../js/js.zig");
2121
const log = @import("../../log.zig");
2222

23-
const v8 = @import("v8");
24-
2523
const HttpClient = @import("../../http/Client.zig");
2624
const Http = @import("../../http/Http.zig");
2725
const URL = @import("../../url.zig").URL;
@@ -170,24 +168,17 @@ pub fn _bytes(self: *Response, page: *Page) !js.Promise {
170168
return error.TypeError;
171169
}
172170

173-
const resolver = js.PromiseResolver{
174-
.context = page.main_context,
175-
.resolver = v8.PromiseResolver.init(page.main_context.v8_context),
176-
};
177-
178-
try resolver.resolve(self.body);
179171
self.body_used = true;
180-
return resolver.promise();
172+
return page.js.resolvePromise(self.body);
181173
}
182174

183175
pub fn _json(self: *Response, page: *Page) !js.Promise {
184176
if (self.body_used) {
185177
return error.TypeError;
186178
}
187179

188-
const resolver = page.main_context.createPromiseResolver();
189-
190180
if (self.body) |body| {
181+
self.body_used = true;
191182
const p = std.json.parseFromSliceLeaky(
192183
std.json.Value,
193184
page.call_arena,
@@ -198,25 +189,18 @@ pub fn _json(self: *Response, page: *Page) !js.Promise {
198189
return error.SyntaxError;
199190
};
200191

201-
try resolver.resolve(p);
202-
} else {
203-
try resolver.resolve(null);
192+
return page.js.resolvePromise(p);
204193
}
205-
206-
self.body_used = true;
207-
return resolver.promise();
194+
return page.js.resolvePromise(null);
208195
}
209196

210197
pub fn _text(self: *Response, page: *Page) !js.Promise {
211198
if (self.body_used) {
212199
return error.TypeError;
213200
}
214-
215-
const resolver = page.main_context.createPromiseResolver();
216-
217-
try resolver.resolve(self.body);
218201
self.body_used = true;
219-
return resolver.promise();
202+
203+
return page.js.resolvePromise(self.body);
220204
}
221205

222206
const testing = @import("../../testing.zig");

src/browser/fetch/fetch.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ pub fn fetch(input: RequestInput, options: ?RequestInit, page: *Page) !js.Promis
131131

132132
try page.requestCookie(.{}).headersForRequest(arena, req.url, &headers);
133133

134-
const resolver = try page.main_context.createPersistentPromiseResolver(.page);
134+
const resolver = try page.js.createPromiseResolver(.page);
135135

136136
const fetch_ctx = try arena.create(FetchContext);
137137
fetch_ctx.* = .{

src/browser/html/AbortController.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ pub const AbortSignal = struct {
118118
};
119119
pub fn _throwIfAborted(self: *const AbortSignal, page: *Page) ThrowIfAborted {
120120
if (self.aborted) {
121-
const ex = page.main_context.throw(self.reason orelse DEFAULT_REASON);
121+
const ex = page.js.throw(self.reason orelse DEFAULT_REASON);
122122
return .{ .exception = ex };
123123
}
124124
return .{ .undefined = {} };

0 commit comments

Comments
 (0)