| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "components/html_viewer/web_url_loader_impl.h" | 5 #include "components/html_viewer/web_url_loader_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 if (base::StartsWith(status_line.get(), "HTTP/1.1", | 42 if (base::StartsWith(status_line.get(), "HTTP/1.1", |
| 43 base::CompareCase::SENSITIVE)) | 43 base::CompareCase::SENSITIVE)) |
| 44 return blink::WebURLResponse::HTTPVersion_1_1; | 44 return blink::WebURLResponse::HTTPVersion_1_1; |
| 45 | 45 |
| 46 return blink::WebURLResponse::HTTPVersionUnknown; | 46 return blink::WebURLResponse::HTTPVersionUnknown; |
| 47 } | 47 } |
| 48 | 48 |
| 49 blink::WebURLResponse ToWebURLResponse(const URLResponsePtr& url_response) { | 49 blink::WebURLResponse ToWebURLResponse(const URLResponsePtr& url_response) { |
| 50 blink::WebURLResponse result; | 50 blink::WebURLResponse result; |
| 51 result.initialize(); | 51 result.initialize(); |
| 52 result.setURL(GURL(url_response->url)); | 52 result.setURL(GURL(url_response->url.get())); |
| 53 result.setMIMEType(blink::WebString::fromUTF8(url_response->mime_type)); | 53 result.setMIMEType(blink::WebString::fromUTF8(url_response->mime_type)); |
| 54 result.setTextEncodingName(blink::WebString::fromUTF8(url_response->charset)); | 54 result.setTextEncodingName(blink::WebString::fromUTF8(url_response->charset)); |
| 55 result.setHTTPVersion(StatusLineToHTTPVersion(url_response->status_line)); | 55 result.setHTTPVersion(StatusLineToHTTPVersion(url_response->status_line)); |
| 56 result.setHTTPStatusCode(url_response->status_code); | 56 result.setHTTPStatusCode(url_response->status_code); |
| 57 result.setExpectedContentLength(-1); // Not available. | 57 result.setExpectedContentLength(-1); // Not available. |
| 58 | 58 |
| 59 // TODO(darin): Initialize timing properly. | 59 // TODO(darin): Initialize timing properly. |
| 60 blink::WebURLLoadTiming timing; | 60 blink::WebURLLoadTiming timing; |
| 61 timing.initialize(); | 61 timing.initialize(); |
| 62 result.setLoadTiming(timing); | 62 result.setLoadTiming(timing); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 url_request->auto_follow_redirects = true; | 99 url_request->auto_follow_redirects = true; |
| 100 URLResponsePtr url_response; | 100 URLResponsePtr url_response; |
| 101 url_loader_->Start(std::move(url_request), | 101 url_loader_->Start(std::move(url_request), |
| 102 [&url_response](URLResponsePtr url_response_result) { | 102 [&url_response](URLResponsePtr url_response_result) { |
| 103 url_response = std::move(url_response_result); | 103 url_response = std::move(url_response_result); |
| 104 }); | 104 }); |
| 105 url_loader_.WaitForIncomingResponse(); | 105 url_loader_.WaitForIncomingResponse(); |
| 106 if (url_response->error) { | 106 if (url_response->error) { |
| 107 error.domain = WebString::fromUTF8(net::kErrorDomain); | 107 error.domain = WebString::fromUTF8(net::kErrorDomain); |
| 108 error.reason = url_response->error->code; | 108 error.reason = url_response->error->code; |
| 109 error.unreachableURL = GURL(url_response->url); | 109 error.unreachableURL = GURL(url_response->url.get()); |
| 110 return; | 110 return; |
| 111 } | 111 } |
| 112 | 112 |
| 113 response = ToWebURLResponse(url_response); | 113 response = ToWebURLResponse(url_response); |
| 114 std::string body; | 114 std::string body; |
| 115 mojo::common::BlockingCopyToString(std::move(url_response->body), &body); | 115 mojo::common::BlockingCopyToString(std::move(url_response->body), &body); |
| 116 data.assign(body.data(), body.length()); | 116 data.assign(body.data(), body.length()); |
| 117 } | 117 } |
| 118 | 118 |
| 119 void WebURLLoaderImpl::loadAsynchronously(const blink::WebURLRequest& request, | 119 void WebURLLoaderImpl::loadAsynchronously(const blink::WebURLRequest& request, |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 blink::WebURLRequest(), | 170 blink::WebURLRequest(), |
| 171 base::Passed(&failed_response))); | 171 base::Passed(&failed_response))); |
| 172 } | 172 } |
| 173 | 173 |
| 174 void WebURLLoaderImpl::setDefersLoading(bool defers_loading) { | 174 void WebURLLoaderImpl::setDefersLoading(bool defers_loading) { |
| 175 NOTIMPLEMENTED(); | 175 NOTIMPLEMENTED(); |
| 176 } | 176 } |
| 177 | 177 |
| 178 void WebURLLoaderImpl::OnReceivedResponse(const blink::WebURLRequest& request, | 178 void WebURLLoaderImpl::OnReceivedResponse(const blink::WebURLRequest& request, |
| 179 URLResponsePtr url_response) { | 179 URLResponsePtr url_response) { |
| 180 url_ = GURL(url_response->url); | 180 url_ = GURL(url_response->url.get()); |
| 181 | 181 |
| 182 if (url_response->error) { | 182 if (url_response->error) { |
| 183 OnReceivedError(std::move(url_response)); | 183 OnReceivedError(std::move(url_response)); |
| 184 } else if (url_response->redirect_url) { | 184 } else if (url_response->redirect_url) { |
| 185 OnReceivedRedirect(request, std::move(url_response)); | 185 OnReceivedRedirect(request, std::move(url_response)); |
| 186 } else { | 186 } else { |
| 187 base::WeakPtr<WebURLLoaderImpl> self(weak_factory_.GetWeakPtr()); | 187 base::WeakPtr<WebURLLoaderImpl> self(weak_factory_.GetWeakPtr()); |
| 188 client_->didReceiveResponse(this, ToWebURLResponse(url_response)); | 188 client_->didReceiveResponse(this, ToWebURLResponse(url_response)); |
| 189 | 189 |
| 190 // We may have been deleted during didReceiveResponse. | 190 // We may have been deleted during didReceiveResponse. |
| 191 if (!self) | 191 if (!self) |
| 192 return; | 192 return; |
| 193 | 193 |
| 194 // Start streaming data | 194 // Start streaming data |
| 195 response_body_stream_ = std::move(url_response->body); | 195 response_body_stream_ = std::move(url_response->body); |
| 196 ReadMore(); | 196 ReadMore(); |
| 197 } | 197 } |
| 198 } | 198 } |
| 199 | 199 |
| 200 void WebURLLoaderImpl::OnReceivedError(URLResponsePtr url_response) { | 200 void WebURLLoaderImpl::OnReceivedError(URLResponsePtr url_response) { |
| 201 blink::WebURLError web_error; | 201 blink::WebURLError web_error; |
| 202 web_error.domain = blink::WebString::fromUTF8(net::kErrorDomain); | 202 web_error.domain = blink::WebString::fromUTF8(net::kErrorDomain); |
| 203 web_error.reason = url_response->error->code; | 203 web_error.reason = url_response->error->code; |
| 204 web_error.unreachableURL = GURL(url_response->url); | 204 web_error.unreachableURL = GURL(url_response->url.get()); |
| 205 web_error.staleCopyInCache = false; | 205 web_error.staleCopyInCache = false; |
| 206 web_error.isCancellation = | 206 web_error.isCancellation = |
| 207 url_response->error->code == net::ERR_ABORTED ? true : false; | 207 url_response->error->code == net::ERR_ABORTED ? true : false; |
| 208 | 208 |
| 209 client_->didFail(this, web_error); | 209 client_->didFail(this, web_error); |
| 210 } | 210 } |
| 211 | 211 |
| 212 void WebURLLoaderImpl::OnReceivedRedirect(const blink::WebURLRequest& request, | 212 void WebURLLoaderImpl::OnReceivedRedirect(const blink::WebURLRequest& request, |
| 213 URLResponsePtr url_response) { | 213 URLResponsePtr url_response) { |
| 214 // TODO(erg): setFirstPartyForCookies() and setHTTPReferrer() are unset here. | 214 // TODO(erg): setFirstPartyForCookies() and setHTTPReferrer() are unset here. |
| 215 blink::WebURLRequest new_request; | 215 blink::WebURLRequest new_request; |
| 216 new_request.initialize(); | 216 new_request.initialize(); |
| 217 new_request.setURL(GURL(url_response->redirect_url)); | 217 new_request.setURL(GURL(url_response->redirect_url.get())); |
| 218 new_request.setDownloadToFile(request.downloadToFile()); | 218 new_request.setDownloadToFile(request.downloadToFile()); |
| 219 new_request.setRequestContext(request.requestContext()); | 219 new_request.setRequestContext(request.requestContext()); |
| 220 new_request.setFrameType(request.frameType()); | 220 new_request.setFrameType(request.frameType()); |
| 221 new_request.setSkipServiceWorker(request.skipServiceWorker()); | 221 new_request.setSkipServiceWorker(request.skipServiceWorker()); |
| 222 new_request.setFetchRequestMode(request.fetchRequestMode()); | 222 new_request.setFetchRequestMode(request.fetchRequestMode()); |
| 223 new_request.setFetchCredentialsMode(request.fetchCredentialsMode()); | 223 new_request.setFetchCredentialsMode(request.fetchCredentialsMode()); |
| 224 new_request.setHTTPReferrer( | 224 new_request.setHTTPReferrer( |
| 225 WebString::fromUTF8(url_response->redirect_referrer), | 225 WebString::fromUTF8(url_response->redirect_referrer), |
| 226 referrer_policy_); | 226 referrer_policy_); |
| 227 | 227 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 void WebURLLoaderImpl::OnResponseBodyStreamReady(MojoResult result) { | 315 void WebURLLoaderImpl::OnResponseBodyStreamReady(MojoResult result) { |
| 316 ReadMore(); | 316 ReadMore(); |
| 317 } | 317 } |
| 318 | 318 |
| 319 void WebURLLoaderImpl::setLoadingTaskRunner( | 319 void WebURLLoaderImpl::setLoadingTaskRunner( |
| 320 blink::WebTaskRunner* web_task_runner) { | 320 blink::WebTaskRunner* web_task_runner) { |
| 321 // TODO(alexclarke): Consider hooking this up. | 321 // TODO(alexclarke): Consider hooking this up. |
| 322 } | 322 } |
| 323 | 323 |
| 324 } // namespace html_viewer | 324 } // namespace html_viewer |
| OLD | NEW |