mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 23:23:28 +00:00
TypeError when Stream is locked
This commit is contained in:
@@ -75,7 +75,15 @@ pub fn constructor(underlying: ?UnderlyingSource, strategy: ?QueueingStrategy, p
|
|||||||
return stream;
|
return stream;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn _cancel(self: *const ReadableStream, page: *Page) Env.Promise {
|
pub fn get_locked(self: *const ReadableStream) bool {
|
||||||
|
return self.locked;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn _cancel(self: *const ReadableStream, page: *Page) !Env.Promise {
|
||||||
|
if (self.locked) {
|
||||||
|
return error.TypeError;
|
||||||
|
}
|
||||||
|
|
||||||
const resolver = Env.PromiseResolver{
|
const resolver = Env.PromiseResolver{
|
||||||
.js_context = page.main_context,
|
.js_context = page.main_context,
|
||||||
.resolver = self.cancel_resolver.castToPromiseResolver(),
|
.resolver = self.cancel_resolver.castToPromiseResolver(),
|
||||||
@@ -84,21 +92,28 @@ pub fn _cancel(self: *const ReadableStream, page: *Page) Env.Promise {
|
|||||||
return resolver.promise();
|
return resolver.promise();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_locked(self: *const ReadableStream) bool {
|
|
||||||
return self.locked;
|
|
||||||
}
|
|
||||||
|
|
||||||
const GetReaderOptions = struct {
|
const GetReaderOptions = struct {
|
||||||
|
// Mode must equal 'byob' or be undefined. RangeError otherwise.
|
||||||
mode: ?[]const u8 = null,
|
mode: ?[]const u8 = null,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn _getReader(self: *ReadableStream, _options: ?GetReaderOptions, page: *Page) ReadableStreamDefaultReader {
|
pub fn _getReader(self: *ReadableStream, _options: ?GetReaderOptions, page: *Page) !ReadableStreamDefaultReader {
|
||||||
|
if (self.locked) {
|
||||||
|
return error.TypeError;
|
||||||
|
}
|
||||||
|
|
||||||
const options = _options orelse GetReaderOptions{};
|
const options = _options orelse GetReaderOptions{};
|
||||||
_ = options;
|
_ = options;
|
||||||
|
|
||||||
return ReadableStreamDefaultReader.constructor(self, page);
|
return ReadableStreamDefaultReader.constructor(self, page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: pipeThrough (requires TransformStream)
|
||||||
|
|
||||||
|
// TODO: pipeTo (requires WritableStream)
|
||||||
|
|
||||||
|
// TODO: tee
|
||||||
|
|
||||||
const testing = @import("../../testing.zig");
|
const testing = @import("../../testing.zig");
|
||||||
test "streams: ReadableStream" {
|
test "streams: ReadableStream" {
|
||||||
var runner = try testing.jsRunner(testing.tracking_allocator, .{ .url = "https://lightpanda.io" });
|
var runner = try testing.jsRunner(testing.tracking_allocator, .{ .url = "https://lightpanda.io" });
|
||||||
|
|||||||
@@ -54,5 +54,4 @@ pub fn _enqueue(self: *ReadableStreamDefaultController, chunk: []const u8, page:
|
|||||||
|
|
||||||
pub fn _error(self: *ReadableStreamDefaultController, err: Env.JsObject) void {
|
pub fn _error(self: *ReadableStreamDefaultController, err: Env.JsObject) void {
|
||||||
self.stream.state = .{ .errored = err };
|
self.stream.state = .{ .errored = err };
|
||||||
// set to error.
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,8 +47,8 @@ pub fn get_closed(self: *const ReadableStreamDefaultReader) Env.Promise {
|
|||||||
return self.closed_resolver.promise();
|
return self.closed_resolver.promise();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn _cancel(self: *ReadableStreamDefaultReader, page: *Page) Env.Promise {
|
pub fn _cancel(self: *ReadableStreamDefaultReader, page: *Page) !Env.Promise {
|
||||||
return self.stream._cancel(page);
|
return try self.stream._cancel(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const ReadableStreamReadResult = struct {
|
pub const ReadableStreamReadResult = struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user