Remove ability for a URLRequest to use a separate NetworkDelegate.
The URLRequest constructor could accept a NetworkDelegate argument
which would override the URLRequestContext's NetworkDelegate. However,
URLRequest's constructor was private, and only URLRequestContext could
call it, and URLRequestContext didn't have a method to pass a
NetworkDelegate other than its own to URLRequest's constructor. As a
result, not only was nothing taking advantage of this ability, but
nothing *could* take advantage of it.
To the extent of my knowledge, this ability has never been used, yet
the per-request NetworkDelegate argument was wired through the entire
URLRequestJob creation stack.
Since this CL is already touching all URLRequestInterceptors, it
also updates the URLRequestInterceptor API to return a unique_ptr.
TBR= [email protected]
Bug: 1126597
Change-Id: I5f0fade639e06a2edc8f514853262af3afa6e110
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2401854
Reviewed-by: Matt Menke <[email protected]>
Reviewed-by: Monica Basta <[email protected]>
Reviewed-by: Eugene But <[email protected]>
Reviewed-by: Eric Roman <[email protected]>
Commit-Queue: Matt Menke <[email protected]>
Cr-Commit-Position: refs/heads/master@{#807048}
diff --git a/net/cert_net/cert_net_fetcher_url_request_unittest.cc b/net/cert_net/cert_net_fetcher_url_request_unittest.cc
index 9568a1a1..08e92be 100644
--- a/net/cert_net/cert_net_fetcher_url_request_unittest.cc
+++ b/net/cert_net/cert_net_fetcher_url_request_unittest.cc
@@ -260,9 +260,8 @@
private:
// URLRequestInterceptor implementation:
- net::URLRequestJob* MaybeInterceptRequest(
- net::URLRequest* request,
- net::NetworkDelegate* network_delegate) const override {
+ std::unique_ptr<net::URLRequestJob> MaybeInterceptRequest(
+ net::URLRequest* request) const override {
EXPECT_TRUE(request->disable_secure_dns());
*invoked_interceptor_ = true;
return nullptr;
diff --git a/net/dns/dns_transaction_unittest.cc b/net/dns/dns_transaction_unittest.cc
index c634da52..3816b918 100644
--- a/net/dns/dns_transaction_unittest.cc
+++ b/net/dns/dns_transaction_unittest.cc
@@ -420,9 +420,8 @@
// Callback that allows the test to substitute its own implementation
// of URLRequestJob to handle the request.
-typedef base::RepeatingCallback<URLRequestJob*(
+typedef base::RepeatingCallback<std::unique_ptr<URLRequestJob>(
URLRequest* request,
- NetworkDelegate* network_delegate,
SocketDataProvider* data_provider)>
DohJobMakerCallback;
@@ -432,10 +431,9 @@
public:
URLRequestMockDohJob(
URLRequest* request,
- NetworkDelegate* network_delegate,
SocketDataProvider* data_provider,
ResponseModifierCallback response_modifier = ResponseModifierCallback())
- : URLRequestJob(request, network_delegate),
+ : URLRequestJob(request),
content_length_(0),
leftover_data_len_(0),
data_provider_(data_provider),
@@ -783,8 +781,7 @@
}
}
- URLRequestJob* MaybeInterceptRequest(URLRequest* request,
- NetworkDelegate* network_delegate) {
+ std::unique_ptr<URLRequestJob> MaybeInterceptRequest(URLRequest* request) {
// If the path indicates a redirect, skip checking the list of
// configured servers, because it won't be there and we still want
// to handle it.
@@ -847,10 +844,10 @@
SocketDataProvider* provider = socket_factory_->mock_data().GetNext();
if (doh_job_maker_)
- return doh_job_maker_.Run(request, network_delegate, provider);
+ return doh_job_maker_.Run(request, provider);
- return new URLRequestMockDohJob(request, network_delegate, provider,
- response_modifier_);
+ return std::make_unique<URLRequestMockDohJob>(request, provider,
+ response_modifier_);
}
class DohJobInterceptor : public URLRequestInterceptor {
@@ -859,10 +856,9 @@
~DohJobInterceptor() override {}
// URLRequestInterceptor implementation:
- URLRequestJob* MaybeInterceptRequest(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
- return test_->MaybeInterceptRequest(request, network_delegate);
+ std::unique_ptr<URLRequestJob> MaybeInterceptRequest(
+ URLRequest* request) const override {
+ return test_->MaybeInterceptRequest(request);
}
private:
@@ -1591,13 +1587,12 @@
EXPECT_TRUE(helper0.RunUntilDone(transaction_factory_.get()));
}
-URLRequestJob* DohJobMakerCallbackFailLookup(URLRequest* request,
- NetworkDelegate* network_delegate,
- SocketDataProvider* data) {
+std::unique_ptr<URLRequestJob> DohJobMakerCallbackFailLookup(
+ URLRequest* request,
+ SocketDataProvider* data) {
URLRequestMockDohJob::MatchQueryData(request, data);
- return new URLRequestFailedJob(request, network_delegate,
- URLRequestFailedJob::START,
- ERR_NAME_NOT_RESOLVED);
+ return std::make_unique<URLRequestFailedJob>(
+ request, URLRequestFailedJob::START, ERR_NAME_NOT_RESOLVED);
}
TEST_F(DnsTransactionTest, HttpsPostLookupFailDohServerLookup) {
@@ -1614,12 +1609,12 @@
EXPECT_TRUE(helper0.RunUntilDone(transaction_factory_.get()));
}
-URLRequestJob* DohJobMakerCallbackFailStart(URLRequest* request,
- NetworkDelegate* network_delegate,
- SocketDataProvider* data) {
+std::unique_ptr<URLRequestJob> DohJobMakerCallbackFailStart(
+ URLRequest* request,
+ SocketDataProvider* data) {
URLRequestMockDohJob::MatchQueryData(request, data);
- return new URLRequestFailedJob(request, network_delegate,
- URLRequestFailedJob::START, ERR_FAILED);
+ return std::make_unique<URLRequestFailedJob>(
+ request, URLRequestFailedJob::START, ERR_FAILED);
}
TEST_F(DnsTransactionTest, HttpsPostLookupFailStart) {
@@ -1635,12 +1630,12 @@
EXPECT_TRUE(helper0.RunUntilDone(transaction_factory_.get()));
}
-URLRequestJob* DohJobMakerCallbackFailSync(URLRequest* request,
- NetworkDelegate* network_delegate,
- SocketDataProvider* data) {
+std::unique_ptr<URLRequestJob> DohJobMakerCallbackFailSync(
+ URLRequest* request,
+ SocketDataProvider* data) {
URLRequestMockDohJob::MatchQueryData(request, data);
- return new URLRequestFailedJob(request, network_delegate,
- URLRequestFailedJob::READ_SYNC, ERR_FAILED);
+ return std::make_unique<URLRequestFailedJob>(
+ request, URLRequestFailedJob::READ_SYNC, ERR_FAILED);
}
TEST_F(DnsTransactionTest, HttpsPostLookupFailSync) {
@@ -1656,12 +1651,12 @@
EXPECT_TRUE(helper0.RunUntilDone(transaction_factory_.get()));
}
-URLRequestJob* DohJobMakerCallbackFailAsync(URLRequest* request,
- NetworkDelegate* network_delegate,
- SocketDataProvider* data) {
+std::unique_ptr<URLRequestJob> DohJobMakerCallbackFailAsync(
+ URLRequest* request,
+ SocketDataProvider* data) {
URLRequestMockDohJob::MatchQueryData(request, data);
- return new URLRequestFailedJob(request, network_delegate,
- URLRequestFailedJob::READ_ASYNC, ERR_FAILED);
+ return std::make_unique<URLRequestFailedJob>(
+ request, URLRequestFailedJob::READ_ASYNC, ERR_FAILED);
}
TEST_F(DnsTransactionTest, HttpsPostLookupFailAsync) {
diff --git a/net/test/url_request/ssl_certificate_error_job.cc b/net/test/url_request/ssl_certificate_error_job.cc
index 5044c74..ebe76f3 100644
--- a/net/test/url_request/ssl_certificate_error_job.cc
+++ b/net/test/url_request/ssl_certificate_error_job.cc
@@ -27,10 +27,9 @@
~MockJobInterceptor() override = default;
// URLRequestJobFactory::ProtocolHandler implementation:
- URLRequestJob* MaybeInterceptRequest(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
- return new SSLCertificateErrorJob(request, network_delegate);
+ std::unique_ptr<URLRequestJob> MaybeInterceptRequest(
+ URLRequest* request) const override {
+ return std::make_unique<SSLCertificateErrorJob>(request);
}
private:
@@ -39,10 +38,10 @@
} // namespace
-SSLCertificateErrorJob::SSLCertificateErrorJob(
- URLRequest* request,
- NetworkDelegate* network_delegate)
- : URLRequestJob(request, network_delegate) {}
+SSLCertificateErrorJob::SSLCertificateErrorJob(URLRequest* request)
+ : URLRequestJob(request) {}
+
+SSLCertificateErrorJob::~SSLCertificateErrorJob() = default;
void SSLCertificateErrorJob::Start() {
base::ThreadTaskRunnerHandle::Get()->PostTask(
@@ -61,8 +60,6 @@
return GURL(base::StringPrintf("https://%s", kMockHostname));
}
-SSLCertificateErrorJob::~SSLCertificateErrorJob() = default;
-
void SSLCertificateErrorJob::NotifyError() {
SSLInfo info;
info.cert_status = CERT_STATUS_DATE_INVALID;
diff --git a/net/test/url_request/ssl_certificate_error_job.h b/net/test/url_request/ssl_certificate_error_job.h
index 7a2c86f7..c3af368 100644
--- a/net/test/url_request/ssl_certificate_error_job.h
+++ b/net/test/url_request/ssl_certificate_error_job.h
@@ -12,14 +12,14 @@
namespace net {
-class NetworkDelegate;
class URLRequest;
// SSLCertificateErrorJob simulates a ERR_CERT_DATE_INVALID error.
class SSLCertificateErrorJob : public URLRequestJob {
public:
- SSLCertificateErrorJob(URLRequest* request,
- NetworkDelegate* network_delegate);
+ explicit SSLCertificateErrorJob(URLRequest* request);
+
+ ~SSLCertificateErrorJob() override;
// URLRequestJob implementation:
void Start() override;
@@ -30,8 +30,6 @@
static GURL GetMockUrl();
private:
- ~SSLCertificateErrorJob() override;
-
void NotifyError();
base::WeakPtrFactory<SSLCertificateErrorJob> weak_factory_{this};
diff --git a/net/test/url_request/url_request_failed_job.cc b/net/test/url_request/url_request_failed_job.cc
index 78f74f4f..09bc153 100644
--- a/net/test/url_request/url_request_failed_job.cc
+++ b/net/test/url_request/url_request_failed_job.cc
@@ -41,9 +41,8 @@
~MockJobInterceptor() override = default;
// URLRequestJobFactory::ProtocolHandler implementation:
- URLRequestJob* MaybeInterceptRequest(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
+ std::unique_ptr<URLRequestJob> MaybeInterceptRequest(
+ URLRequest* request) const override {
int net_error = OK;
URLRequestFailedJob::FailurePhase phase =
URLRequestFailedJob::FailurePhase::MAX_FAILURE_PHASE;
@@ -57,7 +56,7 @@
}
}
}
- return new URLRequestFailedJob(request, network_delegate, phase, net_error);
+ return std::make_unique<URLRequestFailedJob>(request, phase, net_error);
}
private:
@@ -78,10 +77,9 @@
} // namespace
URLRequestFailedJob::URLRequestFailedJob(URLRequest* request,
- NetworkDelegate* network_delegate,
FailurePhase phase,
int net_error)
- : URLRequestJob(request, network_delegate),
+ : URLRequestJob(request),
phase_(phase),
net_error_(net_error),
total_received_bytes_(0) {
@@ -90,11 +88,10 @@
CHECK_LT(net_error, OK);
}
-URLRequestFailedJob::URLRequestFailedJob(URLRequest* request,
- NetworkDelegate* network_delegate,
- int net_error)
- : URLRequestFailedJob(request, network_delegate, START, net_error) {
-}
+URLRequestFailedJob::URLRequestFailedJob(URLRequest* request, int net_error)
+ : URLRequestFailedJob(request, START, net_error) {}
+
+URLRequestFailedJob::~URLRequestFailedJob() = default;
void URLRequestFailedJob::Start() {
base::ThreadTaskRunnerHandle::Get()->PostTask(
@@ -179,8 +176,6 @@
return GetMockUrl("https", hostname, START, net_error);
}
-URLRequestFailedJob::~URLRequestFailedJob() = default;
-
void URLRequestFailedJob::StartAsync() {
if (phase_ == START) {
if (net_error_ != ERR_IO_PENDING) {
diff --git a/net/test/url_request/url_request_failed_job.h b/net/test/url_request/url_request_failed_job.h
index 8ce4763f..3b14f9c1 100644
--- a/net/test/url_request/url_request_failed_job.h
+++ b/net/test/url_request/url_request_failed_job.h
@@ -29,15 +29,15 @@
};
URLRequestFailedJob(URLRequest* request,
- NetworkDelegate* network_delegate,
FailurePhase phase,
int net_error);
// Same as above, except that the job fails at FailurePhase.START.
URLRequestFailedJob(URLRequest* request,
- NetworkDelegate* network_delegate,
int net_error);
+ ~URLRequestFailedJob() override;
+
// URLRequestJob implementation:
void Start() override;
int ReadRawData(IOBuffer* buf, int buf_size) override;
@@ -72,7 +72,6 @@
const std::string& hostname);
protected:
- ~URLRequestFailedJob() override;
void StartAsync();
private:
diff --git a/net/test/url_request/url_request_hanging_read_job.cc b/net/test/url_request/url_request_hanging_read_job.cc
index df9bf44..4089df8d 100644
--- a/net/test/url_request/url_request_hanging_read_job.cc
+++ b/net/test/url_request/url_request_hanging_read_job.cc
@@ -31,10 +31,9 @@
~MockJobInterceptor() override = default;
// URLRequestInterceptor implementation
- URLRequestJob* MaybeInterceptRequest(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
- return new URLRequestHangingReadJob(request, network_delegate);
+ std::unique_ptr<URLRequestJob> MaybeInterceptRequest(
+ URLRequest* request) const override {
+ return std::make_unique<URLRequestHangingReadJob>(request);
}
private:
@@ -43,12 +42,12 @@
} // namespace
-URLRequestHangingReadJob::URLRequestHangingReadJob(
- URLRequest* request,
- NetworkDelegate* network_delegate)
- : URLRequestJob(request, network_delegate),
- content_length_(10) // non-zero content-length
-{}
+URLRequestHangingReadJob::URLRequestHangingReadJob(URLRequest* request)
+ : URLRequestJob(request),
+ // non-zero content-length
+ content_length_(10) {}
+
+URLRequestHangingReadJob::~URLRequestHangingReadJob() = default;
void URLRequestHangingReadJob::Start() {
// Start reading asynchronously so that all error reporting and data
@@ -58,8 +57,6 @@
weak_factory_.GetWeakPtr()));
}
-URLRequestHangingReadJob::~URLRequestHangingReadJob() = default;
-
int URLRequestHangingReadJob::ReadRawData(IOBuffer* buf, int buf_size) {
// Make read hang. It never completes.
return ERR_IO_PENDING;
diff --git a/net/test/url_request/url_request_hanging_read_job.h b/net/test/url_request/url_request_hanging_read_job.h
index bd4a4a7..d91580d 100644
--- a/net/test/url_request/url_request_hanging_read_job.h
+++ b/net/test/url_request/url_request_hanging_read_job.h
@@ -16,8 +16,8 @@
// A URLRequestJob that hangs when try to read response body.
class URLRequestHangingReadJob : public URLRequestJob {
public:
- URLRequestHangingReadJob(URLRequest* request,
- NetworkDelegate* network_delegate);
+ explicit URLRequestHangingReadJob(URLRequest* request);
+ ~URLRequestHangingReadJob() override;
void Start() override;
int ReadRawData(IOBuffer* buf, int buf_size) override;
@@ -31,7 +31,6 @@
private:
void GetResponseInfoConst(HttpResponseInfo* info) const;
- ~URLRequestHangingReadJob() override;
void StartAsync();
diff --git a/net/test/url_request/url_request_mock_data_job.cc b/net/test/url_request/url_request_mock_data_job.cc
index 59e69f9..964067a 100644
--- a/net/test/url_request/url_request_mock_data_job.cc
+++ b/net/test/url_request/url_request_mock_data_job.cc
@@ -79,13 +79,12 @@
~MockJobInterceptor() override = default;
// URLRequestInterceptor implementation
- URLRequestJob* MaybeInterceptRequest(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
- return new URLRequestMockDataJob(request, network_delegate,
- GetDataFromRequest(*request),
- GetRepeatCountFromRequest(*request),
- GetRequestClientCertificate(*request));
+ std::unique_ptr<URLRequestJob> MaybeInterceptRequest(
+ URLRequest* request) const override {
+ return std::make_unique<URLRequestMockDataJob>(
+ request, GetDataFromRequest(*request),
+ GetRepeatCountFromRequest(*request),
+ GetRequestClientCertificate(*request));
}
private:
@@ -95,11 +94,10 @@
} // namespace
URLRequestMockDataJob::URLRequestMockDataJob(URLRequest* request,
- NetworkDelegate* network_delegate,
const std::string& data,
int data_repeat_count,
bool request_client_certificate)
- : URLRequestJob(request, network_delegate),
+ : URLRequestJob(request),
data_offset_(0),
request_client_certificate_(request_client_certificate) {
DCHECK_GT(data_repeat_count, 0);
@@ -108,6 +106,8 @@
}
}
+URLRequestMockDataJob::~URLRequestMockDataJob() = default;
+
void URLRequestMockDataJob::OverrideResponseHeaders(
const std::string& headers) {
headers_ = headers;
@@ -121,8 +121,6 @@
weak_factory_.GetWeakPtr()));
}
-URLRequestMockDataJob::~URLRequestMockDataJob() = default;
-
int URLRequestMockDataJob::ReadRawData(IOBuffer* buf, int buf_size) {
int bytes_read =
std::min(static_cast<size_t>(buf_size), data_.length() - data_offset_);
diff --git a/net/test/url_request/url_request_mock_data_job.h b/net/test/url_request/url_request_mock_data_job.h
index 1e183699..6011a58 100644
--- a/net/test/url_request/url_request_mock_data_job.h
+++ b/net/test/url_request/url_request_mock_data_job.h
@@ -23,10 +23,10 @@
class URLRequestMockDataJob : public URLRequestJob {
public:
URLRequestMockDataJob(URLRequest* request,
- NetworkDelegate* network_delegate,
const std::string& data,
int data_repeat_count,
bool request_client_certificate);
+ ~URLRequestMockDataJob() override;
void Start() override;
int ReadRawData(IOBuffer* buf, int buf_size) override;
@@ -61,9 +61,6 @@
// Overrides response headers in the mocked response.
void OverrideResponseHeaders(const std::string& headers);
- protected:
- ~URLRequestMockDataJob() override;
-
private:
void GetResponseInfoConst(HttpResponseInfo* info) const;
diff --git a/net/test/url_request/url_request_mock_http_job.cc b/net/test/url_request/url_request_mock_http_job.cc
index 1f96c0b..8533009b 100644
--- a/net/test/url_request/url_request_mock_http_job.cc
+++ b/net/test/url_request/url_request_mock_http_job.cc
@@ -41,11 +41,10 @@
~MockJobInterceptor() override = default;
// URLRequestJobFactory::ProtocolHandler implementation
- URLRequestJob* MaybeInterceptRequest(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
- return new URLRequestMockHTTPJob(
- request, network_delegate,
+ std::unique_ptr<URLRequestJob> MaybeInterceptRequest(
+ URLRequest* request) const override {
+ return std::make_unique<URLRequestMockHTTPJob>(
+ request,
map_all_requests_to_base_path_ ? base_path_ : GetOnDiskPath(request));
}
@@ -126,11 +125,9 @@
}
URLRequestMockHTTPJob::URLRequestMockHTTPJob(URLRequest* request,
- NetworkDelegate* network_delegate,
const base::FilePath& file_path)
: URLRequestTestJobBackedByFile(
request,
- network_delegate,
file_path,
base::ThreadPool::CreateTaskRunner({base::MayBlock()})) {}
diff --git a/net/test/url_request/url_request_mock_http_job.h b/net/test/url_request/url_request_mock_http_job.h
index 905cfc71..2c053792 100644
--- a/net/test/url_request/url_request_mock_http_job.h
+++ b/net/test/url_request/url_request_mock_http_job.h
@@ -30,8 +30,8 @@
public:
// Note that all file I/O is done using ThreadPool.
URLRequestMockHTTPJob(URLRequest* request,
- NetworkDelegate* network_delegate,
const base::FilePath& file_path);
+ ~URLRequestMockHTTPJob() override;
// URLRequestJob overrides.
void Start() override;
@@ -67,9 +67,6 @@
static std::unique_ptr<URLRequestInterceptor> CreateInterceptorForSingleFile(
const base::FilePath& file);
- protected:
- ~URLRequestMockHTTPJob() override;
-
private:
void GetResponseInfoConst(HttpResponseInfo* info) const;
void SetHeadersAndStart(const std::string& raw_headers);
diff --git a/net/test/url_request/url_request_test_job_backed_by_file.cc b/net/test/url_request/url_request_test_job_backed_by_file.cc
index 72e0655..b128704 100644
--- a/net/test/url_request/url_request_test_job_backed_by_file.cc
+++ b/net/test/url_request/url_request_test_job_backed_by_file.cc
@@ -54,10 +54,9 @@
URLRequestTestJobBackedByFile::URLRequestTestJobBackedByFile(
URLRequest* request,
- NetworkDelegate* network_delegate,
const base::FilePath& file_path,
const scoped_refptr<base::TaskRunner>& file_task_runner)
- : URLRequestJob(request, network_delegate),
+ : URLRequestJob(request),
file_path_(file_path),
stream_(new FileStream(file_task_runner)),
file_task_runner_(file_task_runner),
diff --git a/net/test/url_request/url_request_test_job_backed_by_file.h b/net/test/url_request/url_request_test_job_backed_by_file.h
index cea7d39..e95c8a6f 100644
--- a/net/test/url_request/url_request_test_job_backed_by_file.h
+++ b/net/test/url_request/url_request_test_job_backed_by_file.h
@@ -38,7 +38,6 @@
public:
URLRequestTestJobBackedByFile(
URLRequest* request,
- NetworkDelegate* network_delegate,
const base::FilePath& file_path,
const scoped_refptr<base::TaskRunner>& file_task_runner);
diff --git a/net/test/url_request/url_request_test_job_backed_by_file_unittest.cc b/net/test/url_request/url_request_test_job_backed_by_file_unittest.cc
index 37495dd2..e4f4e87 100644
--- a/net/test/url_request/url_request_test_job_backed_by_file_unittest.cc
+++ b/net/test/url_request/url_request_test_job_backed_by_file_unittest.cc
@@ -35,7 +35,6 @@
// OnReadComplete.
TestURLRequestTestJobBackedByFile(
URLRequest* request,
- NetworkDelegate* network_delegate,
const base::FilePath& file_path,
const scoped_refptr<base::TaskRunner>& file_task_runner,
int* open_result,
@@ -43,7 +42,6 @@
bool* done_reading,
std::string* observed_content)
: URLRequestTestJobBackedByFile(request,
- network_delegate,
file_path,
file_task_runner),
open_result_(open_result),
@@ -232,9 +230,8 @@
kUrl, DEFAULT_PRIORITY, &delegate_, TRAFFIC_ANNOTATION_FOR_TESTS));
TestScopedURLInterceptor interceptor(
kUrl, std::make_unique<TestURLRequestTestJobBackedByFile>(
- request.get(), context_.network_delegate(), path,
- base::ThreadTaskRunnerHandle::Get(), open_result, seek_position,
- done_reading, observed_content));
+ request.get(), path, base::ThreadTaskRunnerHandle::Get(),
+ open_result, seek_position, done_reading, observed_content));
if (!range.empty()) {
request->SetExtraRequestHeaderByName(HttpRequestHeaders::kRange, range,
true /*overwrite*/);
diff --git a/net/url_request/ftp_protocol_handler.cc b/net/url_request/ftp_protocol_handler.cc
index a052bfa5..03783e50 100644
--- a/net/url_request/ftp_protocol_handler.cc
+++ b/net/url_request/ftp_protocol_handler.cc
@@ -35,19 +35,16 @@
FtpProtocolHandler::~FtpProtocolHandler() = default;
std::unique_ptr<URLRequestJob> FtpProtocolHandler::CreateJob(
- URLRequest* request,
- NetworkDelegate* network_delegate) const {
+ URLRequest* request) const {
DCHECK_EQ("ftp", request->url().scheme());
if (!IsPortAllowedForScheme(request->url().EffectiveIntPort(),
request->url().scheme_piece())) {
- return std::make_unique<URLRequestErrorJob>(request, network_delegate,
- ERR_UNSAFE_PORT);
+ return std::make_unique<URLRequestErrorJob>(request, ERR_UNSAFE_PORT);
}
- return std::make_unique<URLRequestFtpJob>(request, network_delegate,
- ftp_transaction_factory_.get(),
- ftp_auth_cache_);
+ return std::make_unique<URLRequestFtpJob>(
+ request, ftp_transaction_factory_.get(), ftp_auth_cache_);
}
FtpProtocolHandler::FtpProtocolHandler(
diff --git a/net/url_request/ftp_protocol_handler.h b/net/url_request/ftp_protocol_handler.h
index d1e1906..114a051 100644
--- a/net/url_request/ftp_protocol_handler.h
+++ b/net/url_request/ftp_protocol_handler.h
@@ -17,7 +17,6 @@
class FtpAuthCache;
class FtpTransactionFactory;
class HostResolver;
-class NetworkDelegate;
class URLRequestJob;
// Implements a ProtocolHandler for FTP.
@@ -37,9 +36,7 @@
std::unique_ptr<FtpTransactionFactory> ftp_transaction_factory,
FtpAuthCache* auth_cache);
- std::unique_ptr<URLRequestJob> CreateJob(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override;
+ std::unique_ptr<URLRequestJob> CreateJob(URLRequest* request) const override;
private:
friend class FtpTestURLRequestContext;
diff --git a/net/url_request/report_sender_unittest.cc b/net/url_request/report_sender_unittest.cc
index e897d36d..c921c6cc 100644
--- a/net/url_request/report_sender_unittest.cc
+++ b/net/url_request/report_sender_unittest.cc
@@ -81,8 +81,7 @@
// URLRequestJob that returns an HTTP 500 response.
class MockServerErrorJob : public URLRequestJob {
public:
- MockServerErrorJob(URLRequest* request, NetworkDelegate* network_delegate)
- : URLRequestJob(request, network_delegate) {}
+ explicit MockServerErrorJob(URLRequest* request) : URLRequestJob(request) {}
~MockServerErrorJob() override = default;
protected:
@@ -103,10 +102,9 @@
MockServerErrorJobInterceptor() = default;
~MockServerErrorJobInterceptor() override = default;
- URLRequestJob* MaybeInterceptRequest(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
- return new MockServerErrorJob(request, network_delegate);
+ std::unique_ptr<URLRequestJob> MaybeInterceptRequest(
+ URLRequest* request) const override {
+ return std::make_unique<MockServerErrorJob>(request);
}
private:
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
index 87cc2d7..9138aae0 100644
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -170,8 +170,8 @@
Cancel();
- if (network_delegate_) {
- network_delegate_->NotifyURLRequestDestroyed(this);
+ if (network_delegate()) {
+ network_delegate()->NotifyURLRequestDestroyed(this);
if (job_.get())
job_->NotifyURLRequestDestroyed();
}
@@ -507,9 +507,9 @@
load_timing_info_.request_start_time = response_info_.request_time;
load_timing_info_.request_start = base::TimeTicks::Now();
- if (network_delegate_) {
+ if (network_delegate()) {
OnCallToDelegate(NetLogEventType::NETWORK_DELEGATE_BEFORE_URL_REQUEST);
- int error = network_delegate_->NotifyBeforeURLRequest(
+ int error = network_delegate()->NotifyBeforeURLRequest(
this,
base::BindOnce(&URLRequest::BeforeRequestComplete,
base::Unretained(this)),
@@ -521,7 +521,7 @@
return;
}
- StartJob(context_->job_factory()->CreateJob(this, network_delegate_));
+ StartJob(context_->job_factory()->CreateJob(this));
}
///////////////////////////////////////////////////////////////////////////////
@@ -530,11 +530,8 @@
RequestPriority priority,
Delegate* delegate,
const URLRequestContext* context,
- NetworkDelegate* network_delegate,
NetworkTrafficAnnotationTag traffic_annotation)
: context_(context),
- network_delegate_(network_delegate ? network_delegate
- : context->network_delegate()),
net_log_(NetLogWithSource::Make(context->net_log(),
NetLogSourceType::URL_REQUEST)),
url_chain_(1, url),
@@ -588,18 +585,17 @@
if (error != OK) {
net_log_.AddEventWithStringParams(NetLogEventType::CANCELLED, "source",
"delegate");
- StartJob(
- std::make_unique<URLRequestErrorJob>(this, network_delegate_, error));
+ StartJob(std::make_unique<URLRequestErrorJob>(this, error));
} else if (!delegate_redirect_url_.is_empty()) {
GURL new_url;
new_url.Swap(&delegate_redirect_url_);
StartJob(std::make_unique<URLRequestRedirectJob>(
- this, network_delegate_, new_url,
+ this, new_url,
// Use status code 307 to preserve the method, so POST requests work.
URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "Delegate"));
} else {
- StartJob(context_->job_factory()->CreateJob(this, network_delegate_));
+ StartJob(context_->job_factory()->CreateJob(this));
}
}
@@ -639,8 +635,8 @@
if (referrer_url !=
URLRequestJob::ComputeReferrerForPolicy(
referrer_policy_, referrer_url, url(), &same_origin_for_metrics)) {
- if (!network_delegate_ ||
- !network_delegate_->CancelURLRequestWithPolicyViolatingReferrerHeader(
+ if (!network_delegate() ||
+ !network_delegate()->CancelURLRequestWithPolicyViolatingReferrerHeader(
*this, url(), referrer_url)) {
referrer_.clear();
} else {
@@ -649,8 +645,8 @@
referrer_.clear();
net_log_.AddEventWithStringParams(NetLogEventType::CANCELLED, "source",
"delegate");
- RestartWithJob(std::make_unique<URLRequestErrorJob>(
- this, network_delegate_, ERR_BLOCKED_BY_CLIENT));
+ RestartWithJob(
+ std::make_unique<URLRequestErrorJob>(this, ERR_BLOCKED_BY_CLIENT));
return;
}
}
@@ -801,8 +797,8 @@
// In some cases (e.g. an event was canceled), we might have sent the
// completion event and receive a NotifyResponseStarted() later.
if (!has_notified_completion_ && net_error == OK) {
- if (network_delegate_)
- network_delegate_->NotifyResponseStarted(this, net_error);
+ if (network_delegate())
+ network_delegate()->NotifyResponseStarted(this, net_error);
}
// Notify in case the entire URL Request has been finished.
@@ -907,8 +903,8 @@
redirect_info.new_url.possibly_invalid_spec());
}
- if (network_delegate_)
- network_delegate_->NotifyBeforeRedirect(this, redirect_info.new_url);
+ if (network_delegate())
+ network_delegate()->NotifyBeforeRedirect(this, redirect_info.new_url);
if (!final_upload_progress_.position() && upload_data_stream_)
final_upload_progress_ = upload_data_stream_->GetUploadProgress();
@@ -938,6 +934,10 @@
return context_;
}
+NetworkDelegate* URLRequest::network_delegate() const {
+ return context_->network_delegate();
+}
+
int64_t URLRequest::GetExpectedContentSize() const {
int64_t expected_content_size = -1;
if (job_.get())
@@ -996,9 +996,9 @@
bool URLRequest::CanGetCookies() const {
DCHECK_EQ(PrivacyMode::PRIVACY_MODE_DISABLED, privacy_mode_);
bool can_get_cookies = g_default_can_use_cookies;
- if (network_delegate_) {
+ if (network_delegate()) {
can_get_cookies =
- network_delegate_->CanGetCookies(*this, /*allowed_from_caller=*/true);
+ network_delegate()->CanGetCookies(*this, /*allowed_from_caller=*/true);
}
if (!can_get_cookies)
@@ -1010,10 +1010,10 @@
CookieOptions* options) const {
DCHECK(!(load_flags_ & LOAD_DO_NOT_SAVE_COOKIES));
bool can_set_cookies = g_default_can_use_cookies;
- if (network_delegate_) {
+ if (network_delegate()) {
can_set_cookies =
- network_delegate_->CanSetCookie(*this, cookie, options,
- /*allowed_from_caller=*/true);
+ network_delegate()->CanSetCookie(*this, cookie, options,
+ /*allowed_from_caller=*/true);
}
if (!can_set_cookies)
net_log_.AddEvent(NetLogEventType::COOKIE_SET_BLOCKED_BY_NETWORK_DELEGATE);
@@ -1036,8 +1036,8 @@
// TODO(mmenke): Looks like |g_default_can_use_cookies| is not too useful,
// with the network service - remove it.
bool enable_privacy_mode = !g_default_can_use_cookies;
- if (network_delegate_) {
- enable_privacy_mode = network_delegate_->ForcePrivacyMode(
+ if (network_delegate()) {
+ enable_privacy_mode = network_delegate()->ForcePrivacyMode(
url(), site_for_cookies_, isolation_info_.top_frame_origin());
}
return enable_privacy_mode ? PRIVACY_MODE_ENABLED : PRIVACY_MODE_DISABLED;
@@ -1098,8 +1098,8 @@
is_pending_ = false;
is_redirecting_ = false;
has_notified_completion_ = true;
- if (network_delegate_)
- network_delegate_->NotifyCompleted(this, job_.get() != nullptr, status_);
+ if (network_delegate())
+ network_delegate()->NotifyCompleted(this, job_.get() != nullptr, status_);
}
void URLRequest::OnCallToDelegate(NetLogEventType type) {
diff --git a/net/url_request/url_request.h b/net/url_request/url_request.h
index 2df95bb9..adeb342 100644
--- a/net/url_request/url_request.h
+++ b/net/url_request/url_request.h
@@ -84,7 +84,6 @@
// factories to be queried. If no factory handles the request, then the
// default job will be used.
typedef URLRequestJob*(ProtocolFactory)(URLRequest* request,
- NetworkDelegate* network_delegate,
const std::string& scheme);
// Max number of http redirects to follow. The Fetch spec says: "If
@@ -621,6 +620,9 @@
// Used to specify the context (cookie store, cache) for this request.
const URLRequestContext* context() const;
+ // Returns context()->network_delegate().
+ NetworkDelegate* network_delegate() const;
+
const NetLogWithSource& net_log() const { return net_log_; }
// Returns the expected content size if available
@@ -746,14 +748,10 @@
friend class TestNetworkDelegate;
// URLRequests are always created by calling URLRequestContext::CreateRequest.
- //
- // If no network delegate is passed in, will use the ones from the
- // URLRequestContext.
URLRequest(const GURL& url,
RequestPriority priority,
Delegate* delegate,
const URLRequestContext* context,
- NetworkDelegate* network_delegate,
NetworkTrafficAnnotationTag traffic_annotation);
// Resumes or blocks a request paused by the NetworkDelegate::OnBeforeRequest
@@ -797,9 +795,9 @@
bool fatal);
void NotifyReadCompleted(int bytes_read);
- // These functions delegate to |network_delegate_| if it is not NULL.
- // If |network_delegate_| is NULL, cookies can be used unless
- // SetDefaultCookiePolicyToBlock() has been called.
+ // These functions delegate to the NetworkDelegate if it is not nullptr.
+ // Otherwise, cookies can be used unless SetDefaultCookiePolicyToBlock() has
+ // been called.
bool CanGetCookies() const;
bool CanSetCookie(const net::CanonicalCookie& cookie,
CookieOptions* options) const;
@@ -824,8 +822,6 @@
// cookie store, socket pool, etc.)
const URLRequestContext* context_;
- NetworkDelegate* network_delegate_;
-
// Tracks the time spent in various load states throughout this request.
NetLogWithSource net_log_;
@@ -852,7 +848,7 @@
// caller.
bool allow_credentials_;
// Privacy mode for current hop. Based on |allow_credentials_|, |load_flags_|,
- // and information provided by |network_delegate_|. Saving cookies can
+ // and information provided by the NetworkDelegate. Saving cookies can
// currently be blocked independently of this field by setting the deprecated
// LOAD_DO_NOT_SAVE_COOKIES field in |load_flags_|.
PrivacyMode privacy_mode_;
diff --git a/net/url_request/url_request_context.cc b/net/url_request/url_request_context.cc
index 56a3fe5..66bfcfb 100644
--- a/net/url_request/url_request_context.cc
+++ b/net/url_request/url_request_context.cc
@@ -105,8 +105,8 @@
RequestPriority priority,
URLRequest::Delegate* delegate,
NetworkTrafficAnnotationTag traffic_annotation) const {
- return base::WrapUnique(new URLRequest(
- url, priority, delegate, this, network_delegate_, traffic_annotation));
+ return base::WrapUnique(
+ new URLRequest(url, priority, delegate, this, traffic_annotation));
}
void URLRequestContext::set_cookie_store(CookieStore* cookie_store) {
diff --git a/net/url_request/url_request_error_job.cc b/net/url_request/url_request_error_job.cc
index e47d6cddc..609e95d 100644
--- a/net/url_request/url_request_error_job.cc
+++ b/net/url_request/url_request_error_job.cc
@@ -13,10 +13,8 @@
namespace net {
-URLRequestErrorJob::URLRequestErrorJob(URLRequest* request,
- NetworkDelegate* network_delegate,
- int error)
- : URLRequestJob(request, network_delegate), error_(error) {}
+URLRequestErrorJob::URLRequestErrorJob(URLRequest* request, int error)
+ : URLRequestJob(request), error_(error) {}
URLRequestErrorJob::~URLRequestErrorJob() = default;
diff --git a/net/url_request/url_request_error_job.h b/net/url_request/url_request_error_job.h
index c180442..205b150 100644
--- a/net/url_request/url_request_error_job.h
+++ b/net/url_request/url_request_error_job.h
@@ -17,7 +17,6 @@
class NET_EXPORT URLRequestErrorJob : public URLRequestJob {
public:
URLRequestErrorJob(URLRequest* request,
- NetworkDelegate* network_delegate,
int error);
~URLRequestErrorJob() override;
diff --git a/net/url_request/url_request_filter.cc b/net/url_request/url_request_filter.cc
index c777e5e..77203dd 100644
--- a/net/url_request/url_request_filter.cc
+++ b/net/url_request/url_request_filter.cc
@@ -8,6 +8,7 @@
#include "base/stl_util.h"
#include "base/task/current_thread.h"
#include "net/url_request/url_request.h"
+#include "net/url_request/url_request_job.h"
#include "net/url_request/url_request_job_factory.h"
namespace net {
@@ -108,14 +109,14 @@
hit_count_ = 0;
}
-URLRequestJob* URLRequestFilter::MaybeInterceptRequest(
- URLRequest* request,
- NetworkDelegate* network_delegate) const {
+std::unique_ptr<URLRequestJob> URLRequestFilter::MaybeInterceptRequest(
+ URLRequest* request) const {
DCHECK(base::CurrentIOThread::Get());
- URLRequestJob* job = nullptr;
if (!request->url().is_valid())
return nullptr;
+ std::unique_ptr<URLRequestJob> job;
+
// Check the hostname map first.
const std::string hostname = request->url().host();
const std::string scheme = request->url().scheme();
@@ -123,7 +124,7 @@
{
auto it = hostname_interceptor_map_.find(make_pair(scheme, hostname));
if (it != hostname_interceptor_map_.end())
- job = it->second->MaybeInterceptRequest(request, network_delegate);
+ job = it->second->MaybeInterceptRequest(request);
}
if (!job) {
@@ -131,7 +132,7 @@
const std::string& url = request->url().spec();
auto it = url_interceptor_map_.find(url);
if (it != url_interceptor_map_.end())
- job = it->second->MaybeInterceptRequest(request, network_delegate);
+ job = it->second->MaybeInterceptRequest(request);
}
if (job) {
DVLOG(1) << "URLRequestFilter hit for " << request->url().spec();
diff --git a/net/url_request/url_request_filter.h b/net/url_request/url_request_filter.h
index 29b08f2..003620a 100644
--- a/net/url_request/url_request_filter.h
+++ b/net/url_request/url_request_filter.h
@@ -65,9 +65,8 @@
int hit_count() const { return hit_count_; }
// URLRequestInterceptor implementation:
- URLRequestJob* MaybeInterceptRequest(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override;
+ std::unique_ptr<URLRequestJob> MaybeInterceptRequest(
+ URLRequest* request) const override;
private:
// scheme,hostname -> URLRequestInterceptor
diff --git a/net/url_request/url_request_filter_unittest.cc b/net/url_request/url_request_filter_unittest.cc
index 7af73646..d0e3502 100644
--- a/net/url_request/url_request_filter_unittest.cc
+++ b/net/url_request/url_request_filter_unittest.cc
@@ -7,6 +7,7 @@
#include <memory>
#include "base/macros.h"
+#include "base/memory/ptr_util.h"
#include "base/test/task_environment.h"
#include "net/base/request_priority.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
@@ -28,11 +29,10 @@
~TestURLRequestInterceptor() override = default;
// URLRequestInterceptor implementation:
- URLRequestJob* MaybeInterceptRequest(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
- job_ = new URLRequestTestJob(request, network_delegate);
- return job_;
+ std::unique_ptr<URLRequestJob> MaybeInterceptRequest(
+ URLRequest* request) const override {
+ job_ = new URLRequestTestJob(request);
+ return base::WrapUnique<URLRequestJob>(job_);
}
// Is |job| the URLRequestJob generated during interception?
@@ -72,21 +72,19 @@
EXPECT_TRUE(filter->AddUrlInterceptor(
kUrl1, std::unique_ptr<URLRequestInterceptor>(interceptor)));
{
- std::unique_ptr<URLRequestJob> found(
- filter->MaybeInterceptRequest(request1.get(), nullptr));
+ std::unique_ptr<URLRequestJob> found =
+ filter->MaybeInterceptRequest(request1.get());
EXPECT_TRUE(interceptor->WasLastJobCreated(found.get()));
}
EXPECT_EQ(filter->hit_count(), 1);
// Check we don't match other URLs.
- EXPECT_TRUE(filter->MaybeInterceptRequest(request2.get(), nullptr) ==
- nullptr);
+ EXPECT_FALSE(filter->MaybeInterceptRequest(request2.get()));
EXPECT_EQ(1, filter->hit_count());
// Check we can remove URL matching.
filter->RemoveUrlHandler(kUrl1);
- EXPECT_TRUE(filter->MaybeInterceptRequest(request1.get(), nullptr) ==
- nullptr);
+ EXPECT_FALSE(filter->MaybeInterceptRequest(request1.get()));
EXPECT_EQ(1, filter->hit_count());
// Check hostname matching.
@@ -97,21 +95,19 @@
kUrl1.scheme(), kUrl1.host(),
std::unique_ptr<URLRequestInterceptor>(interceptor));
{
- std::unique_ptr<URLRequestJob> found(
- filter->MaybeInterceptRequest(request1.get(), nullptr));
+ std::unique_ptr<URLRequestJob> found =
+ filter->MaybeInterceptRequest(request1.get());
EXPECT_TRUE(interceptor->WasLastJobCreated(found.get()));
}
EXPECT_EQ(1, filter->hit_count());
// Check we don't match other hostnames.
- EXPECT_TRUE(filter->MaybeInterceptRequest(request2.get(), nullptr) ==
- nullptr);
+ EXPECT_FALSE(filter->MaybeInterceptRequest(request2.get()));
EXPECT_EQ(1, filter->hit_count());
// Check we can remove hostname matching.
filter->RemoveHostnameHandler(kUrl1.scheme(), kUrl1.host());
- EXPECT_TRUE(filter->MaybeInterceptRequest(request1.get(), nullptr) ==
- nullptr);
+ EXPECT_FALSE(filter->MaybeInterceptRequest(request1.get()));
EXPECT_EQ(1, filter->hit_count());
filter->ClearHandlers();
diff --git a/net/url_request/url_request_ftp_job.cc b/net/url_request/url_request_ftp_job.cc
index 8a23199..8ce8e65 100644
--- a/net/url_request/url_request_ftp_job.cc
+++ b/net/url_request/url_request_ftp_job.cc
@@ -43,10 +43,9 @@
URLRequestFtpJob::URLRequestFtpJob(
URLRequest* request,
- NetworkDelegate* network_delegate,
FtpTransactionFactory* ftp_transaction_factory,
FtpAuthCache* ftp_auth_cache)
- : URLRequestJob(request, network_delegate),
+ : URLRequestJob(request),
proxy_resolution_service_(
request_->context()->proxy_resolution_service()),
read_in_progress_(false),
diff --git a/net/url_request/url_request_ftp_job.h b/net/url_request/url_request_ftp_job.h
index b796f69..6a0b17d 100644
--- a/net/url_request/url_request_ftp_job.h
+++ b/net/url_request/url_request_ftp_job.h
@@ -32,7 +32,6 @@
class FtpAuthCache;
class FtpTransactionFactory;
-class NetworkDelegate;
class ProxyResolutionRequest;
// A URLRequestJob subclass that is built on top of FtpTransaction. It
@@ -40,7 +39,6 @@
class NET_EXPORT_PRIVATE URLRequestFtpJob : public URLRequestJob {
public:
URLRequestFtpJob(URLRequest* request,
- NetworkDelegate* network_delegate,
FtpTransactionFactory* ftp_transaction_factory,
FtpAuthCache* ftp_auth_cache);
~URLRequestFtpJob() override;
diff --git a/net/url_request/url_request_ftp_job_unittest.cc b/net/url_request/url_request_ftp_job_unittest.cc
index 7ce0eba8..0c1b174 100644
--- a/net/url_request/url_request_ftp_job_unittest.cc
+++ b/net/url_request/url_request_ftp_job_unittest.cc
@@ -120,11 +120,8 @@
delete factory;
}
- std::unique_ptr<URLRequestJob> CreateJob(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
- return std::make_unique<URLRequestFtpJob>(request, network_delegate,
- factory, auth_cache);
+ std::unique_ptr<URLRequestJob> CreateJob(URLRequest* request) const override {
+ return std::make_unique<URLRequestFtpJob>(request, factory, auth_cache);
}
bool IsSafeRedirectTarget(const GURL& location) const override {
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
index 4b58106..f5e754f 100644
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -216,9 +216,7 @@
namespace net {
-std::unique_ptr<URLRequestJob> URLRequestHttpJob::Create(
- URLRequest* request,
- NetworkDelegate* network_delegate) {
+std::unique_ptr<URLRequestJob> URLRequestHttpJob::Create(URLRequest* request) {
const GURL& url = request->url();
// URLRequestContext must have been initialized.
@@ -236,7 +234,7 @@
replacements.SetSchemeStr(
url.SchemeIs(url::kHttpScheme) ? url::kHttpsScheme : url::kWssScheme);
return std::make_unique<URLRequestRedirectJob>(
- request, network_delegate, url.ReplaceComponents(replacements),
+ request, url.ReplaceComponents(replacements),
// Use status code 307 to preserve the method, so POST requests work.
URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "HSTS");
}
@@ -246,22 +244,20 @@
// ERR_CLEARTEXT_NOT_PERMITTED if not.
if (request->context()->check_cleartext_permitted() &&
!android::IsCleartextPermitted(url.host())) {
- return std::make_unique<URLRequestErrorJob>(request, network_delegate,
+ return std::make_unique<URLRequestErrorJob>(request,
ERR_CLEARTEXT_NOT_PERMITTED);
}
#endif
}
- return base::WrapUnique<URLRequestJob>(
- new URLRequestHttpJob(request, network_delegate,
- request->context()->http_user_agent_settings()));
+ return base::WrapUnique<URLRequestJob>(new URLRequestHttpJob(
+ request, request->context()->http_user_agent_settings()));
}
URLRequestHttpJob::URLRequestHttpJob(
URLRequest* request,
- NetworkDelegate* network_delegate,
const HttpUserAgentSettings* http_user_agent_settings)
- : URLRequestJob(request, network_delegate),
+ : URLRequestJob(request),
num_cookie_lines_left_(0),
priority_(DEFAULT_PRIORITY),
response_info_(nullptr),
@@ -407,14 +403,15 @@
}
void URLRequestHttpJob::StartTransaction() {
- if (network_delegate()) {
+ NetworkDelegate* network_delegate = request()->network_delegate();
+ if (network_delegate) {
OnCallToDelegate(
NetLogEventType::NETWORK_DELEGATE_BEFORE_START_TRANSACTION);
// The NetworkDelegate must watch for OnRequestDestroyed and not modify
// |extra_headers| after it's called.
// TODO(mattm): change the API to remove the out-params and take the
// results as params of the callback.
- int rv = network_delegate()->NotifyBeforeStartTransaction(
+ int rv = network_delegate->NotifyBeforeStartTransaction(
request_,
base::BindOnce(&URLRequestHttpJob::NotifyBeforeStartTransactionCallback,
weak_factory_.GetWeakPtr()),
@@ -908,7 +905,8 @@
if (result == OK) {
scoped_refptr<HttpResponseHeaders> headers = GetResponseHeaders();
- if (network_delegate()) {
+ NetworkDelegate* network_delegate = request()->network_delegate();
+ if (network_delegate) {
// Note that |this| may not be deleted until
// |URLRequestHttpJob::OnHeadersReceivedCallback()| or
// |NetworkDelegate::URLRequestDestroyed()| has been called.
@@ -921,7 +919,7 @@
// any of the arguments after it's called.
// TODO(mattm): change the API to remove the out-params and take the
// results as params of the callback.
- int error = network_delegate()->NotifyHeadersReceived(
+ int error = network_delegate->NotifyHeadersReceived(
request_,
base::BindOnce(&URLRequestHttpJob::OnHeadersReceivedCallback,
weak_factory_.GetWeakPtr()),
diff --git a/net/url_request/url_request_http_job.h b/net/url_request/url_request_http_job.h
index 183b6da..274314b 100644
--- a/net/url_request/url_request_http_job.h
+++ b/net/url_request/url_request_http_job.h
@@ -47,16 +47,13 @@
// Returns a job that returns a redirect in the case of HSTS, and returns a
// job that fails for unencrypted requests if current settings dont allow
// them. Never returns nullptr.
- static std::unique_ptr<URLRequestJob> Create(
- URLRequest* request,
- NetworkDelegate* network_delegate);
+ static std::unique_ptr<URLRequestJob> Create(URLRequest* request);
void SetRequestHeadersCallback(RequestHeadersCallback callback) override;
void SetResponseHeadersCallback(ResponseHeadersCallback callback) override;
protected:
URLRequestHttpJob(URLRequest* request,
- NetworkDelegate* network_delegate,
const HttpUserAgentSettings* http_user_agent_settings);
~URLRequestHttpJob() override;
diff --git a/net/url_request/url_request_http_job_unittest.cc b/net/url_request/url_request_http_job_unittest.cc
index ae108a2..723a911 100644
--- a/net/url_request/url_request_http_job_unittest.cc
+++ b/net/url_request/url_request_http_job_unittest.cc
@@ -97,7 +97,6 @@
public:
explicit TestURLRequestHttpJob(URLRequest* request)
: URLRequestHttpJob(request,
- request->context()->network_delegate(),
request->context()->http_user_agent_settings()),
use_null_source_stream_(false) {}
diff --git a/net/url_request/url_request_interceptor.h b/net/url_request/url_request_interceptor.h
index 9ed1670..0ce071f 100644
--- a/net/url_request/url_request_interceptor.h
+++ b/net/url_request/url_request_interceptor.h
@@ -5,6 +5,8 @@
#ifndef NET_URL_REQUEST_URL_REQUEST_INTERCEPTOR_H_
#define NET_URL_REQUEST_URL_REQUEST_INTERCEPTOR_H_
+#include <memory>
+
#include "base/macros.h"
#include "net/base/net_export.h"
@@ -12,7 +14,6 @@
class URLRequest;
class URLRequestJob;
-class NetworkDelegate;
// In tests, URLRequestFilter lets URLRequestInterceptors create URLRequestJobs
// to handle URLRequests before they're handed off to the ProtocolHandler for
@@ -27,9 +28,9 @@
// Returns a URLRequestJob to handle |request|, if the interceptor wants to
// take over the handling the request instead of the default ProtocolHandler.
- // Otherwise, returns NULL.
- virtual URLRequestJob* MaybeInterceptRequest(
- URLRequest* request, NetworkDelegate* network_delegate) const = 0;
+ // Otherwise, returns nullptr.
+ virtual std::unique_ptr<URLRequestJob> MaybeInterceptRequest(
+ URLRequest* request) const = 0;
private:
DISALLOW_COPY_AND_ASSIGN(URLRequestInterceptor);
diff --git a/net/url_request/url_request_job.cc b/net/url_request/url_request_job.cc
index 88d9a007..1f669a4 100644
--- a/net/url_request/url_request_job.cc
+++ b/net/url_request/url_request_job.cc
@@ -79,15 +79,13 @@
DISALLOW_COPY_AND_ASSIGN(URLRequestJobSourceStream);
};
-URLRequestJob::URLRequestJob(URLRequest* request,
- NetworkDelegate* network_delegate)
+URLRequestJob::URLRequestJob(URLRequest* request)
: request_(request),
done_(false),
prefilter_bytes_read_(0),
postfilter_bytes_read_(0),
has_handled_response_(false),
- expected_content_size_(-1),
- network_delegate_(network_delegate) {}
+ expected_content_size_(-1) {}
URLRequestJob::~URLRequestJob() {
}
diff --git a/net/url_request/url_request_job.h b/net/url_request/url_request_job.h
index b3f9216..fe4dc8ea 100644
--- a/net/url_request/url_request_job.h
+++ b/net/url_request/url_request_job.h
@@ -40,7 +40,6 @@
class HttpResponseInfo;
class IOBuffer;
struct LoadTimingInfo;
-class NetworkDelegate;
class ProxyServer;
class SSLCertRequestInfo;
class SSLInfo;
@@ -51,8 +50,7 @@
class NET_EXPORT URLRequestJob {
public:
- explicit URLRequestJob(URLRequest* request,
- NetworkDelegate* network_delegate);
+ explicit URLRequestJob(URLRequest* request);
virtual ~URLRequestJob();
// Returns the request that owns this job.
@@ -325,9 +323,6 @@
// or nullptr on error.
virtual std::unique_ptr<SourceStream> SetUpSourceStream();
- // Provides derived classes with access to the request's network delegate.
- NetworkDelegate* network_delegate() { return network_delegate_; }
-
// Set the proxy server that was used, if any.
void SetProxyServer(const ProxyServer& proxy_server);
@@ -433,9 +428,6 @@
// checks are performed, so this field must not be modified.
base::Optional<RedirectInfo> deferred_redirect_info_;
- // The network delegate to use with this request, if any.
- NetworkDelegate* network_delegate_;
-
// Non-null if ReadRawData() returned ERR_IO_PENDING, and the read has not
// completed.
CompletionOnceCallback read_raw_callback_;
diff --git a/net/url_request/url_request_job_factory.cc b/net/url_request/url_request_job_factory.cc
index d850556b..dceb26f 100644
--- a/net/url_request/url_request_job_factory.cc
+++ b/net/url_request/url_request_job_factory.cc
@@ -30,10 +30,8 @@
HttpProtocolHandler& operator=(const HttpProtocolHandler&) = delete;
~HttpProtocolHandler() override = default;
- std::unique_ptr<URLRequestJob> CreateJob(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
- return URLRequestHttpJob::Create(request, network_delegate);
+ std::unique_ptr<URLRequestJob> CreateJob(URLRequest* request) const override {
+ return URLRequestHttpJob::Create(request);
}
};
@@ -81,30 +79,27 @@
}
std::unique_ptr<URLRequestJob> URLRequestJobFactory::CreateJob(
- URLRequest* request,
- NetworkDelegate* network_delegate) const {
+ URLRequest* request) const {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
// If we are given an invalid URL, then don't even try to inspect the scheme.
if (!request->url().is_valid())
- return std::make_unique<URLRequestErrorJob>(request, network_delegate,
- ERR_INVALID_URL);
+ return std::make_unique<URLRequestErrorJob>(request, ERR_INVALID_URL);
if (g_interceptor_for_testing) {
std::unique_ptr<URLRequestJob> job(
- g_interceptor_for_testing->MaybeInterceptRequest(request,
- network_delegate));
+ g_interceptor_for_testing->MaybeInterceptRequest(request));
if (job)
return job;
}
auto it = protocol_handler_map_.find(request->url().scheme());
if (it == protocol_handler_map_.end()) {
- return std::make_unique<URLRequestErrorJob>(request, network_delegate,
+ return std::make_unique<URLRequestErrorJob>(request,
ERR_UNKNOWN_URL_SCHEME);
}
- return it->second->CreateJob(request, network_delegate);
+ return it->second->CreateJob(request);
}
bool URLRequestJobFactory::IsSafeRedirectTarget(const GURL& location) const {
diff --git a/net/url_request/url_request_job_factory.h b/net/url_request/url_request_job_factory.h
index 58a55b1c..9d31c6c 100644
--- a/net/url_request/url_request_job_factory.h
+++ b/net/url_request/url_request_job_factory.h
@@ -18,7 +18,6 @@
namespace net {
-class NetworkDelegate;
class URLRequest;
class URLRequestInterceptor;
class URLRequestJob;
@@ -34,8 +33,7 @@
// Creates a URLRequestJob for the particular protocol. Never returns
// nullptr.
virtual std::unique_ptr<URLRequestJob> CreateJob(
- URLRequest* request,
- NetworkDelegate* network_delegate) const = 0;
+ URLRequest* request) const = 0;
// Indicates if it should be safe to redirect to |location|. Should handle
// protocols handled by MaybeCreateJob().
@@ -54,9 +52,7 @@
// with net::Error code if unable to handle request->url().
//
// Virtual for tests.
- virtual std::unique_ptr<URLRequestJob> CreateJob(
- URLRequest* request,
- NetworkDelegate* network_delegate) const;
+ virtual std::unique_ptr<URLRequestJob> CreateJob(URLRequest* request) const;
// Returns true if it's safe to redirect to |location|.
//
diff --git a/net/url_request/url_request_job_factory_unittest.cc b/net/url_request/url_request_job_factory_unittest.cc
index 5ce221b..604d4ae 100644
--- a/net/url_request/url_request_job_factory_unittest.cc
+++ b/net/url_request/url_request_job_factory_unittest.cc
@@ -29,8 +29,7 @@
class MockURLRequestJob : public URLRequestJob {
public:
- MockURLRequestJob(URLRequest* request, NetworkDelegate* network_delegate)
- : URLRequestJob(request, network_delegate) {}
+ explicit MockURLRequestJob(URLRequest* request) : URLRequestJob(request) {}
~MockURLRequestJob() override = default;
@@ -50,10 +49,8 @@
class DummyProtocolHandler : public URLRequestJobFactory::ProtocolHandler {
public:
- std::unique_ptr<URLRequestJob> CreateJob(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
- return std::make_unique<MockURLRequestJob>(request, network_delegate);
+ std::unique_ptr<URLRequestJob> CreateJob(URLRequest* request) const override {
+ return std::make_unique<MockURLRequestJob>(request);
}
};
diff --git a/net/url_request/url_request_redirect_job.cc b/net/url_request/url_request_redirect_job.cc
index 58fefd34..d43060b 100644
--- a/net/url_request/url_request_redirect_job.cc
+++ b/net/url_request/url_request_redirect_job.cc
@@ -29,11 +29,10 @@
namespace net {
URLRequestRedirectJob::URLRequestRedirectJob(URLRequest* request,
- NetworkDelegate* network_delegate,
const GURL& redirect_destination,
ResponseCode response_code,
const std::string& redirect_reason)
- : URLRequestJob(request, network_delegate),
+ : URLRequestJob(request),
redirect_destination_(redirect_destination),
response_code_(response_code),
redirect_reason_(redirect_reason) {
diff --git a/net/url_request/url_request_redirect_job.h b/net/url_request/url_request_redirect_job.h
index 244de39..c4aa2df8 100644
--- a/net/url_request/url_request_redirect_job.h
+++ b/net/url_request/url_request_redirect_job.h
@@ -37,7 +37,6 @@
// Constructs a job that redirects to the specified URL. |redirect_reason| is
// logged for debugging purposes, and must not be an empty string.
URLRequestRedirectJob(URLRequest* request,
- NetworkDelegate* network_delegate,
const GURL& redirect_destination,
ResponseCode response_code,
const std::string& redirect_reason);
diff --git a/net/url_request/url_request_test_job.cc b/net/url_request/url_request_test_job.cc
index d1f6d4a..a3a4ed8b 100644
--- a/net/url_request/url_request_test_job.cc
+++ b/net/url_request/url_request_test_job.cc
@@ -126,14 +126,8 @@
return std::string(kHeaders, base::size(kHeaders));
}
-URLRequestTestJob::URLRequestTestJob(URLRequest* request,
- NetworkDelegate* network_delegate)
- : URLRequestTestJob(request, network_delegate, false) {}
-
-URLRequestTestJob::URLRequestTestJob(URLRequest* request,
- NetworkDelegate* network_delegate,
- bool auto_advance)
- : URLRequestJob(request, network_delegate),
+URLRequestTestJob::URLRequestTestJob(URLRequest* request, bool auto_advance)
+ : URLRequestJob(request),
auto_advance_(auto_advance),
stage_(WAITING),
priority_(DEFAULT_PRIORITY),
@@ -144,11 +138,10 @@
async_reads_(false) {}
URLRequestTestJob::URLRequestTestJob(URLRequest* request,
- NetworkDelegate* network_delegate,
const std::string& response_headers,
const std::string& response_data,
bool auto_advance)
- : URLRequestJob(request, network_delegate),
+ : URLRequestJob(request),
auto_advance_(auto_advance),
stage_(WAITING),
priority_(DEFAULT_PRIORITY),
diff --git a/net/url_request/url_request_test_job.h b/net/url_request/url_request_test_job.h
index 22f30ca..9c5906c 100644
--- a/net/url_request/url_request_test_job.h
+++ b/net/url_request/url_request_test_job.h
@@ -40,20 +40,13 @@
class NET_EXPORT_PRIVATE URLRequestTestJob : public URLRequestJob {
public:
// Constructs a job to return one of the canned responses depending on the
- // request url, with auto advance disabled.
- URLRequestTestJob(URLRequest* request, NetworkDelegate* network_delegate);
-
- // Constructs a job to return one of the canned responses depending on the
- // request url, optionally with auto advance enabled.
- URLRequestTestJob(URLRequest* request,
- NetworkDelegate* network_delegate,
- bool auto_advance);
+ // request url.
+ explicit URLRequestTestJob(URLRequest* request, bool auto_advance = false);
// Constructs a job to return the given response regardless of the request
// url. The headers should include the HTTP status line and use CRLF/LF as the
// line separator.
URLRequestTestJob(URLRequest* request,
- NetworkDelegate* network_delegate,
const std::string& response_headers,
const std::string& response_data,
bool auto_advance);
diff --git a/net/url_request/url_request_test_util.cc b/net/url_request/url_request_test_util.cc
index 5692205..0fef1f0 100644
--- a/net/url_request/url_request_test_util.cc
+++ b/net/url_request/url_request_test_util.cc
@@ -656,10 +656,9 @@
~TestRequestInterceptor() override { CHECK(safe_to_delete_); }
- URLRequestJob* MaybeInterceptRequest(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
- return intercept_job_.release();
+ std::unique_ptr<URLRequestJob> MaybeInterceptRequest(
+ URLRequest* request) const override {
+ return std::move(intercept_job_);
}
bool job_used() const { return intercept_job_.get() == nullptr; }
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc
index 6a9ed04..2f92038 100644
--- a/net/url_request/url_request_unittest.cc
+++ b/net/url_request/url_request_unittest.cc
@@ -336,10 +336,8 @@
public:
// The latest priority of the job is always written to |request_priority_|.
PriorityMonitoringURLRequestJob(URLRequest* request,
- NetworkDelegate* network_delegate,
RequestPriority* request_priority)
- : URLRequestTestJob(request, network_delegate),
- request_priority_(request_priority) {
+ : URLRequestTestJob(request), request_priority_(request_priority) {
*request_priority_ = DEFAULT_PRIORITY;
}
@@ -979,11 +977,11 @@
~URLRequestInterceptorWithLoadTimingInfo() override = default;
// URLRequestInterceptor implementation:
- URLRequestJob* MaybeInterceptRequest(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
- URLRequestTestJob* job = new URLRequestTestJob(
- request, network_delegate, ok_headers(), ok_data(), true);
+ std::unique_ptr<URLRequestJob> MaybeInterceptRequest(
+ URLRequest* request) const override {
+ std::unique_ptr<URLRequestTestJob> job =
+ std::make_unique<URLRequestTestJob>(request, ok_headers(), ok_data(),
+ true);
job->set_load_timing_info(main_request_load_timing_info_);
return job;
}
@@ -1408,8 +1406,9 @@
EXPECT_EQ(DEFAULT_PRIORITY, req->priority());
RequestPriority job_priority;
- std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob(
- req.get(), &default_network_delegate_, &job_priority));
+ std::unique_ptr<URLRequestJob> job =
+ std::make_unique<PriorityMonitoringURLRequestJob>(req.get(),
+ &job_priority);
TestScopedURLInterceptor interceptor(req->url(), std::move(job));
EXPECT_EQ(DEFAULT_PRIORITY, job_priority);
@@ -1428,8 +1427,9 @@
TRAFFIC_ANNOTATION_FOR_TESTS));
RequestPriority job_priority;
- std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob(
- req.get(), &default_network_delegate_, &job_priority));
+ std::unique_ptr<URLRequestJob> job =
+ std::make_unique<PriorityMonitoringURLRequestJob>(req.get(),
+ &job_priority);
TestScopedURLInterceptor interceptor(req->url(), std::move(job));
req->SetPriority(LOW);
@@ -1451,8 +1451,9 @@
EXPECT_EQ(MAXIMUM_PRIORITY, req->priority());
RequestPriority job_priority;
- std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob(
- req.get(), &default_network_delegate_, &job_priority));
+ std::unique_ptr<URLRequestJob> job =
+ std::make_unique<PriorityMonitoringURLRequestJob>(req.get(),
+ &job_priority);
TestScopedURLInterceptor interceptor(req->url(), std::move(job));
req->SetLoadFlags(LOAD_IGNORE_LIMITS);
@@ -2884,8 +2885,7 @@
// URLRequestJobFactory::ProtocolHandler implementation:
std::unique_ptr<URLRequestJob> CreateJob(
- URLRequest* request,
- NetworkDelegate* network_delegate) const override {
+ URLRequest* request) const override {
NOTREACHED();
return nullptr;
}
@@ -6159,9 +6159,10 @@
std::unique_ptr<URLRequest> r(default_context().CreateRequest(
original_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
- std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob(
- r.get(), &default_network_delegate_, redirect_url,
- URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason"));
+ std::unique_ptr<URLRequestRedirectJob> job =
+ std::make_unique<URLRequestRedirectJob>(
+ r.get(), redirect_url, URLRequestRedirectJob::REDIRECT_302_FOUND,
+ "Very Good Reason");
TestScopedURLInterceptor interceptor(r->url(), std::move(job));
r->Start();
@@ -7978,10 +7979,10 @@
base::NumberToString(base::size(kData) - 1));
req->SetExtraRequestHeaders(headers);
- std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob(
- req.get(), &default_network_delegate_,
- http_test_server()->GetURL("/echo"),
- URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason"));
+ std::unique_ptr<URLRequestRedirectJob> job =
+ std::make_unique<URLRequestRedirectJob>(
+ req.get(), http_test_server()->GetURL("/echo"),
+ URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason");
TestScopedURLInterceptor interceptor(req->url(), std::move(job));
req->Start();
@@ -8005,11 +8006,11 @@
base::NumberToString(base::size(kData) - 1));
req->SetExtraRequestHeaders(headers);
- std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob(
- req.get(), &default_network_delegate_,
- http_test_server()->GetURL("/echo"),
- URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT,
- "Very Good Reason"));
+ std::unique_ptr<URLRequestRedirectJob> job =
+ std::make_unique<URLRequestRedirectJob>(
+ req.get(), http_test_server()->GetURL("/echo"),
+ URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT,
+ "Very Good Reason");
TestScopedURLInterceptor interceptor(req->url(), std::move(job));
req->Start();
@@ -8208,9 +8209,10 @@
initial_url, DEFAULT_PRIORITY, &d, TRAFFIC_ANNOTATION_FOR_TESTS));
EXPECT_EQ(DEFAULT_PRIORITY, req->priority());
- std::unique_ptr<URLRequestRedirectJob> redirect_job(new URLRequestRedirectJob(
- req.get(), &default_network_delegate_, redirect_url,
- URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason"));
+ std::unique_ptr<URLRequestRedirectJob> redirect_job =
+ std::make_unique<URLRequestRedirectJob>(
+ req.get(), redirect_url, URLRequestRedirectJob::REDIRECT_302_FOUND,
+ "Very Good Reason");
auto interceptor = std::make_unique<TestScopedURLInterceptor>(
initial_url, std::move(redirect_job));
@@ -8221,8 +8223,9 @@
interceptor.reset();
RequestPriority job_priority;
- std::unique_ptr<URLRequestJob> job(new PriorityMonitoringURLRequestJob(
- req.get(), &default_network_delegate_, &job_priority));
+ std::unique_ptr<URLRequestJob> job =
+ std::make_unique<PriorityMonitoringURLRequestJob>(req.get(),
+ &job_priority);
interceptor =
std::make_unique<TestScopedURLInterceptor>(redirect_url, std::move(job));
@@ -9837,9 +9840,8 @@
private:
// URLRequestInterceptor implementation:
- net::URLRequestJob* MaybeInterceptRequest(
- net::URLRequest* request,
- net::NetworkDelegate* network_delegate) const override {
+ std::unique_ptr<net::URLRequestJob> MaybeInterceptRequest(
+ net::URLRequest* request) const override {
EXPECT_TRUE(request->disable_secure_dns());
return nullptr;
}
@@ -11616,10 +11618,11 @@
GURL("http://not-a-real-domain/"), DEFAULT_PRIORITY, &d,
TRAFFIC_ANNOTATION_FOR_TESTS));
- std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob(
- req.get(), &default_network_delegate_,
- GURL("http://this-should-never-be-navigated-to/"),
- URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "Jumbo shrimp"));
+ std::unique_ptr<URLRequestRedirectJob> job =
+ std::make_unique<URLRequestRedirectJob>(
+ req.get(), GURL("http://this-should-never-be-navigated-to/"),
+ URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT,
+ "Jumbo shrimp");
TestScopedURLInterceptor interceptor(req->url(), std::move(job));
req->Start();