Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Side by Side Diff: content/browser/loader/intercepting_resource_handler.cc

Issue 2660723002: ResourceHandler::OnWillStart: Remove min_size argument. (Closed)
Patch Set: Merge Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/loader/intercepting_resource_handler.h" 5 #include "content/browser/loader/intercepting_resource_handler.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 86
87 // Otherwise, switch handlers. First, inform the original ResourceHandler 87 // Otherwise, switch handlers. First, inform the original ResourceHandler
88 // that this will be handled entirely by the new ResourceHandler. 88 // that this will be handled entirely by the new ResourceHandler.
89 HoldController(std::move(controller)); 89 HoldController(std::move(controller));
90 state_ = State::SWAPPING_HANDLERS; 90 state_ = State::SWAPPING_HANDLERS;
91 91
92 DoLoop(); 92 DoLoop();
93 } 93 }
94 94
95 bool InterceptingResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf, 95 bool InterceptingResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf,
96 int* buf_size, 96 int* buf_size) {
97 int min_size) {
98 if (state_ == State::PASS_THROUGH) 97 if (state_ == State::PASS_THROUGH)
99 return next_handler_->OnWillRead(buf, buf_size, min_size); 98 return next_handler_->OnWillRead(buf, buf_size);
100 99
101 DCHECK_EQ(State::STARTING, state_); 100 DCHECK_EQ(State::STARTING, state_);
102 DCHECK_EQ(-1, min_size);
103 101
104 if (!next_handler_->OnWillRead(buf, buf_size, min_size)) 102 if (!next_handler_->OnWillRead(buf, buf_size))
105 return false; 103 return false;
106 104
107 first_read_buffer_ = *buf; 105 first_read_buffer_ = *buf;
108 first_read_buffer_size_ = *buf_size; 106 first_read_buffer_size_ = *buf_size;
109 first_read_buffer_double_ = new net::IOBuffer(static_cast<size_t>(*buf_size)); 107 first_read_buffer_double_ = new net::IOBuffer(static_cast<size_t>(*buf_size));
110 *buf = first_read_buffer_double_; 108 *buf = first_read_buffer_double_;
111 return true; 109 return true;
112 } 110 }
113 111
114 void InterceptingResourceHandler::OnReadCompleted( 112 void InterceptingResourceHandler::OnReadCompleted(
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 int size = 0; 277 int size = 0;
280 if (first_read_buffer_) { 278 if (first_read_buffer_) {
281 // |first_read_buffer_| is a buffer gotten from |next_handler_| via 279 // |first_read_buffer_| is a buffer gotten from |next_handler_| via
282 // OnWillRead. Use the buffer. 280 // OnWillRead. Use the buffer.
283 buffer = first_read_buffer_; 281 buffer = first_read_buffer_;
284 size = first_read_buffer_size_; 282 size = first_read_buffer_size_;
285 283
286 first_read_buffer_ = nullptr; 284 first_read_buffer_ = nullptr;
287 first_read_buffer_size_ = 0; 285 first_read_buffer_size_ = 0;
288 } else { 286 } else {
289 if (!next_handler_->OnWillRead(&buffer, &size, -1)) { 287 if (!next_handler_->OnWillRead(&buffer, &size)) {
290 Cancel(); 288 Cancel();
291 return; 289 return;
292 } 290 }
293 } 291 }
294 292
295 size = std::min(size, static_cast<int>(payload_for_old_handler_.size() - 293 size = std::min(size, static_cast<int>(payload_for_old_handler_.size() -
296 payload_bytes_written_)); 294 payload_bytes_written_));
297 memcpy(buffer->data(), 295 memcpy(buffer->data(),
298 payload_for_old_handler_.data() + payload_bytes_written_, size); 296 payload_for_old_handler_.data() + payload_bytes_written_, size);
299 payload_bytes_written_ += size; 297 payload_bytes_written_ += size;
(...skipping 11 matching lines...) Expand all
311 309
312 if (first_read_buffer_bytes_written_ == first_read_buffer_bytes_read_) { 310 if (first_read_buffer_bytes_written_ == first_read_buffer_bytes_read_) {
313 state_ = State::PASS_THROUGH; 311 state_ = State::PASS_THROUGH;
314 first_read_buffer_double_ = nullptr; 312 first_read_buffer_double_ = nullptr;
315 ResumeInternal(); 313 ResumeInternal();
316 return; 314 return;
317 } 315 }
318 316
319 scoped_refptr<net::IOBuffer> buf; 317 scoped_refptr<net::IOBuffer> buf;
320 int size = 0; 318 int size = 0;
321 if (!next_handler_->OnWillRead(&buf, &size, -1)) { 319 if (!next_handler_->OnWillRead(&buf, &size)) {
322 Cancel(); 320 Cancel();
323 return; 321 return;
324 } 322 }
325 size = std::min(size, static_cast<int>(first_read_buffer_bytes_read_ - 323 size = std::min(size, static_cast<int>(first_read_buffer_bytes_read_ -
326 first_read_buffer_bytes_written_)); 324 first_read_buffer_bytes_written_));
327 memcpy(buf->data(), 325 memcpy(buf->data(),
328 first_read_buffer_double_->data() + first_read_buffer_bytes_written_, 326 first_read_buffer_double_->data() + first_read_buffer_bytes_written_,
329 size); 327 size);
330 first_read_buffer_bytes_written_ += size; 328 first_read_buffer_bytes_written_ += size;
331 next_handler_->OnReadCompleted(size, base::MakeUnique<Controller>(this)); 329 next_handler_->OnReadCompleted(size, base::MakeUnique<Controller>(this));
332 } 330 }
333 331
334 } // namespace content 332 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698