Use spans in chrome_pdf::DocumentLoaderImpl::SaveBuffer().
Replace a pointer/size pair with a span. Change-Id: I1773fc3a65464eb891db7324eef1be8e5791928c Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4214272 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org> Cr-Commit-Position: refs/heads/main@{#1100137}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
3d2478fd85
commit
2f20a2d3f3
@ -11,6 +11,7 @@
|
||||
#include <utility>
|
||||
|
||||
#include "base/check_op.h"
|
||||
#include "base/containers/span.h"
|
||||
#include "base/feature_list.h"
|
||||
#include "base/functional/bind.h"
|
||||
#include "base/functional/callback.h"
|
||||
@ -317,7 +318,7 @@ void DocumentLoaderImpl::DidRead(int32_t result) {
|
||||
DCHECK(!chunk_.chunk_data);
|
||||
chunk_.chunk_index = chunk_stream_.GetChunkIndex(start_pos);
|
||||
}
|
||||
if (!SaveBuffer(buffer_.data(), result)) {
|
||||
if (!SaveBuffer(result)) {
|
||||
return ReadMore();
|
||||
}
|
||||
if (IsDocumentComplete())
|
||||
@ -325,18 +326,19 @@ void DocumentLoaderImpl::DidRead(int32_t result) {
|
||||
return ContinueDownload();
|
||||
}
|
||||
|
||||
bool DocumentLoaderImpl::SaveBuffer(char* input, uint32_t input_size) {
|
||||
bool DocumentLoaderImpl::SaveBuffer(uint32_t input_size) {
|
||||
const uint32_t document_size = GetDocumentSize();
|
||||
bytes_received_ += input_size;
|
||||
bool chunk_saved = false;
|
||||
bool loading_pending_request = pending_requests_.Contains(chunk_.chunk_index);
|
||||
while (input_size > 0) {
|
||||
auto input = base::make_span(buffer_).first(input_size);
|
||||
while (!input.empty()) {
|
||||
if (chunk_.data_size == 0)
|
||||
chunk_.chunk_data = std::make_unique<DataStream::ChunkData>();
|
||||
|
||||
const size_t new_chunk_data_len =
|
||||
std::min(DataStream::kChunkSize - chunk_.data_size, size_t{input_size});
|
||||
memcpy(chunk_.chunk_data->data() + chunk_.data_size, input,
|
||||
std::min(DataStream::kChunkSize - chunk_.data_size, input.size());
|
||||
memcpy(chunk_.chunk_data->data() + chunk_.data_size, input.data(),
|
||||
new_chunk_data_len);
|
||||
chunk_.data_size += new_chunk_data_len;
|
||||
if (chunk_.data_size == DataStream::kChunkSize ||
|
||||
@ -347,8 +349,7 @@ bool DocumentLoaderImpl::SaveBuffer(char* input, uint32_t input_size) {
|
||||
chunk_saved = true;
|
||||
}
|
||||
|
||||
input += new_chunk_data_len;
|
||||
input_size -= new_chunk_data_len;
|
||||
input = input.subspan(new_chunk_data_len);
|
||||
}
|
||||
|
||||
client_->OnNewDataReceived();
|
||||
|
@ -71,7 +71,7 @@ class DocumentLoaderImpl : public DocumentLoader {
|
||||
// Called when we complete server request.
|
||||
void ReadComplete();
|
||||
|
||||
bool SaveBuffer(char* input, uint32_t input_size);
|
||||
bool SaveBuffer(uint32_t input_size);
|
||||
void SaveChunkData();
|
||||
|
||||
uint32_t EndOfCurrentChunk() const;
|
||||
|
Reference in New Issue
Block a user