Chromium Code Reviews| Index: components/cronet/android/test/ssl_certificate_error_job.cc |
| diff --git a/components/cronet/android/test/ssl_certificate_error_job.cc b/components/cronet/android/test/ssl_certificate_error_job.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5e1dca509bd8337f099c8ae0f3a6749ee4c63246 |
| --- /dev/null |
| +++ b/components/cronet/android/test/ssl_certificate_error_job.cc |
| @@ -0,0 +1,73 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "ssl_certificate_error_job.h" |
| + |
| +#include "base/bind.h" |
| +#include "base/strings/stringprintf.h" |
| +#include "base/thread_task_runner_handle.h" |
| +#include "net/url_request/url_request.h" |
| +#include "net/url_request/url_request_filter.h" |
| +#include "net/url_request/url_request_interceptor.h" |
| + |
| +namespace cronet { |
| + |
| +namespace { |
| + |
| +const char kMockHostname[] = "mock.ssl.cert.error.request"; |
| + |
| +class MockJobInterceptor : public net::URLRequestInterceptor { |
| + public: |
| + MockJobInterceptor() {} |
| + ~MockJobInterceptor() override {} |
| + |
| + // net::URLRequestJobFactory::ProtocolHandler implementation: |
| + net::URLRequestJob* MaybeInterceptRequest( |
| + net::URLRequest* request, |
| + net::NetworkDelegate* network_delegate) const override { |
| + return new SSLCertificateErrorJob(request, network_delegate); |
| + } |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(MockJobInterceptor); |
| +}; |
| + |
| +} // namespace |
| + |
| +SSLCertificateErrorJob::SSLCertificateErrorJob( |
| + net::URLRequest* request, |
| + net::NetworkDelegate* network_delegate) |
| + : net::URLRequestTestJob(request, network_delegate, "", "", true), |
| + weak_factory_(this) { |
| +} |
| + |
| +void SSLCertificateErrorJob::Start() { |
| + base::ThreadTaskRunnerHandle::Get()->PostTask( |
| + FROM_HERE, base::Bind(&SSLCertificateErrorJob::NotifyError, |
| + weak_factory_.GetWeakPtr())); |
| +} |
| + |
| +void SSLCertificateErrorJob::NotifyError() { |
| + net::SSLInfo info; |
| + info.cert_status = net::CERT_STATUS_DATE_INVALID; |
| + NotifySSLCertificateError(info, true); |
| +} |
| + |
| +// static |
| +void SSLCertificateErrorJob::AddUrlHandler() { |
| + net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance(); |
| + filter->AddHostnameInterceptor( |
| + "https", kMockHostname, |
| + scoped_ptr<net::URLRequestInterceptor>(new MockJobInterceptor())); |
| +} |
| + |
| +// static |
|
mmenke
2015/07/17 19:29:59
"// static" is no longer needed before static meth
xunjieli
2015/07/17 20:15:20
Done.
|
| +GURL SSLCertificateErrorJob::GetMockUrl() { |
| + return GURL(base::StringPrintf("https://%s", kMockHostname)); |
| +} |
| + |
| +SSLCertificateErrorJob::~SSLCertificateErrorJob() { |
|
mmenke
2015/07/17 19:29:59
nit: Definition order should match the declaratio
xunjieli
2015/07/17 20:15:20
Done.
|
| +} |
| + |
| +} // namespace net |