Example #1
0
nsresult
DOMFileImpl::Slice(int64_t aStart, int64_t aEnd,
                   const nsAString& aContentType, uint8_t aArgc,
                   nsIDOMBlob **aBlob)
{
  *aBlob = nullptr;

  // Truncate aStart and aEnd so that we stay within this file.
  uint64_t thisLength;
  nsresult rv = GetSize(&thisLength);
  NS_ENSURE_SUCCESS(rv, rv);

  if (aArgc < 2) {
    aEnd = (int64_t)thisLength;
  }

  ParseSize((int64_t)thisLength, aStart, aEnd);

  // Create the new file
  nsCOMPtr<nsIDOMBlob> blob =
    CreateSlice((uint64_t)aStart, (uint64_t)(aEnd - aStart), aContentType);

  blob.forget(aBlob);
  return *aBlob ? NS_OK : NS_ERROR_UNEXPECTED;
}
Example #2
0
nsresult
DOMFileImpl::Slice(int64_t aStart, int64_t aEnd,
                   const nsAString& aContentType, uint8_t aArgc,
                   DOMFileImpl** aBlobImpl)
{
  *aBlobImpl = nullptr;

  // Truncate aStart and aEnd so that we stay within this file.
  uint64_t thisLength;
  nsresult rv = GetSize(&thisLength);
  NS_ENSURE_SUCCESS(rv, rv);

  if (aArgc < 2) {
    aEnd = (int64_t)thisLength;
  }

  ParseSize((int64_t)thisLength, aStart, aEnd);

  nsRefPtr<DOMFileImpl> impl =
    CreateSlice((uint64_t)aStart, (uint64_t)(aEnd - aStart), aContentType);

  if (!impl) {
    return NS_ERROR_UNEXPECTED;
  }

  impl.forget(aBlobImpl);
  return NS_OK;
}
Example #3
0
already_AddRefed<BlobImpl>
BlobImpl::Slice(const Optional<int64_t>& aStart,
                const Optional<int64_t>& aEnd,
                const nsAString& aContentType,
                ErrorResult& aRv)
{
  // Truncate aStart and aEnd so that we stay within this file.
  uint64_t thisLength = GetSize(aRv);
  if (NS_WARN_IF(aRv.Failed())) {
    return nullptr;
  }

  int64_t start = aStart.WasPassed() ? aStart.Value() : 0;
  int64_t end = aEnd.WasPassed() ? aEnd.Value() : (int64_t)thisLength;

  ParseSize((int64_t)thisLength, start, end);

  return CreateSlice((uint64_t)start, (uint64_t)(end - start),
                     aContentType, aRv);
}