mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-31 11:37:30 +09:00
Acknowledge port-backed readable close
This commit is contained in:
parent
563735e432
commit
9ea6c8f278
1 changed files with 26 additions and 7 deletions
|
|
@ -7104,14 +7104,15 @@ js::InitStreamExtras(JSContext* cx, HandleObject global)
|
||||||
var posted = tryPostReadableTransferPort(record.port,
|
var posted = tryPostReadableTransferPort(record.port,
|
||||||
{ type: "error", value: error });
|
{ type: "error", value: error });
|
||||||
if (!posted) {
|
if (!posted) {
|
||||||
tryPostReadableTransferPort(record.port, {
|
posted = tryPostReadableTransferPort(record.port, {
|
||||||
type: "error",
|
type: "error",
|
||||||
name: error && error.name,
|
name: error && error.name,
|
||||||
message: error && error.message
|
message: error && error.message
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
record.closed = true;
|
record.closed = true;
|
||||||
closeReadableTransferPort(record.port);
|
if (!posted)
|
||||||
|
closeReadableTransferPort(record.port);
|
||||||
}
|
}
|
||||||
|
|
||||||
function requestReadableTransferPortChunk(state) {
|
function requestReadableTransferPortChunk(state) {
|
||||||
|
|
@ -7160,8 +7161,8 @@ js::InitStreamExtras(JSContext* cx, HandleObject global)
|
||||||
|
|
||||||
if (result.done) {
|
if (result.done) {
|
||||||
record.closed = true;
|
record.closed = true;
|
||||||
tryPostReadableTransferPort(record.port, { type: "close" });
|
if (!tryPostReadableTransferPort(record.port, { type: "close" }))
|
||||||
closeReadableTransferPort(record.port);
|
closeReadableTransferPort(record.port);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -7208,7 +7209,16 @@ js::InitStreamExtras(JSContext* cx, HandleObject global)
|
||||||
|
|
||||||
record.port.onmessage = function(event) {
|
record.port.onmessage = function(event) {
|
||||||
var message = event.data;
|
var message = event.data;
|
||||||
if (!message || record.closed || record.canceled)
|
if (!message || record.canceled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (message.type === "closed") {
|
||||||
|
record.closed = true;
|
||||||
|
closeReadableTransferPort(record.port);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (record.closed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (message.type === "pull") {
|
if (message.type === "pull") {
|
||||||
|
|
@ -7282,13 +7292,22 @@ js::InitStreamExtras(JSContext* cx, HandleObject global)
|
||||||
if (message.type === "close") {
|
if (message.type === "close") {
|
||||||
state.closed = true;
|
state.closed = true;
|
||||||
try { state.controller.close(); } catch (e) {}
|
try { state.controller.close(); } catch (e) {}
|
||||||
|
tryPostReadableTransferPort(port, { type: "closed" });
|
||||||
closeReadableTransferPort(port);
|
closeReadableTransferPort(port);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message.type === "error") {
|
if (message.type === "error") {
|
||||||
errorReadableTransferPortState(
|
if (!state.errored) {
|
||||||
state, errorFromReadableTransferPortMessage(message));
|
state.errored = true;
|
||||||
|
try {
|
||||||
|
if (state.controller)
|
||||||
|
state.controller.error(
|
||||||
|
errorFromReadableTransferPortMessage(message));
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
tryPostReadableTransferPort(port, { type: "closed" });
|
||||||
|
closeReadableTransferPort(port);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue