Make net::WrappedIOBuffer require a size argument.
This is a partial step to achieving the goal of the linked bug.
Introduce two-arg form of WrappedIOBuffer constructor which takes
a size argument, and update callers to pass that value. The value
is propagated into new parent class net::IOBufferWithSize but is
not yet used otherwise.
Bug: 1493389
Change-Id: Ia3333835563ebc99bdbac19e314d372d39fccafb
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4973821
Reviewed-by: Reilly Grant <reillyg@chromium.org>
Reviewed-by: Stefano Duo <stefanoduo@google.com>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Matt Menke <mmenke@chromium.org>
Reviewed-by: Finnur Thorarinsson <finnur@chromium.org>
Reviewed-by: Elly FJ <ellyjones@chromium.org>
Reviewed-by: Joe Downing <joedow@chromium.org>
Reviewed-by: Marijn Kruisselbrink <mek@chromium.org>
Reviewed-by: Mark Foltz <mfoltz@chromium.org>
Reviewed-by: Joshua Bell <jsbell@chromium.org>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#1217225}
diff --git a/chrome/browser/extensions/api/socket/udp_socket_unittest.cc b/chrome/browser/extensions/api/socket/udp_socket_unittest.cc
index 578a1637..c277848 100644
--- a/chrome/browser/extensions/api/socket/udp_socket_unittest.cc
+++ b/chrome/browser/extensions/api/socket/udp_socket_unittest.cc
@@ -143,7 +143,8 @@
int result) {
if (result == 0) {
scoped_refptr<net::IOBuffer> data =
- base::MakeRefCounted<net::WrappedIOBuffer>(kTestMessage);
+ base::MakeRefCounted<net::WrappedIOBuffer>(kTestMessage,
+ kTestMessageLength);
src->Write(data, kTestMessageLength, base::BindOnce(&OnSendCompleted));
base::SingleThreadTaskRunner::GetCurrentDefault()->PostDelayedTask(
FROM_HERE,
diff --git a/components/cronet/android/cronet_bidirectional_stream_adapter.cc b/components/cronet/android/cronet_bidirectional_stream_adapter.cc
index 14945d80..292a489 100644
--- a/components/cronet/android/cronet_bidirectional_stream_adapter.cc
+++ b/components/cronet/android/cronet_bidirectional_stream_adapter.cc
@@ -234,8 +234,8 @@
i, 1, &limit);
DCHECK_LE(pos, limit);
scoped_refptr<net::WrappedIOBuffer> write_buffer =
- base::MakeRefCounted<net::WrappedIOBuffer>(static_cast<char*>(data) +
- pos);
+ base::MakeRefCounted<net::WrappedIOBuffer>(
+ static_cast<char*>(data) + pos, limit - pos);
pending_write_data->write_buffer_list.push_back(write_buffer);
pending_write_data->write_buffer_len_list.push_back(limit - pos);
}
diff --git a/components/cronet/android/io_buffer_with_byte_buffer.cc b/components/cronet/android/io_buffer_with_byte_buffer.cc
index 84812d47..2011175 100644
--- a/components/cronet/android/io_buffer_with_byte_buffer.cc
+++ b/components/cronet/android/io_buffer_with_byte_buffer.cc
@@ -14,7 +14,8 @@
void* byte_buffer_data,
jint position,
jint limit)
- : net::WrappedIOBuffer(static_cast<char*>(byte_buffer_data) + position),
+ : net::WrappedIOBuffer(static_cast<char*>(byte_buffer_data) + position,
+ limit - position),
byte_buffer_(env, jbyte_buffer),
initial_position_(position),
initial_limit_(limit) {
diff --git a/components/cronet/native/io_buffer_with_cronet_buffer.cc b/components/cronet/native/io_buffer_with_cronet_buffer.cc
index 015700c9..2d82dce 100644
--- a/components/cronet/native/io_buffer_with_cronet_buffer.cc
+++ b/components/cronet/native/io_buffer_with_cronet_buffer.cc
@@ -30,7 +30,8 @@
IOBufferWithCronet_Buffer::IOBufferWithCronet_Buffer(
Cronet_BufferPtr cronet_buffer)
: net::WrappedIOBuffer(
- reinterpret_cast<const char*>(cronet_buffer->GetData())),
+ reinterpret_cast<const char*>(cronet_buffer->GetData()),
+ static_cast<size_t>(cronet_buffer->GetSize())),
cronet_buffer_(cronet_buffer) {}
IOBufferWithCronet_Buffer::~IOBufferWithCronet_Buffer() {
diff --git a/components/grpc_support/bidirectional_stream.cc b/components/grpc_support/bidirectional_stream.cc
index 3d030748..52327d5 100644
--- a/components/grpc_support/bidirectional_stream.cc
+++ b/components/grpc_support/bidirectional_stream.cc
@@ -110,7 +110,7 @@
if (!buffer)
return false;
scoped_refptr<net::WrappedIOBuffer> read_buffer =
- base::MakeRefCounted<net::WrappedIOBuffer>(buffer);
+ base::MakeRefCounted<net::WrappedIOBuffer>(buffer, capacity);
PostToNetworkThread(
FROM_HERE, base::BindOnce(&BidirectionalStream::ReadDataOnNetworkThread,
@@ -125,7 +125,7 @@
return false;
scoped_refptr<net::WrappedIOBuffer> write_buffer =
- base::MakeRefCounted<net::WrappedIOBuffer>(buffer);
+ base::MakeRefCounted<net::WrappedIOBuffer>(buffer, count);
PostToNetworkThread(
FROM_HERE,
diff --git a/components/services/storage/service_worker/service_worker_resource_ops.cc b/components/services/storage/service_worker/service_worker_resource_ops.cc
index 201de2f..ad95a07 100644
--- a/components/services/storage/service_worker/service_worker_resource_ops.cc
+++ b/components/services/storage/service_worker/service_worker_resource_ops.cc
@@ -85,7 +85,8 @@
class WrappedPickleIOBuffer : public net::WrappedIOBuffer {
public:
explicit WrappedPickleIOBuffer(std::unique_ptr<const base::Pickle> pickle)
- : net::WrappedIOBuffer(reinterpret_cast<const char*>(pickle->data())),
+ : net::WrappedIOBuffer(reinterpret_cast<const char*>(pickle->data()),
+ pickle->size()),
pickle_(std::move(pickle)) {
DCHECK(pickle_->data());
}
diff --git a/content/browser/cache_storage/cache_storage_cache_entry_handler.cc b/content/browser/cache_storage/cache_storage_cache_entry_handler.cc
index 7f95384..d96b738 100644
--- a/content/browser/cache_storage/cache_storage_cache_entry_handler.cc
+++ b/content/browser/cache_storage/cache_storage_cache_entry_handler.cc
@@ -141,7 +141,7 @@
int length = blob_entry_->GetSize(side_data_disk_cache_index_);
mojo_base::BigBuffer output_buf(static_cast<size_t>(length));
auto wrapped_buf = base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<char*>(output_buf.data()));
+ reinterpret_cast<char*>(output_buf.data()), output_buf.size());
auto split_callback = base::SplitOnceCallback(base::BindOnce(
[](mojo_base::BigBuffer output_buf, ReadSideDataCallback callback,
diff --git a/content/browser/service_worker/service_worker_new_script_loader.cc b/content/browser/service_worker/service_worker_new_script_loader.cc
index f1b77e4..e549ae6 100644
--- a/content/browser/service_worker/service_worker_new_script_loader.cc
+++ b/content/browser/service_worker/service_worker_new_script_loader.cc
@@ -47,7 +47,8 @@
class ServiceWorkerNewScriptLoader::WrappedIOBuffer
: public net::WrappedIOBuffer {
public:
- explicit WrappedIOBuffer(const char* data) : net::WrappedIOBuffer(data) {}
+ WrappedIOBuffer(const char* data, size_t size)
+ : net::WrappedIOBuffer(data, size) {}
private:
~WrappedIOBuffer() override = default;
@@ -595,7 +596,8 @@
uint32_t bytes_written = std::min<uint32_t>(kReadBufferSize, bytes_available);
auto buffer = base::MakeRefCounted<WrappedIOBuffer>(
- pending_buffer ? pending_buffer->buffer() : nullptr);
+ pending_buffer ? pending_buffer->buffer() : nullptr,
+ pending_buffer ? pending_buffer->size() : 0);
MojoResult result = client_producer_->WriteData(
buffer->data(), &bytes_written, MOJO_WRITE_DATA_FLAG_NONE);
TRACE_EVENT_WITH_FLOW1("ServiceWorker",
diff --git a/content/browser/service_worker/service_worker_single_script_update_checker.cc b/content/browser/service_worker/service_worker_single_script_update_checker.cc
index a8f98c1..7f81bd79 100644
--- a/content/browser/service_worker/service_worker_single_script_update_checker.cc
+++ b/content/browser/service_worker/service_worker_single_script_update_checker.cc
@@ -93,7 +93,8 @@
class ServiceWorkerSingleScriptUpdateChecker::WrappedIOBuffer
: public net::WrappedIOBuffer {
public:
- WrappedIOBuffer(const char* data) : net::WrappedIOBuffer(data) {}
+ WrappedIOBuffer(const char* data, size_t size)
+ : net::WrappedIOBuffer(data, size) {}
private:
~WrappedIOBuffer() override = default;
@@ -560,7 +561,8 @@
DCHECK(pending_buffer || bytes_to_compare == 0);
auto buffer = base::MakeRefCounted<WrappedIOBuffer>(
- pending_buffer ? pending_buffer->buffer() : nullptr);
+ pending_buffer ? pending_buffer->buffer() : nullptr,
+ pending_buffer ? pending_buffer->size() : 0);
// Compare the network data and the stored data.
net::Error error = cache_writer_->MaybeWriteData(
diff --git a/content/browser/service_worker/service_worker_test_utils.cc b/content/browser/service_worker/service_worker_test_utils.cc
index 6d75c1a..f9465e3 100644
--- a/content/browser/service_worker/service_worker_test_utils.cc
+++ b/content/browser/service_worker/service_worker_test_utils.cc
@@ -772,7 +772,8 @@
base::MakeRefCounted<net::HttpResponseHeaders>(new_headers);
cache_writer->bytes_compared_ = bytes_compared;
cache_writer->data_to_write_ = base::MakeRefCounted<net::WrappedIOBuffer>(
- pending_network_buffer ? pending_network_buffer->buffer() : nullptr);
+ pending_network_buffer ? pending_network_buffer->buffer() : nullptr,
+ pending_network_buffer ? pending_network_buffer->size() : 0);
cache_writer->len_to_write_ = consumed_size;
cache_writer->bytes_written_ = 0;
cache_writer->io_pending_ = true;
diff --git a/content/browser/service_worker/service_worker_updated_script_loader.cc b/content/browser/service_worker/service_worker_updated_script_loader.cc
index d8c0518..d8867341 100644
--- a/content/browser/service_worker/service_worker_updated_script_loader.cc
+++ b/content/browser/service_worker/service_worker_updated_script_loader.cc
@@ -38,7 +38,8 @@
class ServiceWorkerUpdatedScriptLoader::WrappedIOBuffer
: public net::WrappedIOBuffer {
public:
- explicit WrappedIOBuffer(const char* data) : net::WrappedIOBuffer(data) {}
+ WrappedIOBuffer(const char* data, size_t size)
+ : net::WrappedIOBuffer(data, size) {}
private:
~WrappedIOBuffer() override = default;
@@ -396,7 +397,8 @@
uint32_t bytes_written = std::min<uint32_t>(kReadBufferSize, bytes_available);
auto buffer = base::MakeRefCounted<WrappedIOBuffer>(
- pending_buffer ? pending_buffer->buffer() : nullptr);
+ pending_buffer ? pending_buffer->buffer() : nullptr,
+ pending_buffer ? pending_buffer->size() : 0);
MojoResult result = client_producer_->WriteData(
buffer->data(), &bytes_written, MOJO_WRITE_DATA_FLAG_NONE);
switch (result) {
diff --git a/device/bluetooth/socket.cc b/device/bluetooth/socket.cc
index a20dcf8..1f03996 100644
--- a/device/bluetooth/socket.cc
+++ b/device/bluetooth/socket.cc
@@ -178,7 +178,8 @@
}
bluetooth_socket_->Send(base::MakeRefCounted<net::WrappedIOBuffer>(
- static_cast<const char*>(pending_read_buffer)),
+ static_cast<const char*>(pending_read_buffer),
+ static_cast<size_t>(pending_read_buffer_size)),
pending_read_buffer_size,
base::BindOnce(&Socket::OnBluetoothSocketSend,
weak_ptr_factory_.GetWeakPtr()),
diff --git a/extensions/browser/api/bluetooth_socket/bluetooth_socket_api.cc b/extensions/browser/api/bluetooth_socket/bluetooth_socket_api.cc
index 0376457..4f9f033 100644
--- a/extensions/browser/api/bluetooth_socket/bluetooth_socket_api.cc
+++ b/extensions/browser/api/bluetooth_socket/bluetooth_socket_api.cc
@@ -554,7 +554,8 @@
io_buffer_size_ = params_->data.size();
io_buffer_ = base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<const char*>(params_->data.data()));
+ reinterpret_cast<const char*>(params_->data.data()),
+ params_->data.size());
BluetoothApiSocket* socket = GetSocket(params_->socket_id);
if (!socket)
diff --git a/extensions/browser/api/socket/socket.cc b/extensions/browser/api/socket/socket.cc
index f1aafc6e..90dd198 100644
--- a/extensions/browser/api/socket/socket.cc
+++ b/extensions/browser/api/socket/socket.cc
@@ -54,7 +54,8 @@
DCHECK(request.byte_count >= request.bytes_written);
io_buffer_write_ = base::MakeRefCounted<net::WrappedIOBuffer>(
- request.io_buffer->data() + request.bytes_written);
+ request.io_buffer->data() + request.bytes_written,
+ request.byte_count - request.bytes_written);
int result = WriteImpl(
io_buffer_write_.get(), request.byte_count - request.bytes_written,
base::BindOnce(&Socket::OnWriteComplete, base::Unretained(this)));
diff --git a/ios/net/crn_http_protocol_handler.mm b/ios/net/crn_http_protocol_handler.mm
index 533085c..1c52ead 100644
--- a/ios/net/crn_http_protocol_handler.mm
+++ b/ios/net/crn_http_protocol_handler.mm
@@ -515,7 +515,7 @@
}
read_buffer_.reset(static_cast<char*>(malloc(read_buffer_size_)));
read_buffer_wrapper_ = base::MakeRefCounted<WrappedIOBuffer>(
- static_cast<const char*>(read_buffer_.get()));
+ static_cast<const char*>(read_buffer_.get()), read_buffer_size_);
}
HttpProtocolHandlerCore::~HttpProtocolHandlerCore() {
diff --git a/media/cast/net/udp_transport_impl.cc b/media/cast/net/udp_transport_impl.cc
index 63f4fbc..d7cafa9 100644
--- a/media/cast/net/udp_transport_impl.cc
+++ b/media/cast/net/udp_transport_impl.cc
@@ -180,7 +180,8 @@
if (length_or_status == net::ERR_IO_PENDING) {
next_packet_ = std::make_unique<Packet>(media::cast::kMaxIpPacketSize);
recv_buf_ = base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<char*>(&next_packet_->front()));
+ reinterpret_cast<char*>(&next_packet_->front()),
+ next_packet_->size());
length_or_status = udp_socket_->RecvFrom(
recv_buf_.get(), media::cast::kMaxIpPacketSize, &recv_addr_,
base::BindOnce(&UdpTransportImpl::ReceiveNextPacket,
@@ -252,7 +253,7 @@
}
auto buf = base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<char*>(&packet->data.front()));
+ reinterpret_cast<char*>(&packet->data.front()), packet->data.size());
int result;
net::CompletionOnceCallback callback =
diff --git a/media/cast/test/utility/udp_proxy.cc b/media/cast/test/utility/udp_proxy.cc
index 343931b..a4c93104 100644
--- a/media/cast/test/utility/udp_proxy.cc
+++ b/media/cast/test/utility/udp_proxy.cc
@@ -721,7 +721,7 @@
// We ignore all problems, callbacks and errors.
// If it didn't work we just drop the packet at and call it a day.
auto buf = base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<char*>(&packet->front()));
+ reinterpret_cast<char*>(&packet->front()), packet->size());
size_t buf_size = packet->size();
int result;
if (destination.address().empty()) {
@@ -805,7 +805,7 @@
while (true) {
packet_ = std::make_unique<Packet>(kMaxPacketSize);
auto recv_buf = base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<char*>(&packet_->front()));
+ reinterpret_cast<char*>(&packet_->front()), packet_->size());
int len =
socket_->RecvFrom(recv_buf.get(), kMaxPacketSize, &recv_address_,
base::BindOnce(&UDPProxyImpl::ReadCallback,
diff --git a/net/base/elements_upload_data_stream_unittest.cc b/net/base/elements_upload_data_stream_unittest.cc
index 041e005..762315b 100644
--- a/net/base/elements_upload_data_stream_unittest.cc
+++ b/net/base/elements_upload_data_stream_unittest.cc
@@ -702,7 +702,7 @@
TestCompletionCallback read_callback1;
std::vector<char> buf(kTestDataSize + kTestDataSize / 2);
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
EXPECT_EQ(
ERR_IO_PENDING,
stream->Read(wrapped_buffer.get(), buf.size(),
@@ -722,7 +722,7 @@
TestCompletionCallback read_callback2;
std::vector<char> buf2(kTestDataSize * 2);
scoped_refptr<IOBuffer> wrapped_buffer2 =
- base::MakeRefCounted<WrappedIOBuffer>(&buf2[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf2.data(), buf2.size());
EXPECT_EQ(ERR_IO_PENDING,
stream->Read(
wrapped_buffer2.get(), buf2.size(), read_callback2.callback()));
@@ -767,7 +767,7 @@
TestCompletionCallback read_callback2;
std::vector<char> buf2(kTestDataSize * 2);
scoped_refptr<IOBuffer> wrapped_buffer2 =
- base::MakeRefCounted<WrappedIOBuffer>(&buf2[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf2.data(), buf2.size());
EXPECT_EQ(ERR_IO_PENDING,
stream->Read(
wrapped_buffer2.get(), buf2.size(), read_callback2.callback()));
@@ -811,7 +811,7 @@
TestCompletionCallback read_callback1;
std::vector<char> buf(kTestDataSize * 2);
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
EXPECT_EQ(
ERR_IO_PENDING,
stream->Read(wrapped_buffer.get(), buf.size(),
@@ -829,7 +829,7 @@
TestCompletionCallback read_callback2;
std::vector<char> buf2(kTestDataSize * 2);
scoped_refptr<IOBuffer> wrapped_buffer2 =
- base::MakeRefCounted<WrappedIOBuffer>(&buf2[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf2.data(), buf2.size());
EXPECT_EQ(ERR_IO_PENDING,
stream->Read(
wrapped_buffer2.get(), buf2.size(), read_callback2.callback()));
diff --git a/net/base/io_buffer.cc b/net/base/io_buffer.cc
index e6042129..c696e5f 100644
--- a/net/base/io_buffer.cc
+++ b/net/base/io_buffer.cc
@@ -136,9 +136,8 @@
data_ = nullptr;
}
-WrappedIOBuffer::WrappedIOBuffer(const char* data)
- : IOBuffer(const_cast<char*>(data)) {
-}
+WrappedIOBuffer::WrappedIOBuffer(const char* data, size_t size)
+ : IOBufferWithSize(const_cast<char*>(data), size) {}
WrappedIOBuffer::~WrappedIOBuffer() {
data_ = nullptr;
diff --git a/net/base/io_buffer.h b/net/base/io_buffer.h
index b2995b015..e57489d 100644
--- a/net/base/io_buffer.h
+++ b/net/base/io_buffer.h
@@ -245,9 +245,9 @@
// A good example is the buffer for a synchronous operation, where we can be
// sure that nobody is keeping an extra reference to this object so the lifetime
// of the buffer can be completely managed by its intended owner.
-class NET_EXPORT WrappedIOBuffer : public IOBuffer {
+class NET_EXPORT WrappedIOBuffer : public IOBufferWithSize {
public:
- explicit WrappedIOBuffer(const char* data);
+ WrappedIOBuffer(const char* data, size_t size);
protected:
~WrappedIOBuffer() override;
diff --git a/net/base/upload_bytes_element_reader_unittest.cc b/net/base/upload_bytes_element_reader_unittest.cc
index 4f5c274..bf01e09 100644
--- a/net/base/upload_bytes_element_reader_unittest.cc
+++ b/net/base/upload_bytes_element_reader_unittest.cc
@@ -38,7 +38,7 @@
const size_t kHalfSize = bytes_.size() / 2;
std::vector<char> buf(kHalfSize);
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
EXPECT_EQ(static_cast<int>(buf.size()),
reader_->Read(wrapped_buffer.get(), buf.size(),
CompletionOnceCallback()));
@@ -50,7 +50,7 @@
TEST_F(UploadBytesElementReaderTest, ReadAll) {
std::vector<char> buf(bytes_.size());
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
EXPECT_EQ(static_cast<int>(buf.size()),
reader_->Read(wrapped_buffer.get(), buf.size(),
CompletionOnceCallback()));
@@ -65,7 +65,7 @@
const size_t kTooLargeSize = bytes_.size() * 2;
std::vector<char> buf(kTooLargeSize);
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
EXPECT_EQ(static_cast<int>(bytes_.size()),
reader_->Read(wrapped_buffer.get(), buf.size(),
CompletionOnceCallback()));
@@ -77,7 +77,7 @@
TEST_F(UploadBytesElementReaderTest, MultipleInit) {
std::vector<char> buf(bytes_.size());
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
// Read all.
EXPECT_EQ(static_cast<int>(buf.size()),
diff --git a/net/base/upload_file_element_reader_unittest.cc b/net/base/upload_file_element_reader_unittest.cc
index 77b555a..24709f2 100644
--- a/net/base/upload_file_element_reader_unittest.cc
+++ b/net/base/upload_file_element_reader_unittest.cc
@@ -112,7 +112,7 @@
ASSERT_EQ(bytes_.size(), kHalfSize * 2);
std::vector<char> buf(kHalfSize);
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
TestCompletionCallback read_callback1;
ASSERT_EQ(ERR_IO_PENDING,
reader_->Read(
@@ -133,7 +133,7 @@
TEST_P(UploadFileElementReaderTest, ReadAll) {
std::vector<char> buf(bytes_.size());
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
TestCompletionCallback read_callback;
ASSERT_EQ(ERR_IO_PENDING,
reader_->Read(
@@ -151,7 +151,7 @@
const size_t kTooLargeSize = bytes_.size() * 2;
std::vector<char> buf(kTooLargeSize);
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
TestCompletionCallback read_callback;
ASSERT_EQ(ERR_IO_PENDING,
reader_->Read(
@@ -165,7 +165,7 @@
TEST_P(UploadFileElementReaderTest, MultipleInit) {
std::vector<char> buf(bytes_.size());
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
// Read all.
TestCompletionCallback read_callback1;
@@ -196,7 +196,7 @@
TEST_P(UploadFileElementReaderTest, InitDuringAsyncOperation) {
std::vector<char> buf(bytes_.size());
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
// Start reading all.
TestCompletionCallback read_callback1;
@@ -220,7 +220,7 @@
// Read half.
std::vector<char> buf2(bytes_.size() / 2);
scoped_refptr<IOBuffer> wrapped_buffer2 =
- base::MakeRefCounted<WrappedIOBuffer>(&buf2[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf2.data(), buf2.size());
TestCompletionCallback read_callback2;
EXPECT_EQ(ERR_IO_PENDING,
reader_->Read(
@@ -238,7 +238,7 @@
TEST_P(UploadFileElementReaderTest, RepeatedInitDuringInit) {
std::vector<char> buf(bytes_.size());
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
TestCompletionCallback init_callback1;
EXPECT_THAT(reader_->Init(init_callback1.callback()),
@@ -281,7 +281,7 @@
EXPECT_EQ(kLength, reader_->BytesRemaining());
std::vector<char> buf(kLength);
scoped_refptr<IOBuffer> wrapped_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(&buf[0]);
+ base::MakeRefCounted<WrappedIOBuffer>(buf.data(), buf.size());
TestCompletionCallback read_callback;
ASSERT_EQ(
ERR_IO_PENDING,
diff --git a/net/disk_cache/blockfile/sparse_control.cc b/net/disk_cache/blockfile/sparse_control.cc
index be523ccc..5c8a52d 100644
--- a/net/disk_cache/blockfile/sparse_control.cc
+++ b/net/disk_cache/blockfile/sparse_control.cc
@@ -412,7 +412,7 @@
// Save the header. The bitmap is saved in the destructor.
scoped_refptr<net::IOBuffer> buf = base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<char*>(&sparse_header_));
+ reinterpret_cast<char*>(&sparse_header_), sizeof(sparse_header_));
int rv = entry_->WriteData(kSparseIndex, 0, buf.get(), sizeof(sparse_header_),
CompletionOnceCallback(), false);
@@ -442,7 +442,7 @@
return net::ERR_CACHE_OPERATION_NOT_SUPPORTED;
scoped_refptr<net::IOBuffer> buf = base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<char*>(&sparse_header_));
+ reinterpret_cast<char*>(&sparse_header_), sizeof(sparse_header_));
// Read header.
int rv = entry_->ReadData(kSparseIndex, 0, buf.get(), sizeof(sparse_header_),
@@ -498,7 +498,7 @@
scoped_refptr<net::WrappedIOBuffer> buf =
base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<char*>(&child_data_));
+ reinterpret_cast<char*>(&child_data_), sizeof(child_data_));
// Read signature.
int rv = child_->ReadData(kSparseIndex, 0, buf.get(), sizeof(child_data_),
@@ -523,7 +523,7 @@
void SparseControl::CloseChild() {
scoped_refptr<net::WrappedIOBuffer> buf =
base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<char*>(&child_data_));
+ reinterpret_cast<char*>(&child_data_), sizeof(child_data_));
// Save the allocation bitmap before closing the child entry.
int rv = child_->WriteData(kSparseIndex, 0, buf.get(), sizeof(child_data_),
@@ -590,10 +590,10 @@
}
void SparseControl::WriteSparseData() {
- scoped_refptr<net::IOBuffer> buf = base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<const char*>(children_map_.GetMap()));
-
int len = children_map_.ArraySize() * 4;
+ scoped_refptr<net::IOBuffer> buf = base::MakeRefCounted<net::WrappedIOBuffer>(
+ reinterpret_cast<const char*>(children_map_.GetMap()), len);
+
int rv = entry_->WriteData(kSparseIndex, sizeof(sparse_header_), buf.get(),
len, CompletionOnceCallback(), false);
if (rv != len) {
@@ -690,7 +690,7 @@
scoped_refptr<net::WrappedIOBuffer> buf =
base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<char*>(&child_data_));
+ reinterpret_cast<char*>(&child_data_), sizeof(child_data_));
int rv = child_->WriteData(kSparseIndex, 0, buf.get(), sizeof(child_data_),
CompletionOnceCallback(), false);
diff --git a/net/disk_cache/entry_unittest.cc b/net/disk_cache/entry_unittest.cc
index ec0e659..9a0618d8 100644
--- a/net/disk_cache/entry_unittest.cc
+++ b/net/disk_cache/entry_unittest.cc
@@ -2089,7 +2089,8 @@
// This loop writes back to back starting from offset 0 and 9000.
for (int i = 0; i < kSize; i += 1024) {
scoped_refptr<net::WrappedIOBuffer> buf_3 =
- base::MakeRefCounted<net::WrappedIOBuffer>(buf_1->data() + i);
+ base::MakeRefCounted<net::WrappedIOBuffer>(buf_1->data() + i,
+ kSize - i);
VerifySparseIO(entry, i, buf_3.get(), 1024, buf_2.get());
VerifySparseIO(entry, 9000 + i, buf_3.get(), 1024, buf_2.get());
}
diff --git a/net/filter/gzip_source_stream.cc b/net/filter/gzip_source_stream.cc
index 8bd5c8e..82e6f2a 100644
--- a/net/filter/gzip_source_stream.cc
+++ b/net/filter/gzip_source_stream.cc
@@ -191,7 +191,8 @@
input_state_ = replay_state_;
size_t bytes_used;
scoped_refptr<IOBuffer> replay_buffer =
- base::MakeRefCounted<WrappedIOBuffer>(replay_data_.data());
+ base::MakeRefCounted<WrappedIOBuffer>(replay_data_.data(),
+ replay_data_.size());
base::expected<size_t, Error> result =
FilterData(output_buffer, output_buffer_size, replay_buffer.get(),
replay_data_.size(), &bytes_used, upstream_end_reached);
diff --git a/net/http/mock_http_cache.cc b/net/http/mock_http_cache.cc
index ddaf9b45..99d61819 100644
--- a/net/http/mock_http_cache.cc
+++ b/net/http/mock_http_cache.cc
@@ -716,9 +716,9 @@
&pickle, skip_transient_headers, response_truncated);
TestCompletionCallback cb;
- scoped_refptr<WrappedIOBuffer> data = base::MakeRefCounted<WrappedIOBuffer>(
- reinterpret_cast<const char*>(pickle.data()));
int len = static_cast<int>(pickle.size());
+ scoped_refptr<WrappedIOBuffer> data = base::MakeRefCounted<WrappedIOBuffer>(
+ reinterpret_cast<const char*>(pickle.data()), len);
int rv = disk_entry->WriteData(0, 0, data.get(), len, cb.callback(), true);
rv = cb.GetResult(rv);
diff --git a/net/websockets/websocket_channel.cc b/net/websockets/websocket_channel.cc
index 60c70f3..e60d0e9 100644
--- a/net/websockets/websocket_channel.cc
+++ b/net/websockets/websocket_channel.cc
@@ -140,12 +140,13 @@
class DependentIOBuffer : public WrappedIOBuffer {
public:
- DependentIOBuffer(scoped_refptr<IOBuffer> buffer, size_t offset)
- : WrappedIOBuffer(buffer->data() + offset), buffer_(std::move(buffer)) {}
+ DependentIOBuffer(scoped_refptr<IOBufferWithSize> buffer, size_t offset)
+ : WrappedIOBuffer(buffer->data() + offset, buffer->size() - offset),
+ buffer_(std::move(buffer)) {}
private:
~DependentIOBuffer() override = default;
- scoped_refptr<IOBuffer> buffer_;
+ scoped_refptr<IOBufferWithSize> buffer_;
};
} // namespace
diff --git a/remoting/base/compound_buffer_unittest.cc b/remoting/base/compound_buffer_unittest.cc
index 8e0da56..843c15c 100644
--- a/remoting/base/compound_buffer_unittest.cc
+++ b/remoting/base/compound_buffer_unittest.cc
@@ -173,7 +173,8 @@
const char* data = kTestData.data();
for (int i = 0; i < segments; ++i) {
int size = i % 2 == 0 ? 1 : 2;
- result->Append(base::MakeRefCounted<net::WrappedIOBuffer>(data), size);
+ result->Append(base::MakeRefCounted<net::WrappedIOBuffer>(data, size),
+ size);
data += size;
}
result->Lock();
diff --git a/remoting/host/security_key/security_key_auth_handler_posix_unittest.cc b/remoting/host/security_key/security_key_auth_handler_posix_unittest.cc
index e34c319..c8c5f929 100644
--- a/remoting/host/security_key/security_key_auth_handler_posix_unittest.cc
+++ b/remoting/host/security_key/security_key_auth_handler_posix_unittest.cc
@@ -127,7 +127,7 @@
scoped_refptr<net::DrainableIOBuffer> request_buffer =
base::MakeRefCounted<net::DrainableIOBuffer>(
base::MakeRefCounted<net::WrappedIOBuffer>(
- reinterpret_cast<const char*>(kRequestData)),
+ reinterpret_cast<const char*>(kRequestData), request_len),
request_len);
net::TestCompletionCallback write_callback;
int bytes_written = 0;
diff --git a/services/network/public/cpp/net_adapters.cc b/services/network/public/cpp/net_adapters.cc
index a1f8d98..45c58d1 100644
--- a/services/network/public/cpp/net_adapters.cc
+++ b/services/network/public/cpp/net_adapters.cc
@@ -54,7 +54,8 @@
NetToMojoIOBuffer::NetToMojoIOBuffer(NetToMojoPendingBuffer* pending_buffer,
int offset)
- : net::WrappedIOBuffer(pending_buffer->buffer() + offset),
+ : net::WrappedIOBuffer(pending_buffer->buffer() + offset,
+ pending_buffer->size() - offset),
pending_buffer_(pending_buffer) {}
NetToMojoIOBuffer::~NetToMojoIOBuffer() {}
@@ -102,7 +103,7 @@
MojoToNetIOBuffer::MojoToNetIOBuffer(MojoToNetPendingBuffer* pending_buffer,
int bytes_to_be_read)
- : net::WrappedIOBuffer(pending_buffer->buffer()),
+ : net::WrappedIOBuffer(pending_buffer->buffer(), pending_buffer->size()),
pending_buffer_(pending_buffer),
bytes_to_be_read_(bytes_to_be_read) {}
diff --git a/services/network/socket_data_pump.cc b/services/network/socket_data_pump.cc
index fc6b9fb7..903764a1 100644
--- a/services/network/socket_data_pump.cc
+++ b/services/network/socket_data_pump.cc
@@ -169,7 +169,8 @@
}
const int num_bytes = static_cast<int>(pending_send_buffer_->size());
scoped_refptr<net::IOBuffer> buf = base::MakeRefCounted<net::WrappedIOBuffer>(
- pending_send_buffer_->buffer());
+ pending_send_buffer_->buffer(), num_bytes);
+
// Use WeakPtr here because |this| doesn't outlive |socket_|.
int write_result =
socket_->Write(buf.get(), num_bytes,