OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "base/logging.h" |
| 6 #include "net/base/net_errors.h" |
| 7 #include "net/url_request/http_protocol_handler.h" |
| 8 #include "net/url_request/url_request.h" |
| 9 #include "net/url_request/url_request_context.h" |
| 10 #include "net/url_request/url_request_error_job.h" |
| 11 #include "net/url_request/url_request_http_job.h" |
| 12 #include "net/url_request/url_request_redirect_job.h" |
| 13 #include "url/gurl.h" |
| 14 #include "url/url_constants.h" |
| 15 |
| 16 namespace net { |
| 17 |
| 18 HttpProtocolHandler::HttpProtocolHandler() {} |
| 19 |
| 20 URLRequestJob* HttpProtocolHandler::MaybeCreateJob( |
| 21 URLRequest* request, |
| 22 NetworkDelegate* network_delegate) const { |
| 23 DCHECK(request->url().scheme() == url::kHttpScheme || |
| 24 request->url().scheme() == url::kHttpsScheme || |
| 25 request->url().scheme() == url::kWsScheme || |
| 26 request->url().scheme() == url::kWssScheme); |
| 27 |
| 28 if (!request->context()->http_transaction_factory()) { |
| 29 NOTREACHED() << "requires a valid context"; |
| 30 return new URLRequestErrorJob(request, network_delegate, |
| 31 ERR_INVALID_ARGUMENT); |
| 32 } |
| 33 |
| 34 GURL redirect_url; |
| 35 if (request->GetHSTSRedirect(&redirect_url)) { |
| 36 return new URLRequestRedirectJob( |
| 37 request, network_delegate, redirect_url, |
| 38 // Use status code 307 to preserve the method, so POST requests work. |
| 39 URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "HSTS"); |
| 40 } |
| 41 return new URLRequestHttpJob(request, network_delegate, |
| 42 request->context()->http_user_agent_settings()); |
| 43 } |
| 44 |
| 45 } // namespace net |
OLD | NEW |