projectionAddInputOmissionsRetainedBytes function

int projectionAddInputOmissionsRetainedBytes(
  1. int retained,
  2. ChatRetainedSizeEstimator estimator,
  3. 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;
}