Chromium Code Reviews| Index: net/test/url_request/ssl_certificate_error_job.cc |
| diff --git a/net/test/url_request/ssl_certificate_error_job.cc b/net/test/url_request/ssl_certificate_error_job.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9ba2fae5a50b57f990a46d548b4b9830c8c589c6 |
| --- /dev/null |
| +++ b/net/test/url_request/ssl_certificate_error_job.cc |
| @@ -0,0 +1,71 @@ |
| +// 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 "net/test/url_request/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 net { |
| + |
| +namespace { |
| + |
| +const char kMockHostname[] = "mock.ssl.cert.error.request"; |
| + |
| +class MockJobInterceptor : public URLRequestInterceptor { |
| + public: |
| + MockJobInterceptor() {} |
| + ~MockJobInterceptor() override {} |
| + |
| + // URLRequestJobFactory::ProtocolHandler implementation: |
| + URLRequestJob* MaybeInterceptRequest( |
| + URLRequest* request, |
| + NetworkDelegate* network_delegate) const override { |
| + return new SSLCertificateErrorJob(request, network_delegate); |
| + } |
| + |
| + private: |
| + DISALLOW_COPY_AND_ASSIGN(MockJobInterceptor); |
| +}; |
| + |
| +} // namespace |
| + |
| +SSLCertificateErrorJob::SSLCertificateErrorJob( |
| + URLRequest* request, |
| + NetworkDelegate* network_delegate) |
| + : 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::AddUrlHandler() { |
| + URLRequestFilter* filter = URLRequestFilter::GetInstance(); |
| + filter->AddHostnameInterceptor( |
| + "https", kMockHostname, |
| + scoped_ptr<URLRequestInterceptor>(new MockJobInterceptor())); |
| +} |
| + |
| +GURL SSLCertificateErrorJob::GetMockUrl() { |
| + return GURL(base::StringPrintf("https://%s", kMockHostname)); |
|
mmenke
2015/07/17 21:09:18
Should probably include <string>
xunjieli
2015/07/20 14:56:20
Done.
|
| +} |
| + |
| +SSLCertificateErrorJob::~SSLCertificateErrorJob() { |
| +} |
| + |
| +void SSLCertificateErrorJob::NotifyError() { |
| + SSLInfo info; |
|
mmenke
2015/07/17 21:09:18
Should include whatever header declares SSLInfo.
xunjieli
2015/07/20 14:56:20
Done.
|
| + info.cert_status = CERT_STATUS_DATE_INVALID; |
| + NotifySSLCertificateError(info, true); |
| +} |
| + |
| +} // namespace net |