OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_BROWSER_LOADER_RESOURCE_LOADER_H_ | 5 #ifndef CONTENT_BROWSER_LOADER_RESOURCE_LOADER_H_ |
6 #define CONTENT_BROWSER_LOADER_RESOURCE_LOADER_H_ | 6 #define CONTENT_BROWSER_LOADER_RESOURCE_LOADER_H_ |
7 | 7 |
8 #include <memory> | 8 #include <memory> |
9 | 9 |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
11 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
12 #include "base/timer/timer.h" | 12 #include "base/timer/timer.h" |
13 #include "content/browser/loader/resource_handler.h" | 13 #include "content/browser/loader/resource_handler.h" |
14 #include "content/browser/ssl/ssl_client_auth_handler.h" | 14 #include "content/browser/ssl/ssl_client_auth_handler.h" |
15 #include "content/browser/ssl/ssl_error_handler.h" | 15 #include "content/browser/ssl/ssl_error_handler.h" |
16 #include "content/common/content_export.h" | 16 #include "content/common/content_export.h" |
| 17 #include "content/common/url_loader.mojom.h" |
17 #include "content/public/browser/resource_controller.h" | 18 #include "content/public/browser/resource_controller.h" |
18 #include "content/public/common/signed_certificate_timestamp_id_and_status.h" | 19 #include "content/public/common/signed_certificate_timestamp_id_and_status.h" |
19 #include "net/url_request/url_request.h" | 20 #include "net/url_request/url_request.h" |
20 | 21 |
21 namespace net { | 22 namespace net { |
22 class X509Certificate; | 23 class X509Certificate; |
23 } | 24 } |
24 | 25 |
25 namespace content { | 26 namespace content { |
26 class CertStore; | 27 class CertStore; |
27 class ResourceDispatcherHostLoginDelegate; | 28 class ResourceDispatcherHostLoginDelegate; |
28 class ResourceLoaderDelegate; | 29 class ResourceLoaderDelegate; |
29 class ResourceRequestInfoImpl; | 30 class ResourceRequestInfoImpl; |
30 | 31 |
31 // This class is responsible for driving the URLRequest (i.e., calling Start, | 32 // This class is responsible for driving the URLRequest (i.e., calling Start, |
32 // Read, and servicing events). It has a ResourceHandler, which is typically a | 33 // Read, and servicing events). It has a ResourceHandler, which is typically a |
33 // chain of ResourceHandlers, and is the ResourceController for its handler. | 34 // chain of ResourceHandlers, and is the ResourceController for its handler. |
34 class CONTENT_EXPORT ResourceLoader : public net::URLRequest::Delegate, | 35 class CONTENT_EXPORT ResourceLoader : public net::URLRequest::Delegate, |
35 public SSLErrorHandler::Delegate, | 36 public SSLErrorHandler::Delegate, |
36 public SSLClientAuthHandler::Delegate, | 37 public SSLClientAuthHandler::Delegate, |
37 public ResourceController { | 38 public ResourceController { |
38 public: | 39 public: |
39 ResourceLoader(std::unique_ptr<net::URLRequest> request, | 40 ResourceLoader(std::unique_ptr<net::URLRequest> request, |
40 std::unique_ptr<ResourceHandler> handler, | 41 std::unique_ptr<ResourceHandler> handler, |
41 CertStore* cert_store, | 42 CertStore* cert_store, |
| 43 std::unique_ptr<mojom::URLLoader> mojo_loader, |
| 44 mojom::URLLoaderClientPtr mojo_loader_client, |
| 45 ResourceLoaderDelegate* delegate); |
| 46 ResourceLoader(std::unique_ptr<net::URLRequest> request, |
| 47 std::unique_ptr<ResourceHandler> handler, |
| 48 CertStore* cert_store, |
42 ResourceLoaderDelegate* delegate); | 49 ResourceLoaderDelegate* delegate); |
43 ~ResourceLoader() override; | 50 ~ResourceLoader() override; |
44 | 51 |
45 void StartRequest(); | 52 void StartRequest(); |
46 void CancelRequest(bool from_renderer); | 53 void CancelRequest(bool from_renderer); |
47 | 54 |
48 bool is_transferring() const { return is_transferring_; } | 55 bool is_transferring() const { return is_transferring_; } |
49 void MarkAsTransferring(const scoped_refptr<ResourceResponse>& response); | 56 void MarkAsTransferring(const scoped_refptr<ResourceResponse>& response); |
50 void CompleteTransfer(); | 57 void CompleteTransfer(); |
51 | 58 |
52 net::URLRequest* request() { return request_.get(); } | 59 net::URLRequest* request() { return request_.get(); } |
53 ResourceRequestInfoImpl* GetRequestInfo(); | 60 ResourceRequestInfoImpl* GetRequestInfo(); |
54 | 61 |
55 void ClearLoginDelegate(); | 62 void ClearLoginDelegate(); |
56 | 63 |
57 // Returns a pointer to the ResourceResponse for a request that is | 64 // Returns a pointer to the ResourceResponse for a request that is |
58 // being transferred to a new consumer. The response is valid between | 65 // being transferred to a new consumer. The response is valid between |
59 // the time that the request is marked as transferring via | 66 // the time that the request is marked as transferring via |
60 // MarkAsTransferring() and the time that the transfer is completed | 67 // MarkAsTransferring() and the time that the transfer is completed |
61 // via CompleteTransfer(). | 68 // via CompleteTransfer(). |
62 ResourceResponse* transferring_response() { | 69 ResourceResponse* transferring_response() { |
63 return transferring_response_.get(); | 70 return transferring_response_.get(); |
64 } | 71 } |
65 | 72 |
| 73 mojom::URLLoaderClient* client() const { return mojo_loader_client_.get(); } |
| 74 |
66 private: | 75 private: |
67 // net::URLRequest::Delegate implementation: | 76 // net::URLRequest::Delegate implementation: |
68 void OnReceivedRedirect(net::URLRequest* request, | 77 void OnReceivedRedirect(net::URLRequest* request, |
69 const net::RedirectInfo& redirect_info, | 78 const net::RedirectInfo& redirect_info, |
70 bool* defer) override; | 79 bool* defer) override; |
71 void OnAuthRequired(net::URLRequest* request, | 80 void OnAuthRequired(net::URLRequest* request, |
72 net::AuthChallengeInfo* info) override; | 81 net::AuthChallengeInfo* info) override; |
73 void OnCertificateRequested(net::URLRequest* request, | 82 void OnCertificateRequested(net::URLRequest* request, |
74 net::SSLCertRequestInfo* info) override; | 83 net::SSLCertRequestInfo* info) override; |
75 void OnSSLCertificateError(net::URLRequest* request, | 84 void OnSSLCertificateError(net::URLRequest* request, |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 DEFERRED_REDIRECT, | 142 DEFERRED_REDIRECT, |
134 DEFERRED_READ, | 143 DEFERRED_READ, |
135 DEFERRED_RESPONSE_COMPLETE, | 144 DEFERRED_RESPONSE_COMPLETE, |
136 DEFERRED_FINISH | 145 DEFERRED_FINISH |
137 }; | 146 }; |
138 DeferredStage deferred_stage_; | 147 DeferredStage deferred_stage_; |
139 | 148 |
140 std::unique_ptr<net::URLRequest> request_; | 149 std::unique_ptr<net::URLRequest> request_; |
141 std::unique_ptr<ResourceHandler> handler_; | 150 std::unique_ptr<ResourceHandler> handler_; |
142 ResourceLoaderDelegate* delegate_; | 151 ResourceLoaderDelegate* delegate_; |
| 152 std::unique_ptr<mojom::URLLoader> mojo_loader_; |
| 153 mojom::URLLoaderClientPtr mojo_loader_client_; |
143 | 154 |
144 scoped_refptr<ResourceDispatcherHostLoginDelegate> login_delegate_; | 155 scoped_refptr<ResourceDispatcherHostLoginDelegate> login_delegate_; |
145 std::unique_ptr<SSLClientAuthHandler> ssl_client_auth_handler_; | 156 std::unique_ptr<SSLClientAuthHandler> ssl_client_auth_handler_; |
146 | 157 |
147 base::TimeTicks read_deferral_start_time_; | 158 base::TimeTicks read_deferral_start_time_; |
148 | 159 |
149 // Indicates that we are in a state of being transferred to a new downstream | 160 // Indicates that we are in a state of being transferred to a new downstream |
150 // consumer. We are waiting for a notification to complete the transfer, at | 161 // consumer. We are waiting for a notification to complete the transfer, at |
151 // which point we'll receive a new ResourceHandler. | 162 // which point we'll receive a new ResourceHandler. |
152 bool is_transferring_; | 163 bool is_transferring_; |
(...skipping 15 matching lines...) Expand all Loading... |
168 CertStore* cert_store_; | 179 CertStore* cert_store_; |
169 | 180 |
170 base::WeakPtrFactory<ResourceLoader> weak_ptr_factory_; | 181 base::WeakPtrFactory<ResourceLoader> weak_ptr_factory_; |
171 | 182 |
172 DISALLOW_COPY_AND_ASSIGN(ResourceLoader); | 183 DISALLOW_COPY_AND_ASSIGN(ResourceLoader); |
173 }; | 184 }; |
174 | 185 |
175 } // namespace content | 186 } // namespace content |
176 | 187 |
177 #endif // CONTENT_BROWSER_LOADER_RESOURCE_LOADER_H_ | 188 #endif // CONTENT_BROWSER_LOADER_RESOURCE_LOADER_H_ |
OLD | NEW |