projectionAddInputOmissionsRetainedBytes function
int
projectionAddInputOmissionsRetainedBytes(
- int retained,
- ChatRetainedSizeEstimator estimator,
- List<
ChatInputOmission> omissions
Implementation
int projectionAddInputOmissionsRetainedBytes(
int retained,
acp.ChatRetainedSizeEstimator estimator,
List<acp.ChatInputOmission> omissions,
) {
retained = projectionAddRetainedListHostBytes(retained, omissions.length);
for (final omission in omissions) {
retained = projectionCheckedRetainedAdd(
retained,
_inputOmissionHostRetainedBytes,
);
// Omission resources are typed host labels. Their actual retained UTF-8
// bytes count, but host-fixed labels must not consume the untrusted
// maxStructuredStringBytes budget.
retained = projectionCheckedRetainedAdd(
retained,
utf8.encode(omission.resource).length,
);
if (omission.reason == acp.ChatInputOmissionReason.inputLimit) {
retained = projectionAddEstimatedRetainedBytes(
retained,
estimator,
omission.limit,
);
retained = projectionAddEstimatedRetainedBytes(
retained,
estimator,
omission.observedAtLeast,
);
}
}
return retained;
}