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 |