| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "net/url_request/url_fetcher_core.h" | 5 #include "net/url_request/url_fetcher_core.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <utility> |
| 8 | 9 |
| 9 #include "base/bind.h" | 10 #include "base/bind.h" |
| 10 #include "base/logging.h" | 11 #include "base/logging.h" |
| 11 #include "base/metrics/histogram_macros.h" | 12 #include "base/metrics/histogram_macros.h" |
| 12 #include "base/profiler/scoped_tracker.h" | 13 #include "base/profiler/scoped_tracker.h" |
| 13 #include "base/sequenced_task_runner.h" | 14 #include "base/sequenced_task_runner.h" |
| 14 #include "base/single_thread_task_runner.h" | 15 #include "base/single_thread_task_runner.h" |
| 15 #include "base/stl_util.h" | 16 #include "base/stl_util.h" |
| 16 #include "base/thread_task_runner_handle.h" | 17 #include "base/thread_task_runner_handle.h" |
| 17 #include "base/tracked_objects.h" | 18 #include "base/tracked_objects.h" |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 void URLFetcherCore::SaveResponseToTemporaryFile( | 295 void URLFetcherCore::SaveResponseToTemporaryFile( |
| 295 scoped_refptr<base::SequencedTaskRunner> file_task_runner) { | 296 scoped_refptr<base::SequencedTaskRunner> file_task_runner) { |
| 296 DCHECK(delegate_task_runner_->BelongsToCurrentThread()); | 297 DCHECK(delegate_task_runner_->BelongsToCurrentThread()); |
| 297 SaveResponseWithWriter(scoped_ptr<URLFetcherResponseWriter>( | 298 SaveResponseWithWriter(scoped_ptr<URLFetcherResponseWriter>( |
| 298 new URLFetcherFileWriter(file_task_runner, base::FilePath()))); | 299 new URLFetcherFileWriter(file_task_runner, base::FilePath()))); |
| 299 } | 300 } |
| 300 | 301 |
| 301 void URLFetcherCore::SaveResponseWithWriter( | 302 void URLFetcherCore::SaveResponseWithWriter( |
| 302 scoped_ptr<URLFetcherResponseWriter> response_writer) { | 303 scoped_ptr<URLFetcherResponseWriter> response_writer) { |
| 303 DCHECK(delegate_task_runner_->BelongsToCurrentThread()); | 304 DCHECK(delegate_task_runner_->BelongsToCurrentThread()); |
| 304 response_writer_ = response_writer.Pass(); | 305 response_writer_ = std::move(response_writer); |
| 305 } | 306 } |
| 306 | 307 |
| 307 HttpResponseHeaders* URLFetcherCore::GetResponseHeaders() const { | 308 HttpResponseHeaders* URLFetcherCore::GetResponseHeaders() const { |
| 308 return response_headers_.get(); | 309 return response_headers_.get(); |
| 309 } | 310 } |
| 310 | 311 |
| 311 // TODO(panayiotis): socket_address_ is written in the IO thread, | 312 // TODO(panayiotis): socket_address_ is written in the IO thread, |
| 312 // if this is accessed in the UI thread, this could result in a race. | 313 // if this is accessed in the UI thread, this could result in a race. |
| 313 // Same for response_headers_ above and was_fetched_via_proxy_ below. | 314 // Same for response_headers_ above and was_fetched_via_proxy_ below. |
| 314 HostPortPair URLFetcherCore::GetSocketAddress() const { | 315 HostPortPair URLFetcherCore::GetSocketAddress() const { |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 576 request_type_ == URLFetcher::POST ? "POST" : | 577 request_type_ == URLFetcher::POST ? "POST" : |
| 577 request_type_ == URLFetcher::PUT ? "PUT" : "PATCH"); | 578 request_type_ == URLFetcher::PUT ? "PUT" : "PATCH"); |
| 578 if (!upload_content_type_.empty()) { | 579 if (!upload_content_type_.empty()) { |
| 579 extra_request_headers_.SetHeader(HttpRequestHeaders::kContentType, | 580 extra_request_headers_.SetHeader(HttpRequestHeaders::kContentType, |
| 580 upload_content_type_); | 581 upload_content_type_); |
| 581 } | 582 } |
| 582 if (!upload_content_.empty()) { | 583 if (!upload_content_.empty()) { |
| 583 scoped_ptr<UploadElementReader> reader(new UploadBytesElementReader( | 584 scoped_ptr<UploadElementReader> reader(new UploadBytesElementReader( |
| 584 upload_content_.data(), upload_content_.size())); | 585 upload_content_.data(), upload_content_.size())); |
| 585 request_->set_upload( | 586 request_->set_upload( |
| 586 ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0)); | 587 ElementsUploadDataStream::CreateWithReader(std::move(reader), 0)); |
| 587 } else if (!upload_file_path_.empty()) { | 588 } else if (!upload_file_path_.empty()) { |
| 588 scoped_ptr<UploadElementReader> reader( | 589 scoped_ptr<UploadElementReader> reader( |
| 589 new UploadFileElementReader(upload_file_task_runner_.get(), | 590 new UploadFileElementReader(upload_file_task_runner_.get(), |
| 590 upload_file_path_, | 591 upload_file_path_, |
| 591 upload_range_offset_, | 592 upload_range_offset_, |
| 592 upload_range_length_, | 593 upload_range_length_, |
| 593 base::Time())); | 594 base::Time())); |
| 594 request_->set_upload( | 595 request_->set_upload( |
| 595 ElementsUploadDataStream::CreateWithReader(reader.Pass(), 0)); | 596 ElementsUploadDataStream::CreateWithReader(std::move(reader), 0)); |
| 596 } else if (!upload_stream_factory_.is_null()) { | 597 } else if (!upload_stream_factory_.is_null()) { |
| 597 scoped_ptr<UploadDataStream> stream = upload_stream_factory_.Run(); | 598 scoped_ptr<UploadDataStream> stream = upload_stream_factory_.Run(); |
| 598 DCHECK(stream); | 599 DCHECK(stream); |
| 599 request_->set_upload(stream.Pass()); | 600 request_->set_upload(std::move(stream)); |
| 600 } | 601 } |
| 601 | 602 |
| 602 current_upload_bytes_ = -1; | 603 current_upload_bytes_ = -1; |
| 603 // TODO(kinaba): http://crbug.com/118103. Implement upload callback in the | 604 // TODO(kinaba): http://crbug.com/118103. Implement upload callback in the |
| 604 // layer and avoid using timer here. | 605 // layer and avoid using timer here. |
| 605 upload_progress_checker_timer_.reset(new base::RepeatingTimer()); | 606 upload_progress_checker_timer_.reset(new base::RepeatingTimer()); |
| 606 upload_progress_checker_timer_->Start( | 607 upload_progress_checker_timer_->Start( |
| 607 FROM_HERE, | 608 FROM_HERE, |
| 608 base::TimeDelta::FromMilliseconds(kUploadProgressTimerInterval), | 609 base::TimeDelta::FromMilliseconds(kUploadProgressTimerInterval), |
| 609 this, | 610 this, |
| (...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 951 } | 952 } |
| 952 | 953 |
| 953 void URLFetcherCore::AssertHasNoUploadData() const { | 954 void URLFetcherCore::AssertHasNoUploadData() const { |
| 954 DCHECK(!upload_content_set_); | 955 DCHECK(!upload_content_set_); |
| 955 DCHECK(upload_content_.empty()); | 956 DCHECK(upload_content_.empty()); |
| 956 DCHECK(upload_file_path_.empty()); | 957 DCHECK(upload_file_path_.empty()); |
| 957 DCHECK(upload_stream_factory_.is_null()); | 958 DCHECK(upload_stream_factory_.is_null()); |
| 958 } | 959 } |
| 959 | 960 |
| 960 } // namespace net | 961 } // namespace net |
| OLD | NEW |